diff --git a/.gitattributes b/.gitattributes index dbd06508a86a..628472cde462 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.json linguist-language=JSON-with-Comments +**/pnpm-lock.yaml text eol=lf diff --git a/.github/actions/cfs-npm-cache/action.yml b/.github/actions/cfs-npm-cache/action.yml deleted file mode 100644 index 8639995f54ac..000000000000 --- a/.github/actions/cfs-npm-cache/action.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Setup npm cache caching - -on: - workflow_call: - -runs: - using: composite - steps: - - uses: ./.github/actions/npm-cache-dir - with: - include-npmrc-hash: 'true' diff --git a/.github/actions/cfs-npm-install/action.yml b/.github/actions/cfs-npm-install/action.yml index b846c2958637..16b94dc92c6f 100644 --- a/.github/actions/cfs-npm-install/action.yml +++ b/.github/actions/cfs-npm-install/action.yml @@ -1,16 +1,24 @@ -# Does an npm install using our private Azure Artifacts registry which requires OIDC authentication. +# Does an pnpm install using our private Azure Artifacts registry which requires OIDC authentication. # Workflows that use this action must add the id-token: write permission. -name: npm install (CFS) +name: pnpm install (CFS) +description: Authenticate to the CFS npm registry and install the pnpm workspace. -on: - workflow_call: +inputs: + working-directory: + description: Directory in which to run pnpm install + default: '.' + required: false + skip-playwright-browser-download: + description: Skip Playwright browser downloads during dependency installation + default: '1' + required: false runs: using: composite steps: - name: Azure OIDC Login - uses: azure/login@v2 + uses: azure/login@v3 with: # These are not secret values and are safe to commit to the repository client-id: 92c669e8-02ad-4ce6-ad73-f222fc7177e2 @@ -20,37 +28,40 @@ runs: - name: Setup CFS Credentials shell: bash id: npm-auth - # The resource guid is the app id of Azure DevOps run: | - echo "token=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 | jq -r .accessToken)" >> $GITHUB_OUTPUT + token="$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 | jq -r .accessToken)" + echo "::add-mask::$token" + echo "token=$token" >> "$GITHUB_OUTPUT" - - uses: ./.github/actions/cfs-npm-authenticate - with: - working-directory: . - token: ${{ steps.npm-auth.outputs.token }} - - - uses: ./.github/actions/cfs-npm-authenticate - with: - working-directory: packages/pyright - token: ${{ steps.npm-auth.outputs.token }} - - - uses: ./.github/actions/cfs-npm-authenticate - with: - working-directory: packages/pyright-internal - token: ${{ steps.npm-auth.outputs.token }} - - - uses: ./.github/actions/cfs-npm-authenticate - with: - working-directory: packages/vscode-pyright - token: ${{ steps.npm-auth.outputs.token }} - - - uses: ./.github/actions/cfs-npm-cache + - name: Create temporary npm configuration + shell: bash + env: + CFS_TOKEN: ${{ steps.npm-auth.outputs.token }} + run: | + auth_dir="${{ runner.temp }}/cfs-npm-auth" + npmrc="$auth_dir/.npmrc" + feed_url="//devdiv.pkgs.visualstudio.com/DevDiv/_packaging/Pylance_PublicPackages" + mkdir -p "$auth_dir" + { + echo "registry=https:$feed_url/npm/registry/" + echo + echo "$feed_url/npm/registry/:username=github-actions" + echo "$feed_url/npm/registry/:_authToken=$CFS_TOKEN" + echo "$feed_url/npm/registry/:email=actions@github.com" + echo "$feed_url/npm:username=github-actions" + echo "$feed_url/npm:_authToken=$CFS_TOKEN" + echo "$feed_url/npm:email=actions@github.com" + } > "$npmrc" - - run: npm run install:all + - name: Install pnpm dependencies shell: bash working-directory: ${{ inputs.working-directory }} + env: + NPM_CONFIG_USERCONFIG: ${{ runner.temp }}/cfs-npm-auth/.npmrc + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: ${{ inputs.skip-playwright-browser-download }} + run: pnpm install --frozen-lockfile --prefer-offline - - name: Cleanup .npmrc + - name: Cleanup temporary npm configuration + if: always() shell: bash - run: rm .npmrc - working-directory: ${{ inputs.working-directory }} + run: rm -rf "${{ runner.temp }}/cfs-npm-auth" diff --git a/.github/actions/choose-npm-install/action.yml b/.github/actions/choose-npm-install/action.yml index 93e932b6febe..5382f067c9ed 100644 --- a/.github/actions/choose-npm-install/action.yml +++ b/.github/actions/choose-npm-install/action.yml @@ -2,18 +2,26 @@ # https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token # This action decides whether to use CFS based on the source of the branch in play. -name: npm install (consider using CFS) +name: pnpm install (consider using CFS) +description: Use CFS for trusted branches and the public npm registry for fork pull requests. -on: - workflow_call: +inputs: + working-directory: + description: Directory in which to run pnpm install + default: '.' + required: false runs: using: composite steps: - - name: CFS npm install + - name: CFS pnpm install if: github.event.pull_request.head.repo.fork != true uses: ./.github/actions/cfs-npm-install + with: + working-directory: ${{ inputs.working-directory }} - - name: Standard npm install + - name: Standard pnpm install if: github.event.pull_request.head.repo.fork == true uses: ./.github/actions/standard-npm-install + with: + working-directory: ${{ inputs.working-directory }} diff --git a/.github/actions/npm-cache-dir/action.yml b/.github/actions/npm-cache-dir/action.yml deleted file mode 100644 index 79d066c01789..000000000000 --- a/.github/actions/npm-cache-dir/action.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Cache npm download directory -description: Cache npm's download cache directory (npm config get cache) using actions/cache - -inputs: - cache-dependency-path: - description: Glob(s) passed to hashFiles to generate the cache key - default: '**/package-lock.json' - required: false - include-npmrc-hash: - description: Include hashFiles('**/.npmrc') in the key (useful when registry settings affect cache safety) - default: 'false' - required: false - key-prefix: - description: Prefix for the generated key - default: 'node' - required: false - -runs: - using: composite - steps: - - name: Get npm cache directory (non-Windows) - id: npm-cache-dir-bash - if: runner.os != 'Windows' - shell: bash - run: echo "dir=$(npm config get cache)" >> "$GITHUB_OUTPUT" - - - name: Get npm cache directory (Windows) - id: npm-cache-dir-pwsh - if: runner.os == 'Windows' - shell: pwsh - run: | - $dir = npm config get cache - "dir=$dir" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8 - - - name: Cache npm cache directory (with .npmrc) - if: inputs.include-npmrc-hash == 'true' - uses: actions/cache@v4 - with: - path: ${{ steps.npm-cache-dir-bash.outputs.dir || steps.npm-cache-dir-pwsh.outputs.dir }} - key: ${{ runner.os }}-${{ inputs.key-prefix }}-${{ hashFiles('**/.npmrc') }}-${{ hashFiles(inputs.cache-dependency-path) }} - restore-keys: ${{ runner.os }}-${{ inputs.key-prefix }}-${{ hashFiles('**/.npmrc') }}- - - - name: Cache npm cache directory - if: inputs.include-npmrc-hash != 'true' - uses: actions/cache@v4 - with: - path: ${{ steps.npm-cache-dir-bash.outputs.dir || steps.npm-cache-dir-pwsh.outputs.dir }} - key: ${{ runner.os }}-${{ inputs.key-prefix }}-${{ hashFiles(inputs.cache-dependency-path) }} - restore-keys: ${{ runner.os }}-${{ inputs.key-prefix }}- diff --git a/.github/actions/standard-npm-install/action.yml b/.github/actions/standard-npm-install/action.yml index c46a5ef5b831..5a008f6cfeb1 100644 --- a/.github/actions/standard-npm-install/action.yml +++ b/.github/actions/standard-npm-install/action.yml @@ -1,15 +1,20 @@ -# Standard npm install using the public npm registry. +# Standard pnpm install using the public npm registry. -name: npm install (public registry) +name: pnpm install (public registry) +description: Install the pnpm workspace from the public npm registry. -on: - workflow_call: +inputs: + working-directory: + description: Directory in which to run pnpm install + default: '.' + required: false runs: using: composite steps: - - uses: ./.github/actions/npm-cache-dir - - - name: Standard npm install + - name: Standard pnpm install shell: bash - run: npm run install:all + working-directory: ${{ inputs.working-directory }} + env: + NPM_CONFIG_REGISTRY: https://registry.npmjs.org/ + run: pnpm run install:all diff --git a/.github/agents/typeshed-update-agent.md b/.github/agents/typeshed-update-agent.md index 806a8fa3ff6f..4842deac7457 100644 --- a/.github/agents/typeshed-update-agent.md +++ b/.github/agents/typeshed-update-agent.md @@ -107,11 +107,11 @@ Track changes including: Run these focused tests before full-suite reruns when related files change. - constructor callable and default constructor behavior: - - `cd packages/pyright-internal && npm run test:norebuild -- typeEvaluator6.test.ts -t "ConstructorCallable1|ConstructorCallable2|Constructor28" --runInBand` + - `cd packages/pyright-internal && pnpm run test:norebuild -- typeEvaluator6.test.ts -t "ConstructorCallable1|ConstructorCallable2|Constructor28" --runInBand` - contextmanager / generator behavior: - - `cd packages/pyright-internal && npm run test:norebuild -- typeEvaluator2.test.ts -t Solver7 --runInBand` + - `cd packages/pyright-internal && pnpm run test:norebuild -- typeEvaluator2.test.ts -t Solver7 --runInBand` - positional-only parameter behavior: - - `cd packages/pyright-internal && npm run test:norebuild -- typeEvaluator1.test.ts -t Call3 --runInBand` + - `cd packages/pyright-internal && pnpm run test:norebuild -- typeEvaluator1.test.ts -t Call3 --runInBand` --- diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index d54579c21772..4ff164c91842 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -6,43 +6,43 @@ Pyright is a static type checker for Python, written in TypeScript. It ships as ```bash # Install all packages (from repo root) -npm install +pnpm install # Build the core library -cd packages/pyright-internal && npm run build +cd packages/pyright-internal && pnpm run build # Run all tests (builds test server first) -cd packages/pyright-internal && npm test +cd packages/pyright-internal && pnpm test # Run all tests without rebuilding the test server (faster iteration) -cd packages/pyright-internal && npm run test:norebuild +cd packages/pyright-internal && pnpm run test:norebuild # Run a single test file -cd packages/pyright-internal && npx jest typeEvaluator1.test --forceExit +cd packages/pyright-internal && pnpm exec jest typeEvaluator1.test --forceExit # Run a single test by name -cd packages/pyright-internal && npx jest -t "Generic1" --forceExit +cd packages/pyright-internal && pnpm exec jest -t "Generic1" --forceExit # Build the CLI (webpack bundle) -npm run build:cli:dev +pnpm run build:cli:dev # Build the VS Code extension (webpack bundle) -npm run build:extension:dev +pnpm run build:extension:dev ``` ### Linting ```bash # Run all checks (syncpack + eslint + prettier) -npm run check +pnpm run check # Individual checks -npm run check:eslint -npm run check:prettier +pnpm run check:eslint +pnpm run check:prettier # Auto-fix -npm run fix:eslint -npm run fix:prettier +pnpm run fix:eslint +pnpm run fix:prettier ``` ## Architecture diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/.prettierignore b/.prettierignore index 3e04609c87ec..b45dab8ff6fd 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ **/package-lock.json +**/pnpm-lock.yaml **/dist/** **/out/** **/typeshed-fallback/** diff --git a/.rpg/last_parsed_sha.txt b/.rpg/last_parsed_sha.txt index f288674919b7..ab69eb8ebc01 100644 --- a/.rpg/last_parsed_sha.txt +++ b/.rpg/last_parsed_sha.txt @@ -1 +1 @@ -784698179a5627072df39bbe0fcadb55bb7dd408 +af737e1f2106f0fcd1e4c921a347f7873066cad4 diff --git a/.rpg/rpg_encoder.json b/.rpg/rpg_encoder.json index 328ec8800e9e..01de1a0f0298 100644 --- a/.rpg/rpg_encoder.json +++ b/.rpg/rpg_encoder.json @@ -1,8 +1,8 @@ { "schema_version": 1, "repo_name": "pyright-whole-repo", - "repo_sha": "784698179a5627072df39bbe0fcadb55bb7dd408", - "generated_at": "2026-06-10T00:19:36.841Z", + "repo_sha": "af737e1f2106f0fcd1e4c921a347f7873066cad4", + "generated_at": "2026-06-30T03:45:39.077Z", "encoder": { "name": "pyright-rpg-ts-encoder", "version": "0.1.0", @@ -301,34 +301,34 @@ "description": "Exports types and analyzeProgram to run a Program analysis, gather diagnostics, and invoke a completion callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts::nullCallback", - "name": "nullCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analysis.ts/nullCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts::analyzeProgram", + "name": "analyzeProgram", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analysis.ts/analyzeProgram", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts", - "func_name": "nullCallback", + "func_name": "analyzeProgram", "line_range": [ - 19, - 21 + 42, + 105 ] }, - "description": "provide empty analysis callback" + "description": "analyze program within time budget; collect diagnostics using config options; report diagnostics through completion callback; report fatal errors through callback; log analysis errors to console; abort on cancellation request; return whether more analysis remains" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts::analyzeProgram", - "name": "analyzeProgram", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analysis.ts/analyzeProgram", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts::nullCallback", + "name": "nullCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analysis.ts/nullCallback", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts", - "func_name": "analyzeProgram", + "func_name": "nullCallback", "line_range": [ - 42, - 105 + 19, + 21 ] }, - "description": "analyze program within time budget; collect diagnostics using config options; report diagnostics through completion callback; report fatal errors through callback; log analysis errors to console; abort on cancellation request; return whether more analysis remains" + "description": "provide empty analysis callback" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts::__file__", @@ -391,64 +391,79 @@ "description": "remove analysis metadata from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getImportInfo", - "name": "getImportInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getImportInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getAfterFlowNode", + "name": "getAfterFlowNode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getAfterFlowNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getImportInfo", + "func_name": "getAfterFlowNode", "line_range": [ - 114, - 117 + 154, + 157 ] }, - "description": "retrieve import info from node" + "description": "retrieve after flow node from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setImportInfo", - "name": "setImportInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setImportInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getAnalyzerInfo", + "name": "getAnalyzerInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getAnalyzerInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setImportInfo", + "func_name": "getAnalyzerInfo", "line_range": [ - 119, - 122 + 223, + 225 ] }, - "description": "store import info on node" + "description": "retrieve analyzer info from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getScope", - "name": "getScope", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getAnalyzerInfoForWrite", + "name": "getAnalyzerInfoForWrite", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getAnalyzerInfoForWrite", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getScope", + "func_name": "getAnalyzerInfoForWrite", "line_range": [ - 124, - 127 + 227, + 233 ] }, - "description": "retrieve scope from node" + "description": "ensure analyzer info exists for write operations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setScope", - "name": "setScope", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getCodeFlowComplexity", + "name": "getCodeFlowComplexity", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getCodeFlowComplexity", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setScope", + "func_name": "getCodeFlowComplexity", "line_range": [ - 129, - 132 + 187, + 190 ] }, - "description": "store scope on node" + "description": "retrieve code flow complexity from execution scope" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getCodeFlowExpressions", + "name": "getCodeFlowExpressions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getCodeFlowExpressions", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", + "func_name": "getCodeFlowExpressions", + "line_range": [ + 177, + 180 + ] + }, + "description": "retrieve code flow expressions from execution scope" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getDeclaration", @@ -466,124 +481,124 @@ "description": "retrieve declaration from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setDeclaration", - "name": "setDeclaration", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getDunderAllInfo", + "name": "getDunderAllInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getDunderAllInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setDeclaration", + "func_name": "getDunderAllInfo", "line_range": [ - 139, - 142 + 197, + 200 ] }, - "description": "store declaration on node" + "description": "retrieve module export list info" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getFlowNode", - "name": "getFlowNode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getFileInfo", + "name": "getFileInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getFileInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getFlowNode", + "func_name": "getFileInfo", "line_range": [ - 144, - 147 + 164, + 170 ] }, - "description": "retrieve flow node from node" + "description": "retrieve module file analysis info" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setFlowNode", - "name": "setFlowNode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getFlowNode", + "name": "getFlowNode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getFlowNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setFlowNode", + "func_name": "getFlowNode", "line_range": [ - 149, - 152 + 144, + 147 ] }, - "description": "store flow node on node" + "description": "retrieve flow node from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getAfterFlowNode", - "name": "getAfterFlowNode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getAfterFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getImportInfo", + "name": "getImportInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getImportInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getAfterFlowNode", + "func_name": "getImportInfo", "line_range": [ - 154, - 157 + 114, + 117 ] }, - "description": "retrieve after flow node from node" + "description": "retrieve import info from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setAfterFlowNode", - "name": "setAfterFlowNode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setAfterFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getScope", + "name": "getScope", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getScope", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setAfterFlowNode", + "func_name": "getScope", "line_range": [ - 159, - 162 + 124, + 127 ] }, - "description": "store after flow node on node" + "description": "retrieve scope from node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getFileInfo", - "name": "getFileInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getFileInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::isCodeUnreachable", + "name": "isCodeUnreachable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/isCodeUnreachable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getFileInfo", + "func_name": "isCodeUnreachable", "line_range": [ - 164, - 170 + 207, + 221 ] }, - "description": "retrieve module file analysis info" + "description": "determine whether code is unreachable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setFileInfo", - "name": "setFileInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setFileInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setAfterFlowNode", + "name": "setAfterFlowNode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setAfterFlowNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setFileInfo", + "func_name": "setAfterFlowNode", "line_range": [ - 172, - 175 + 159, + 162 ] }, - "description": "store module file analysis info" + "description": "store after flow node on node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getCodeFlowExpressions", - "name": "getCodeFlowExpressions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getCodeFlowExpressions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setCodeFlowComplexity", + "name": "setCodeFlowComplexity", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setCodeFlowComplexity", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getCodeFlowExpressions", + "func_name": "setCodeFlowComplexity", "line_range": [ - 177, - 180 + 192, + 195 ] }, - "description": "retrieve code flow expressions from execution scope" + "description": "store code flow complexity on execution scope" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setCodeFlowExpressions", @@ -601,109 +616,94 @@ "description": "store code flow expressions in execution scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getCodeFlowComplexity", - "name": "getCodeFlowComplexity", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getCodeFlowComplexity", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getCodeFlowComplexity", - "line_range": [ - 187, - 190 - ] - }, - "description": "retrieve code flow complexity from execution scope" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setCodeFlowComplexity", - "name": "setCodeFlowComplexity", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setCodeFlowComplexity", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setDeclaration", + "name": "setDeclaration", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setCodeFlowComplexity", + "func_name": "setDeclaration", "line_range": [ - 192, - 195 + 139, + 142 ] }, - "description": "store code flow complexity on execution scope" + "description": "store declaration on node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getDunderAllInfo", - "name": "getDunderAllInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getDunderAllInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setDunderAllInfo", + "name": "setDunderAllInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setDunderAllInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getDunderAllInfo", + "func_name": "setDunderAllInfo", "line_range": [ - 197, - 200 + 202, + 205 ] }, - "description": "retrieve module export list info" + "description": "store module export list info" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setDunderAllInfo", - "name": "setDunderAllInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setDunderAllInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setFileInfo", + "name": "setFileInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setFileInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "setDunderAllInfo", + "func_name": "setFileInfo", "line_range": [ - 202, - 205 + 172, + 175 ] }, - "description": "store module export list info" + "description": "store module file analysis info" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::isCodeUnreachable", - "name": "isCodeUnreachable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/isCodeUnreachable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setFlowNode", + "name": "setFlowNode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setFlowNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "isCodeUnreachable", + "func_name": "setFlowNode", "line_range": [ - 207, - 221 + 149, + 152 ] }, - "description": "determine whether code is unreachable" + "description": "store flow node on node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getAnalyzerInfo", - "name": "getAnalyzerInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getAnalyzerInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setImportInfo", + "name": "setImportInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setImportInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getAnalyzerInfo", + "func_name": "setImportInfo", "line_range": [ - 223, - 225 + 119, + 122 ] }, - "description": "retrieve analyzer info from node" + "description": "store import info on node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::getAnalyzerInfoForWrite", - "name": "getAnalyzerInfoForWrite", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/getAnalyzerInfoForWrite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::setScope", + "name": "setScope", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/analyzerNodeInfo.ts/setScope", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts", - "func_name": "getAnalyzerInfoForWrite", + "func_name": "setScope", "line_range": [ - 227, - 233 + 129, + 132 ] }, - "description": "ensure analyzer info exists for write operations" + "description": "store scope on node" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::__file__", @@ -736,100 +736,132 @@ "description": "initialize program and analysis components" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.hasSourceFile", - "name": "BackgroundAnalysisProgram.hasSourceFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.hasSourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram._ensurePartialStubPackages", + "name": "BackgroundAnalysisProgram._ensurePartialStubPackages", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram._ensurePartialStubPackages", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "hasSourceFile", + "func_name": "_ensurePartialStubPackages", "line_range": [ - 85, - 87 + 277, + 280 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "check source file presence" + "description": "ensure partial stub packages for environment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setConfigOptions", - "name": "BackgroundAnalysisProgram.setConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles", + "name": "BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setConfigOptions", + "func_name": "_reportDiagnosticsForRemovedFiles", "line_range": [ - 89, - 93 + 282, + 302 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "set configuration options" + "description": "report diagnostics for removed files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setImportResolver", - "name": "BackgroundAnalysisProgram.setImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.addInterimFile", + "name": "BackgroundAnalysisProgram.addInterimFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.addInterimFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setImportResolver", + "func_name": "addInterimFile", "line_range": [ - 95, - 101 + 140, + 143 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "set import resolver; ensure partial stub packages" + "description": "add interim file to program" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setTrackedFiles", - "name": "BackgroundAnalysisProgram.setTrackedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setTrackedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.analyzeFile", + "name": "BackgroundAnalysisProgram.analyzeFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.analyzeFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setTrackedFiles", + "func_name": "analyzeFile", "line_range": [ - 103, - 107 + 176, + 182 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "set tracked files; report diagnostics for removed files" + "description": "analyze specific file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setAllowedThirdPartyImports", - "name": "BackgroundAnalysisProgram.setAllowedThirdPartyImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setAllowedThirdPartyImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics", + "name": "BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setAllowedThirdPartyImports", + "func_name": "analyzeFileAndGetDiagnostics", "line_range": [ - 109, - 112 + 184, + 190 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "set allowed third party imports" + "description": "analyze file and get diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setFileOpened", - "name": "BackgroundAnalysisProgram.setFileOpened", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setFileOpened", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.dispose", + "name": "BackgroundAnalysisProgram.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.dispose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setFileOpened", + "func_name": "dispose", "line_range": [ - 114, - 117 + 251, + 260 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "register opened file and contents" + "description": "dispose program resources and shutdown analysis" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.enterEditMode", + "name": "BackgroundAnalysisProgram.enterEditMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.enterEditMode", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", + "func_name": "enterEditMode", + "line_range": [ + 262, + 269 + ], + "class_name": "BackgroundAnalysisProgram" + }, + "description": "suspend background analysis; enter program edit mode" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.exitEditMode", + "name": "BackgroundAnalysisProgram.exitEditMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.exitEditMode", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", + "func_name": "exitEditMode", + "line_range": [ + 271, + 275 + ], + "class_name": "BackgroundAnalysisProgram" + }, + "description": "restore background analysis and exit edit mode" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.getChainedUri", @@ -848,68 +880,68 @@ "description": "retrieve chained uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.updateChainedUri", - "name": "BackgroundAnalysisProgram.updateChainedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.updateChainedUri", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.getDiagnosticsForRange", + "name": "BackgroundAnalysisProgram.getDiagnosticsForRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.getDiagnosticsForRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "updateChainedUri", + "func_name": "getDiagnosticsForRange", "line_range": [ - 123, - 126 + 196, + 202 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "update chained uri mapping" + "description": "get diagnostics for file range" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.updateOpenFileContents", - "name": "BackgroundAnalysisProgram.updateOpenFileContents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.updateOpenFileContents", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.hasSourceFile", + "name": "BackgroundAnalysisProgram.hasSourceFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.hasSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "updateOpenFileContents", + "func_name": "hasSourceFile", "line_range": [ - 128, - 132 + 85, + 87 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "update open file contents; mark file dirty for reanalysis" + "description": "check source file presence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setFileClosed", - "name": "BackgroundAnalysisProgram.setFileClosed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setFileClosed", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.invalidateAndForceReanalysis", + "name": "BackgroundAnalysisProgram.invalidateAndForceReanalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.invalidateAndForceReanalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setFileClosed", + "func_name": "invalidateAndForceReanalysis", "line_range": [ - 134, - 138 + 224, + 245 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "record file closed state; report diagnostics for removed files" + "description": "invalidate caches and force reanalysis; mark changed or error files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.addInterimFile", - "name": "BackgroundAnalysisProgram.addInterimFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.addInterimFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.libraryUpdated", + "name": "BackgroundAnalysisProgram.libraryUpdated", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.libraryUpdated", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "addInterimFile", + "func_name": "libraryUpdated", "line_range": [ - 140, - 143 + 192, + 194 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "add interim file to program" + "description": "report library update status" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.markAllFilesDirty", @@ -944,228 +976,196 @@ "description": "mark specific files dirty for reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setCompletionCallback", - "name": "BackgroundAnalysisProgram.setCompletionCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setCompletionCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.restart", + "name": "BackgroundAnalysisProgram.restart", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.restart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "setCompletionCallback", + "func_name": "restart", "line_range": [ - 155, - 158 + 247, + 249 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "register analysis completion callback" + "description": "restart background analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.startAnalysis", - "name": "BackgroundAnalysisProgram.startAnalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.startAnalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setAllowedThirdPartyImports", + "name": "BackgroundAnalysisProgram.setAllowedThirdPartyImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setAllowedThirdPartyImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "startAnalysis", + "func_name": "setAllowedThirdPartyImports", "line_range": [ - 160, - 174 + 109, + 112 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "start analysis process" + "description": "set allowed third party imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.analyzeFile", - "name": "BackgroundAnalysisProgram.analyzeFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.analyzeFile", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "analyzeFile", - "line_range": [ - 176, - 182 - ], - "class_name": "BackgroundAnalysisProgram" - }, - "description": "analyze specific file" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics", - "name": "BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "analyzeFileAndGetDiagnostics", - "line_range": [ - 184, - 190 - ], - "class_name": "BackgroundAnalysisProgram" - }, - "description": "analyze file and get diagnostics" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.libraryUpdated", - "name": "BackgroundAnalysisProgram.libraryUpdated", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.libraryUpdated", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setCompletionCallback", + "name": "BackgroundAnalysisProgram.setCompletionCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setCompletionCallback", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "libraryUpdated", + "func_name": "setCompletionCallback", "line_range": [ - 192, - 194 + 155, + 158 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "report library update status" + "description": "register analysis completion callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.getDiagnosticsForRange", - "name": "BackgroundAnalysisProgram.getDiagnosticsForRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.getDiagnosticsForRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setConfigOptions", + "name": "BackgroundAnalysisProgram.setConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "getDiagnosticsForRange", + "func_name": "setConfigOptions", "line_range": [ - 196, - 202 + 89, + 93 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "get diagnostics for file range" + "description": "set configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.writeTypeStub", - "name": "BackgroundAnalysisProgram.writeTypeStub", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.writeTypeStub", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setFileClosed", + "name": "BackgroundAnalysisProgram.setFileClosed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setFileClosed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "writeTypeStub", + "func_name": "setFileClosed", "line_range": [ - 204, - 222 + 134, + 138 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "write type stub file" + "description": "record file closed state; report diagnostics for removed files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.invalidateAndForceReanalysis", - "name": "BackgroundAnalysisProgram.invalidateAndForceReanalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.invalidateAndForceReanalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setFileOpened", + "name": "BackgroundAnalysisProgram.setFileOpened", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setFileOpened", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "invalidateAndForceReanalysis", + "func_name": "setFileOpened", "line_range": [ - 224, - 245 + 114, + 117 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "invalidate caches and force reanalysis; mark changed or error files dirty" + "description": "register opened file and contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.restart", - "name": "BackgroundAnalysisProgram.restart", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.restart", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setImportResolver", + "name": "BackgroundAnalysisProgram.setImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "restart", + "func_name": "setImportResolver", "line_range": [ - 247, - 249 + 95, + 101 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "restart background analysis" + "description": "set import resolver; ensure partial stub packages" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.dispose", - "name": "BackgroundAnalysisProgram.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.dispose", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.setTrackedFiles", + "name": "BackgroundAnalysisProgram.setTrackedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.setTrackedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "dispose", + "func_name": "setTrackedFiles", "line_range": [ - 251, - 260 + 103, + 107 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "dispose program resources and shutdown analysis" + "description": "set tracked files; report diagnostics for removed files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.enterEditMode", - "name": "BackgroundAnalysisProgram.enterEditMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.enterEditMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.startAnalysis", + "name": "BackgroundAnalysisProgram.startAnalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.startAnalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "enterEditMode", + "func_name": "startAnalysis", "line_range": [ - 262, - 269 + 160, + 174 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "suspend background analysis; enter program edit mode" + "description": "start analysis process" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.exitEditMode", - "name": "BackgroundAnalysisProgram.exitEditMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.exitEditMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.updateChainedUri", + "name": "BackgroundAnalysisProgram.updateChainedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.updateChainedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "exitEditMode", + "func_name": "updateChainedUri", "line_range": [ - 271, - 275 + 123, + 126 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "restore background analysis and exit edit mode" + "description": "update chained uri mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram._ensurePartialStubPackages", - "name": "BackgroundAnalysisProgram._ensurePartialStubPackages", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram._ensurePartialStubPackages", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.updateOpenFileContents", + "name": "BackgroundAnalysisProgram.updateOpenFileContents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.updateOpenFileContents", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "_ensurePartialStubPackages", + "func_name": "updateOpenFileContents", "line_range": [ - 277, - 280 + 128, + 132 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "ensure partial stub packages for environment" + "description": "update open file contents; mark file dirty for reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles", - "name": "BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts::BackgroundAnalysisProgram.writeTypeStub", + "name": "BackgroundAnalysisProgram.writeTypeStub", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/backgroundAnalysisProgram.ts/BackgroundAnalysisProgram.writeTypeStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts", - "func_name": "_reportDiagnosticsForRemovedFiles", + "func_name": "writeTypeStub", "line_range": [ - 282, - 302 + 204, + 222 ], "class_name": "BackgroundAnalysisProgram" }, - "description": "report diagnostics for removed files" + "description": "write type stub file" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::__file__", @@ -1198,756 +1198,740 @@ "description": "initialize binder internal state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.bindModule", - "name": "Binder.bindModule", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.bindModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addAntecedent", + "name": "Binder._addAntecedent", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addAntecedent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "bindModule", + "func_name": "_addAntecedent", "line_range": [ - 291, - 395 + 3632, + 3641 ], "class_name": "Binder" }, - "description": "bind module level symbols; create module start flow node; finalize module export visibility" + "description": "add antecedent flow condition" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitModule", - "name": "Binder.visitModule", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addDiagnostic", + "name": "Binder._addDiagnostic", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addDiagnostic", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitModule", + "func_name": "_addDiagnostic", "line_range": [ - 397, - 402 + 4630, + 4653 ], "class_name": "Binder" }, - "description": "establish module scope and bindings" + "description": "add diagnostic for file range" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitSuite", - "name": "Binder.visitSuite", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitSuite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addExceptTargets", + "name": "Binder._addExceptTargets", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addExceptTargets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitSuite", + "func_name": "_addExceptTargets", "line_range": [ - 404, - 407 + 3591, + 3599 ], "class_name": "Binder" }, - "description": "bind suite statements and scope" + "description": "add except targets to stack" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitModuleName", - "name": "Binder.visitModuleName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addImplicitFromImport", + "name": "Binder._addImplicitFromImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addImplicitFromImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitModuleName", + "func_name": "_addImplicitFromImport", "line_range": [ - 409, - 471 + 2730, + 2738 ], "class_name": "Binder" }, - "description": "resolve module name references" + "description": "register implicit from import loader action" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitClass", - "name": "Binder.visitClass", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addImplicitImportsToLoaderActions", + "name": "Binder._addImplicitImportsToLoaderActions", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addImplicitImportsToLoaderActions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitClass", + "func_name": "_addImplicitImportsToLoaderActions", "line_range": [ - 473, - 529 + 4355, + 4374 ], "class_name": "Binder" }, - "description": "bind class declaration and members; process base classes and decorators" + "description": "add implicit imports to loader actions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitFunction", - "name": "Binder.visitFunction", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addImplicitSymbolToCurrentScope", + "name": "Binder._addImplicitSymbolToCurrentScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addImplicitSymbolToCurrentScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitFunction", + "func_name": "_addImplicitSymbolToCurrentScope", "line_range": [ - 531, - 661 + 3730, + 3749 ], "class_name": "Binder" }, - "description": "bind function declaration and signature; track function return and yield statements" + "description": "add implicit symbol to current scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitLambda", - "name": "Binder.visitLambda", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitLambda", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addInferredTypeAssignmentForVariable", + "name": "Binder._addInferredTypeAssignmentForVariable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addInferredTypeAssignmentForVariable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitLambda", + "func_name": "_addInferredTypeAssignmentForVariable", "line_range": [ - 663, - 720 + 3860, + 3961 ], "class_name": "Binder" }, - "description": "bind lambda expression and scope" + "description": "add inferred type assignment for variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitCall", - "name": "Binder.visitCall", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitCall", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addPatternCaptureTarget", + "name": "Binder._addPatternCaptureTarget", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addPatternCaptureTarget", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitCall", + "func_name": "_addPatternCaptureTarget", "line_range": [ - 722, - 837 + 2656, + 2684 ], "class_name": "Binder" }, - "description": "analyze call expression and arguments" + "description": "add pattern capture target symbol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTypeParameterList", - "name": "Binder.visitTypeParameterList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTypeParameterList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addSlotsToCurrentScope", + "name": "Binder._addSlotsToCurrentScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addSlotsToCurrentScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitTypeParameterList", + "func_name": "_addSlotsToCurrentScope", "line_range": [ - 839, - 884 + 2581, + 2628 ], "class_name": "Binder" }, - "description": "bind type parameter list" + "description": "add declared slot names to scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTypeAlias", - "name": "Binder.visitTypeAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addSymbolToCurrentScope", + "name": "Binder._addSymbolToCurrentScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addSymbolToCurrentScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitTypeAlias", + "func_name": "_addSymbolToCurrentScope", "line_range": [ - 886, - 923 + 3752, + 3776 ], "class_name": "Binder" }, - "description": "bind type alias declaration" + "description": "add symbol to current scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAssignment", - "name": "Binder.visitAssignment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addSyntaxError", + "name": "Binder._addSyntaxError", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addSyntaxError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitAssignment", + "func_name": "_addSyntaxError", "line_range": [ - 925, - 1092 + 4655, + 4657 ], "class_name": "Binder" }, - "description": "bind assignment targets and values" + "description": "report syntax error diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAssignmentExpression", - "name": "Binder.visitAssignmentExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAssignmentExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addTypeDeclarationForVariable", + "name": "Binder._addTypeDeclarationForVariable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addTypeDeclarationForVariable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitAssignmentExpression", + "func_name": "_addTypeDeclarationForVariable", "line_range": [ - 1094, - 1136 + 3968, + 4118 ], "class_name": "Binder" }, - "description": "bind assignment expression target and value" + "description": "add type declaration for variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAugmentedAssignment", - "name": "Binder.visitAugmentedAssignment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAugmentedAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addTypingImportAliasesFromBuiltinsScope", + "name": "Binder._addTypingImportAliasesFromBuiltinsScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addTypingImportAliasesFromBuiltinsScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitAugmentedAssignment", + "func_name": "_addTypingImportAliasesFromBuiltinsScope", "line_range": [ - 1138, - 1199 + 2552, + 2564 ], "class_name": "Binder" }, - "description": "bind augmented assignment target and value" + "description": "collect type helper import aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitDel", - "name": "Binder.visitDel", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitDel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addWildcardImportedModuleAlias", + "name": "Binder._addWildcardImportedModuleAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addWildcardImportedModuleAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitDel", + "func_name": "_addWildcardImportedModuleAlias", "line_range": [ - 1201, - 1209 + 4376, + 4395 ], "class_name": "Binder" }, - "description": "handle del statement target removal" + "description": "add wildcard imported module alias" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTypeAnnotation", - "name": "Binder.visitTypeAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindConditional", + "name": "Binder._bindConditional", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindConditional", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitTypeAnnotation", + "func_name": "_bindConditional", "line_range": [ - 1211, - 1250 + 3094, + 3109 ], "class_name": "Binder" }, - "description": "bind type annotation to target" + "description": "bind conditional expression and branches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitFor", - "name": "Binder.visitFor", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitFor", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindDeferred", + "name": "Binder._bindDeferred", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindDeferred", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitFor", + "func_name": "_bindDeferred", "line_range": [ - 1252, - 1344 + 4585, + 4595 ], "class_name": "Binder" }, - "description": "bind for loop targets and iterables" + "description": "execute deferred binding tasks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitContinue", - "name": "Binder.visitContinue", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitContinue", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindLoopStatement", + "name": "Binder._bindLoopStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindLoopStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitContinue", + "func_name": "_bindLoopStatement", "line_range": [ - 1346, - 1354 + 3619, + 3630 ], "class_name": "Binder" }, - "description": "mark continue flow target" + "description": "bind loop statement control flow" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitBreak", - "name": "Binder.visitBreak", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitBreak", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindNameToScope", + "name": "Binder._bindNameToScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindNameToScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitBreak", + "func_name": "_bindNameToScope", "line_range": [ - 1356, - 1364 + 3643, + 3645 ], "class_name": "Binder" }, - "description": "mark break flow target" + "description": "bind name to current scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitReturn", - "name": "Binder.visitReturn", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitReturn", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindNameValueToScope", + "name": "Binder._bindNameValueToScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindNameValueToScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitReturn", + "func_name": "_bindNameValueToScope", "line_range": [ - 1366, - 1388 + 3647, + 3695 ], "class_name": "Binder" }, - "description": "bind return statements to function" + "description": "bind name to value in scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitYield", - "name": "Binder.visitYield", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitYield", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindNeverCondition", + "name": "Binder._bindNeverCondition", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindNeverCondition", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitYield", + "func_name": "_bindNeverCondition", "line_range": [ - 1390, - 1397 + 3031, + 3092 ], "class_name": "Binder" }, - "description": "bind yield statements and mark generator" + "description": "bind never condition for flow analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitYieldFrom", - "name": "Binder.visitYieldFrom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitYieldFrom", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindPossibleTupleNamedTarget", + "name": "Binder._bindPossibleTupleNamedTarget", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindPossibleTupleNamedTarget", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitYieldFrom", + "func_name": "_bindPossibleTupleNamedTarget", "line_range": [ - 1399, - 1406 + 3697, + 3728 ], "class_name": "Binder" }, - "description": "bind yield from expression" + "description": "bind tuple destructuring assignment targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitMemberAccess", - "name": "Binder.visitMemberAccess", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitMemberAccess", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindYield", + "name": "Binder._bindYield", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindYield", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitMemberAccess", + "func_name": "_bindYield", "line_range": [ - 1408, - 1412 + 4597, + 4623 ], "class_name": "Binder" }, - "description": "resolve member access references" + "description": "bind yield node and validate usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitName", - "name": "Binder.visitName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._cloneModuleLoaderActions", + "name": "Binder._cloneModuleLoaderActions", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._cloneModuleLoaderActions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitName", + "func_name": "_cloneModuleLoaderActions", "line_range": [ - 1414, - 1417 + 4451, + 4469 ], "class_name": "Binder" }, - "description": "resolve identifier binding or reference" + "description": "clone module loader actions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitIndex", - "name": "Binder.visitIndex", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitIndex", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._cloneMultipartModuleAliasDeclaration", + "name": "Binder._cloneMultipartModuleAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._cloneMultipartModuleAliasDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitIndex", + "func_name": "_cloneMultipartModuleAliasDeclaration", "line_range": [ - 1419, - 1437 + 4422, + 4449 ], "class_name": "Binder" }, - "description": "process index and slice expressions" + "description": "clone multipart module alias declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitIf", - "name": "Binder.visitIf", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitIf", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createAliasDeclarationForMultipartImportName", + "name": "Binder._createAliasDeclarationForMultipartImportName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createAliasDeclarationForMultipartImportName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitIf", - "line_range": [ - 1439, - 1481 - ], - "class_name": "Binder" - }, - "description": "bind if statement branches and flow" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitWhile", - "name": "Binder.visitWhile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitWhile", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitWhile", + "func_name": "_createAliasDeclarationForMultipartImportName", "line_range": [ - 1483, - 1520 + 2740, + 2908 ], "class_name": "Binder" }, - "description": "bind while loop branches and flow" + "description": "create alias declaration for multipart import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAssert", - "name": "Binder.visitAssert", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAssert", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createAssignmentTargetFlowNodes", + "name": "Binder._createAssignmentTargetFlowNodes", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createAssignmentTargetFlowNodes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitAssert", + "func_name": "_createAssignmentTargetFlowNodes", "line_range": [ - 1522, - 1535 + 3424, + 3479 ], "class_name": "Binder" }, - "description": "process assert statement conditions" + "description": "create assignment target flow nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitExcept", - "name": "Binder.visitExcept", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitExcept", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createBranchLabel", + "name": "Binder._createBranchLabel", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createBranchLabel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitExcept", + "func_name": "_createBranchLabel", "line_range": [ - 1537, - 1575 + 2954, + 2963 ], "class_name": "Binder" }, - "description": "bind except clause exception targets" + "description": "create branch flow label" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitRaise", - "name": "Binder.visitRaise", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitRaise", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createCallFlowNode", + "name": "Binder._createCallFlowNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createCallFlowNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitRaise", + "func_name": "_createCallFlowNode", "line_range": [ - 1577, - 1602 + 3481, + 3494 ], "class_name": "Binder" }, - "description": "handle raise statement exception expression" + "description": "create call flow node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTry", - "name": "Binder.visitTry", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTry", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createCellChainModuleLevelLookup", + "name": "Binder._createCellChainModuleLevelLookup", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createCellChainModuleLevelLookup", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitTry", + "func_name": "_createCellChainModuleLevelLookup", "line_range": [ - 1604, - 1736 + 3811, + 3858 ], "class_name": "Binder" }, - "description": "bind try statement handlers and finally" + "description": "create cell chain module level lookup" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAwait", - "name": "Binder.visitAwait", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAwait", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createContextManagerLabel", + "name": "Binder._createContextManagerLabel", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createContextManagerLabel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitAwait", + "func_name": "_createContextManagerLabel", "line_range": [ - 1738, - 1762 + 2980, + 2995 ], "class_name": "Binder" }, - "description": "bind await expression and operand" + "description": "create context manager flow label" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitGlobal", - "name": "Binder.visitGlobal", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitGlobal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowAssignment", + "name": "Binder._createFlowAssignment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowAssignment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitGlobal", + "func_name": "_createFlowAssignment", "line_range": [ - 1764, - 1791 + 3508, + 3549 ], "class_name": "Binder" }, - "description": "process global declarations in scope" + "description": "create flow assignment node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitNonlocal", - "name": "Binder.visitNonlocal", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitNonlocal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowConditional", + "name": "Binder._createFlowConditional", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowConditional", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitNonlocal", + "func_name": "_createFlowConditional", "line_range": [ - 1793, - 1823 + 3131, + 3177 ], "class_name": "Binder" }, - "description": "bind nonlocal declarations to outer scope" + "description": "create flow nodes for conditional" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitImportAs", - "name": "Binder.visitImportAs", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitImportAs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowExhaustedMatch", + "name": "Binder._createFlowExhaustedMatch", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowExhaustedMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitImportAs", + "func_name": "_createFlowExhaustedMatch", "line_range": [ - 1825, - 1880 + 3568, + 3582 ], "class_name": "Binder" }, - "description": "bind import as alias declarations" + "description": "create exhausted match flow node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitImportFrom", - "name": "Binder.visitImportFrom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitImportFrom", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowNarrowForPattern", + "name": "Binder._createFlowNarrowForPattern", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowNarrowForPattern", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitImportFrom", + "func_name": "_createFlowNarrowForPattern", "line_range": [ - 1882, - 2151 + 2968, + 2978 ], "class_name": "Binder" }, - "description": "bind from import statements and aliases; handle wildcard imports and loader actions" + "description": "create flow narrow node for pattern" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitWith", - "name": "Binder.visitWith", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitWith", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowWildcardImport", + "name": "Binder._createFlowWildcardImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowWildcardImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitWith", + "func_name": "_createFlowWildcardImport", "line_range": [ - 2153, - 2231 + 3551, + 3566 ], "class_name": "Binder" }, - "description": "bind with statement context managers and targets" + "description": "create wildcard import flow node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTernary", - "name": "Binder.visitTernary", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTernary", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createLoopLabel", + "name": "Binder._createLoopLabel", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createLoopLabel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitTernary", + "func_name": "_createLoopLabel", "line_range": [ - 2233, - 2257 + 2997, + 3006 ], "class_name": "Binder" }, - "description": "analyze ternary conditional expression" + "description": "create loop flow label" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitUnaryOperation", - "name": "Binder.visitUnaryOperation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitUnaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createNewScope", + "name": "Binder._createNewScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createNewScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitUnaryOperation", + "func_name": "_createNewScope", "line_range": [ - 2259, - 2274 + 3778, + 3804 ], "class_name": "Binder" }, - "description": "analyze unary operation operand" + "description": "create new scope and enter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitBinaryOperation", - "name": "Binder.visitBinaryOperation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitBinaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createStartFlowNode", + "name": "Binder._createStartFlowNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createStartFlowNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitBinaryOperation", + "func_name": "_createStartFlowNode", "line_range": [ - 2276, - 2309 + 2946, + 2952 ], "class_name": "Binder" }, - "description": "analyze binary operation operands and operator" + "description": "create start flow node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitComprehension", - "name": "Binder.visitComprehension", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitComprehension", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createVariableAnnotationFlowNode", + "name": "Binder._createVariableAnnotationFlowNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createVariableAnnotationFlowNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitComprehension", + "func_name": "_createVariableAnnotationFlowNode", "line_range": [ - 2311, - 2386 + 3496, + 3506 ], "class_name": "Binder" }, - "description": "bind comprehension generators and targets" + "description": "create variable annotation flow node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitMatch", - "name": "Binder.visitMatch", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._deferBinding", + "name": "Binder._deferBinding", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._deferBinding", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitMatch", + "func_name": "_deferBinding", "line_range": [ - 2388, - 2482 + 4573, + 4583 ], "class_name": "Binder" }, - "description": "bind match statement patterns and cases" + "description": "defer binding tasks for later" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitPatternAs", - "name": "Binder.visitPatternAs", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitPatternAs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._disableTrueFalseTargets", + "name": "Binder._disableTrueFalseTargets", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._disableTrueFalseTargets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitPatternAs", + "func_name": "_disableTrueFalseTargets", "line_range": [ - 2484, - 2516 + 3111, + 3113 ], "class_name": "Binder" }, - "description": "bind pattern as capture target" + "description": "disable true false flow targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitPatternCapture", - "name": "Binder.visitPatternCapture", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitPatternCapture", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._finishFlowLabel", + "name": "Binder._finishFlowLabel", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._finishFlowLabel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitPatternCapture", + "func_name": "_finishFlowLabel", "line_range": [ - 2518, - 2524 + 3008, + 3026 ], "class_name": "Binder" }, - "description": "bind pattern capture target name" + "description": "finalize flow label and links" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitPatternMappingExpandEntry", - "name": "Binder.visitPatternMappingExpandEntry", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitPatternMappingExpandEntry", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._formatModuleName", + "name": "Binder._formatModuleName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._formatModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitPatternMappingExpandEntry", + "func_name": "_formatModuleName", "line_range": [ - 2526, - 2532 + 2566, + 2568 ], "class_name": "Binder" }, - "description": "process mapping expand entry in pattern" + "description": "format module name string" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isNonEmptyListOrTupleLiteral", - "name": "Binder._isNonEmptyListOrTupleLiteral", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isNonEmptyListOrTupleLiteral", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getDunderAllNamesFromImport", + "name": "Binder._getDunderAllNamesFromImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getDunderAllNamesFromImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isNonEmptyListOrTupleLiteral", + "func_name": "_getDunderAllNamesFromImport", "line_range": [ - 2537, - 2550 + 2695, + 2728 ], "class_name": "Binder" }, - "description": "detect nonempty list or tuple literal" + "description": "extract explicit export names from imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addTypingImportAliasesFromBuiltinsScope", - "name": "Binder._addTypingImportAliasesFromBuiltinsScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addTypingImportAliasesFromBuiltinsScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getMemberAccessInfo", + "name": "Binder._getMemberAccessInfo", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getMemberAccessInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addTypingImportAliasesFromBuiltinsScope", + "func_name": "_getMemberAccessInfo", "line_range": [ - 2552, - 2564 + 4268, + 4353 ], "class_name": "Binder" }, - "description": "collect type helper import aliases" + "description": "get member access target information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._formatModuleName", - "name": "Binder._formatModuleName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._formatModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getMultipartModuleAliasDeclaration", + "name": "Binder._getMultipartModuleAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getMultipartModuleAliasDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_formatModuleName", + "func_name": "_getMultipartModuleAliasDeclaration", "line_range": [ - 2566, - 2568 + 4399, + 4420 ], "class_name": "Binder" }, - "description": "format module name string" + "description": "find multipart module alias declaration" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getNonClassParentScope", @@ -1966,1059 +1950,1075 @@ "description": "locate nearest nonclass parent scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addSlotsToCurrentScope", - "name": "Binder._addSlotsToCurrentScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addSlotsToCurrentScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getUniqueFlowNodeId", + "name": "Binder._getUniqueFlowNodeId", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getUniqueFlowNodeId", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addSlotsToCurrentScope", + "func_name": "_getUniqueFlowNodeId", "line_range": [ - 2581, - 2628 + 4625, + 4628 ], "class_name": "Binder" }, - "description": "add declared slot names to scope" + "description": "generate unique flow node identifier" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isInComprehension", - "name": "Binder._isInComprehension", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isInComprehension", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getVariableDocString", + "name": "Binder._getVariableDocString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getVariableDocString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isInComprehension", + "func_name": "_getVariableDocString", "line_range": [ - 2630, - 2654 + 4165, + 4179 ], "class_name": "Binder" }, - "description": "determine if in comprehension scope" + "description": "extract variable docstring from assignment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addPatternCaptureTarget", - "name": "Binder._addPatternCaptureTarget", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addPatternCaptureTarget", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._handleTypingStubAssignmentOrAnnotation", + "name": "Binder._handleTypingStubAssignmentOrAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._handleTypingStubAssignmentOrAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addPatternCaptureTarget", + "func_name": "_handleTypingStubAssignmentOrAnnotation", "line_range": [ - 2656, - 2684 + 4502, + 4571 ], "class_name": "Binder" }, - "description": "add pattern capture target symbol" + "description": "handle stub file special assignments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._useExceptTargets", - "name": "Binder._useExceptTargets", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._useExceptTargets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isAnnotationClassVar", + "name": "Binder._isAnnotationClassVar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isAnnotationClassVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_useExceptTargets", + "func_name": "_isAnnotationClassVar", "line_range": [ - 2686, - 2691 + 4225, + 4263 ], "class_name": "Binder" }, - "description": "determine use of except targets" + "description": "detect classvar annotation marker" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getDunderAllNamesFromImport", - "name": "Binder._getDunderAllNamesFromImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getDunderAllNamesFromImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isAnnotationFinal", + "name": "Binder._isAnnotationFinal", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isAnnotationFinal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_getDunderAllNamesFromImport", + "func_name": "_isAnnotationFinal", "line_range": [ - 2695, - 2728 + 4184, + 4220 ], "class_name": "Binder" }, - "description": "extract explicit export names from imports" + "description": "detect final annotation marker" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addImplicitFromImport", - "name": "Binder._addImplicitFromImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addImplicitFromImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isCodeUnreachable", + "name": "Binder._isCodeUnreachable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isCodeUnreachable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addImplicitFromImport", + "func_name": "_isCodeUnreachable", "line_range": [ - 2730, - 2738 + 3584, + 3589 ], "class_name": "Binder" }, - "description": "register implicit from import loader action" + "description": "determine code unreachable status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createAliasDeclarationForMultipartImportName", - "name": "Binder._createAliasDeclarationForMultipartImportName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createAliasDeclarationForMultipartImportName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isDataclassesAnnotation", + "name": "Binder._isDataclassesAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isDataclassesAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createAliasDeclarationForMultipartImportName", + "func_name": "_isDataclassesAnnotation", "line_range": [ - 2740, - 2908 + 4128, + 4135 ], "class_name": "Binder" }, - "description": "create alias declaration for multipart import" + "description": "detect dataclass related annotation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._walkStatementsAndReportUnreachable", - "name": "Binder._walkStatementsAndReportUnreachable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._walkStatementsAndReportUnreachable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isInComprehension", + "name": "Binder._isInComprehension", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isInComprehension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_walkStatementsAndReportUnreachable", + "func_name": "_isInComprehension", "line_range": [ - 2910, - 2944 + 2630, + 2654 ], "class_name": "Binder" }, - "description": "walk statements and report unreachable code" + "description": "determine if in comprehension scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createStartFlowNode", - "name": "Binder._createStartFlowNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createStartFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isInferenceAllowedInPyTyped", + "name": "Binder._isInferenceAllowedInPyTyped", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isInferenceAllowedInPyTyped", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createStartFlowNode", + "func_name": "_isInferenceAllowedInPyTyped", "line_range": [ - 2946, - 2952 + 3963, + 3966 ], "class_name": "Binder" }, - "description": "create start flow node" + "description": "determine inference allowance in typed module" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createBranchLabel", - "name": "Binder._createBranchLabel", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createBranchLabel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isKnownAnnotation", + "name": "Binder._isKnownAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isKnownAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createBranchLabel", + "func_name": "_isKnownAnnotation", "line_range": [ - 2954, - 2963 + 4137, + 4163 ], "class_name": "Binder" }, - "description": "create branch flow label" + "description": "determine if annotation is known" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowNarrowForPattern", - "name": "Binder._createFlowNarrowForPattern", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowNarrowForPattern", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isLogicalExpression", + "name": "Binder._isLogicalExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isLogicalExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createFlowNarrowForPattern", + "func_name": "_isLogicalExpression", "line_range": [ - 2968, - 2978 + 3180, + 3192 ], "class_name": "Binder" }, - "description": "create flow narrow node for pattern" + "description": "detect logical boolean expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createContextManagerLabel", - "name": "Binder._createContextManagerLabel", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createContextManagerLabel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isNarrowingExpression", + "name": "Binder._isNarrowingExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isNarrowingExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createContextManagerLabel", + "func_name": "_isNarrowingExpression", "line_range": [ - 2980, - 2995 + 3202, + 3422 ], "class_name": "Binder" }, - "description": "create context manager flow label" + "description": "detect type narrowing expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createLoopLabel", - "name": "Binder._createLoopLabel", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createLoopLabel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isNonEmptyListOrTupleLiteral", + "name": "Binder._isNonEmptyListOrTupleLiteral", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isNonEmptyListOrTupleLiteral", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createLoopLabel", + "func_name": "_isNonEmptyListOrTupleLiteral", "line_range": [ - 2997, - 3006 + 2537, + 2550 ], "class_name": "Binder" }, - "description": "create loop flow label" + "description": "detect nonempty list or tuple literal" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._finishFlowLabel", - "name": "Binder._finishFlowLabel", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._finishFlowLabel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isTypingAnnotation", + "name": "Binder._isTypingAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isTypingAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_finishFlowLabel", + "func_name": "_isTypingAnnotation", "line_range": [ - 3008, - 3026 + 4124, + 4126 ], "class_name": "Binder" }, - "description": "finalize flow label and links" + "description": "detect typing related annotation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindNeverCondition", - "name": "Binder._bindNeverCondition", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindNeverCondition", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._mergeModuleLoaderActions", + "name": "Binder._mergeModuleLoaderActions", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._mergeModuleLoaderActions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindNeverCondition", + "func_name": "_mergeModuleLoaderActions", "line_range": [ - 3031, - 3092 + 4471, + 4498 ], "class_name": "Binder" }, - "description": "bind never condition for flow analysis" + "description": "merge module loader actions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindConditional", - "name": "Binder._bindConditional", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindConditional", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._setTrueFalseTargets", + "name": "Binder._setTrueFalseTargets", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._setTrueFalseTargets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindConditional", + "func_name": "_setTrueFalseTargets", "line_range": [ - 3094, - 3109 + 3115, + 3129 ], "class_name": "Binder" }, - "description": "bind conditional expression and branches" + "description": "set true false flow targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._disableTrueFalseTargets", - "name": "Binder._disableTrueFalseTargets", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._disableTrueFalseTargets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._trackCodeFlowExpressions", + "name": "Binder._trackCodeFlowExpressions", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._trackCodeFlowExpressions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_disableTrueFalseTargets", + "func_name": "_trackCodeFlowExpressions", "line_range": [ - 3111, - 3113 + 3601, + 3617 ], "class_name": "Binder" }, - "description": "disable true false flow targets" + "description": "track code flow expressions in scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._setTrueFalseTargets", - "name": "Binder._setTrueFalseTargets", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._setTrueFalseTargets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._useExceptTargets", + "name": "Binder._useExceptTargets", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._useExceptTargets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_setTrueFalseTargets", + "func_name": "_useExceptTargets", "line_range": [ - 3115, - 3129 + 2686, + 2691 ], "class_name": "Binder" }, - "description": "set true false flow targets" + "description": "determine use of except targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowConditional", - "name": "Binder._createFlowConditional", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowConditional", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._walkStatementsAndReportUnreachable", + "name": "Binder._walkStatementsAndReportUnreachable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._walkStatementsAndReportUnreachable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createFlowConditional", + "func_name": "_walkStatementsAndReportUnreachable", "line_range": [ - 3131, - 3177 + 2910, + 2944 ], "class_name": "Binder" }, - "description": "create flow nodes for conditional" + "description": "walk statements and report unreachable code" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isLogicalExpression", - "name": "Binder._isLogicalExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isLogicalExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.bindModule", + "name": "Binder.bindModule", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.bindModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isLogicalExpression", + "func_name": "bindModule", "line_range": [ - 3180, - 3192 + 291, + 395 ], "class_name": "Binder" }, - "description": "detect logical boolean expressions" + "description": "bind module level symbols; create module start flow node; finalize module export visibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isNarrowingExpression", - "name": "Binder._isNarrowingExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isNarrowingExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAssert", + "name": "Binder.visitAssert", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAssert", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isNarrowingExpression", + "func_name": "visitAssert", "line_range": [ - 3202, - 3422 + 1522, + 1535 ], "class_name": "Binder" }, - "description": "detect type narrowing expressions" + "description": "process assert statement conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createAssignmentTargetFlowNodes", - "name": "Binder._createAssignmentTargetFlowNodes", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createAssignmentTargetFlowNodes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAssignment", + "name": "Binder.visitAssignment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAssignment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createAssignmentTargetFlowNodes", + "func_name": "visitAssignment", "line_range": [ - 3424, - 3479 + 925, + 1092 ], "class_name": "Binder" }, - "description": "create assignment target flow nodes" + "description": "bind assignment targets and values" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createCallFlowNode", - "name": "Binder._createCallFlowNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createCallFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAssignmentExpression", + "name": "Binder.visitAssignmentExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAssignmentExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createCallFlowNode", + "func_name": "visitAssignmentExpression", "line_range": [ - 3481, - 3494 + 1094, + 1136 ], "class_name": "Binder" }, - "description": "create call flow node" + "description": "bind assignment expression target and value" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createVariableAnnotationFlowNode", - "name": "Binder._createVariableAnnotationFlowNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createVariableAnnotationFlowNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAugmentedAssignment", + "name": "Binder.visitAugmentedAssignment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAugmentedAssignment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createVariableAnnotationFlowNode", + "func_name": "visitAugmentedAssignment", "line_range": [ - 3496, - 3506 + 1138, + 1199 ], "class_name": "Binder" }, - "description": "create variable annotation flow node" + "description": "bind augmented assignment target and value" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowAssignment", - "name": "Binder._createFlowAssignment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitAwait", + "name": "Binder.visitAwait", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitAwait", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createFlowAssignment", + "func_name": "visitAwait", "line_range": [ - 3508, - 3549 + 1738, + 1762 ], "class_name": "Binder" }, - "description": "create flow assignment node" + "description": "bind await expression and operand" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowWildcardImport", - "name": "Binder._createFlowWildcardImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowWildcardImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitBinaryOperation", + "name": "Binder.visitBinaryOperation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitBinaryOperation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createFlowWildcardImport", + "func_name": "visitBinaryOperation", "line_range": [ - 3551, - 3566 + 2276, + 2309 ], "class_name": "Binder" }, - "description": "create wildcard import flow node" + "description": "analyze binary operation operands and operator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createFlowExhaustedMatch", - "name": "Binder._createFlowExhaustedMatch", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createFlowExhaustedMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitBreak", + "name": "Binder.visitBreak", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitBreak", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createFlowExhaustedMatch", + "func_name": "visitBreak", "line_range": [ - 3568, - 3582 + 1356, + 1364 ], "class_name": "Binder" }, - "description": "create exhausted match flow node" + "description": "mark break flow target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isCodeUnreachable", - "name": "Binder._isCodeUnreachable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isCodeUnreachable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitCall", + "name": "Binder.visitCall", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitCall", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isCodeUnreachable", + "func_name": "visitCall", "line_range": [ - 3584, - 3589 + 722, + 837 ], "class_name": "Binder" }, - "description": "determine code unreachable status" + "description": "analyze call expression and arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addExceptTargets", - "name": "Binder._addExceptTargets", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addExceptTargets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitClass", + "name": "Binder.visitClass", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addExceptTargets", + "func_name": "visitClass", "line_range": [ - 3591, - 3599 + 473, + 529 ], "class_name": "Binder" }, - "description": "add except targets to stack" + "description": "bind class declaration and members; process base classes and decorators" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._trackCodeFlowExpressions", - "name": "Binder._trackCodeFlowExpressions", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._trackCodeFlowExpressions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitComprehension", + "name": "Binder.visitComprehension", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitComprehension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_trackCodeFlowExpressions", + "func_name": "visitComprehension", "line_range": [ - 3601, - 3617 + 2311, + 2386 ], "class_name": "Binder" }, - "description": "track code flow expressions in scope" + "description": "bind comprehension generators and targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindLoopStatement", - "name": "Binder._bindLoopStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindLoopStatement", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitContinue", + "name": "Binder.visitContinue", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitContinue", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindLoopStatement", + "func_name": "visitContinue", "line_range": [ - 3619, - 3630 + 1346, + 1354 ], "class_name": "Binder" }, - "description": "bind loop statement control flow" + "description": "mark continue flow target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addAntecedent", - "name": "Binder._addAntecedent", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addAntecedent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitDel", + "name": "Binder.visitDel", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitDel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addAntecedent", + "func_name": "visitDel", "line_range": [ - 3632, - 3641 + 1201, + 1209 ], "class_name": "Binder" }, - "description": "add antecedent flow condition" + "description": "handle del statement target removal" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindNameToScope", - "name": "Binder._bindNameToScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindNameToScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitExcept", + "name": "Binder.visitExcept", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitExcept", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindNameToScope", + "func_name": "visitExcept", "line_range": [ - 3643, - 3645 + 1537, + 1575 ], "class_name": "Binder" }, - "description": "bind name to current scope" + "description": "bind except clause exception targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindNameValueToScope", - "name": "Binder._bindNameValueToScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindNameValueToScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitFor", + "name": "Binder.visitFor", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitFor", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindNameValueToScope", + "func_name": "visitFor", "line_range": [ - 3647, - 3695 + 1252, + 1344 ], "class_name": "Binder" }, - "description": "bind name to value in scope" + "description": "bind for loop targets and iterables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindPossibleTupleNamedTarget", - "name": "Binder._bindPossibleTupleNamedTarget", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindPossibleTupleNamedTarget", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitFunction", + "name": "Binder.visitFunction", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindPossibleTupleNamedTarget", + "func_name": "visitFunction", "line_range": [ - 3697, - 3728 + 531, + 661 ], "class_name": "Binder" }, - "description": "bind tuple destructuring assignment targets" + "description": "bind function declaration and signature; track function return and yield statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addImplicitSymbolToCurrentScope", - "name": "Binder._addImplicitSymbolToCurrentScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addImplicitSymbolToCurrentScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitGlobal", + "name": "Binder.visitGlobal", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitGlobal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addImplicitSymbolToCurrentScope", + "func_name": "visitGlobal", "line_range": [ - 3730, - 3749 + 1764, + 1791 ], "class_name": "Binder" }, - "description": "add implicit symbol to current scope" + "description": "process global declarations in scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addSymbolToCurrentScope", - "name": "Binder._addSymbolToCurrentScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addSymbolToCurrentScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitIf", + "name": "Binder.visitIf", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitIf", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addSymbolToCurrentScope", + "func_name": "visitIf", "line_range": [ - 3752, - 3776 + 1439, + 1481 ], "class_name": "Binder" }, - "description": "add symbol to current scope" + "description": "bind if statement branches and flow" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createNewScope", - "name": "Binder._createNewScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createNewScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitImportAs", + "name": "Binder.visitImportAs", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitImportAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createNewScope", + "func_name": "visitImportAs", "line_range": [ - 3778, - 3804 + 1825, + 1880 ], "class_name": "Binder" }, - "description": "create new scope and enter" + "description": "bind import as alias declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._createCellChainModuleLevelLookup", - "name": "Binder._createCellChainModuleLevelLookup", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._createCellChainModuleLevelLookup", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitImportFrom", + "name": "Binder.visitImportFrom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitImportFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createCellChainModuleLevelLookup", + "func_name": "visitImportFrom", "line_range": [ - 3811, - 3858 + 1882, + 2151 ], "class_name": "Binder" }, - "description": "create cell chain module level lookup" + "description": "bind from import statements and aliases; handle wildcard imports and loader actions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addInferredTypeAssignmentForVariable", - "name": "Binder._addInferredTypeAssignmentForVariable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addInferredTypeAssignmentForVariable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitIndex", + "name": "Binder.visitIndex", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitIndex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addInferredTypeAssignmentForVariable", + "func_name": "visitIndex", "line_range": [ - 3860, - 3961 + 1419, + 1437 ], "class_name": "Binder" }, - "description": "add inferred type assignment for variable" + "description": "process index and slice expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isInferenceAllowedInPyTyped", - "name": "Binder._isInferenceAllowedInPyTyped", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isInferenceAllowedInPyTyped", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitLambda", + "name": "Binder.visitLambda", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitLambda", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isInferenceAllowedInPyTyped", + "func_name": "visitLambda", "line_range": [ - 3963, - 3966 + 663, + 720 ], "class_name": "Binder" }, - "description": "determine inference allowance in typed module" + "description": "bind lambda expression and scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addTypeDeclarationForVariable", - "name": "Binder._addTypeDeclarationForVariable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addTypeDeclarationForVariable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitMatch", + "name": "Binder.visitMatch", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addTypeDeclarationForVariable", + "func_name": "visitMatch", "line_range": [ - 3968, - 4118 + 2388, + 2482 ], "class_name": "Binder" }, - "description": "add type declaration for variable" + "description": "bind match statement patterns and cases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isTypingAnnotation", - "name": "Binder._isTypingAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isTypingAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitMemberAccess", + "name": "Binder.visitMemberAccess", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitMemberAccess", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isTypingAnnotation", + "func_name": "visitMemberAccess", "line_range": [ - 4124, - 4126 + 1408, + 1412 ], "class_name": "Binder" }, - "description": "detect typing related annotation" + "description": "resolve member access references" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isDataclassesAnnotation", - "name": "Binder._isDataclassesAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isDataclassesAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitModule", + "name": "Binder.visitModule", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isDataclassesAnnotation", + "func_name": "visitModule", "line_range": [ - 4128, - 4135 + 397, + 402 ], "class_name": "Binder" }, - "description": "detect dataclass related annotation" + "description": "establish module scope and bindings" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isKnownAnnotation", - "name": "Binder._isKnownAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isKnownAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitModuleName", + "name": "Binder.visitModuleName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isKnownAnnotation", + "func_name": "visitModuleName", "line_range": [ - 4137, - 4163 + 409, + 471 ], "class_name": "Binder" }, - "description": "determine if annotation is known" + "description": "resolve module name references" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getVariableDocString", - "name": "Binder._getVariableDocString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getVariableDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitName", + "name": "Binder.visitName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_getVariableDocString", + "func_name": "visitName", "line_range": [ - 4165, - 4179 + 1414, + 1417 ], "class_name": "Binder" }, - "description": "extract variable docstring from assignment" + "description": "resolve identifier binding or reference" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isAnnotationFinal", - "name": "Binder._isAnnotationFinal", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isAnnotationFinal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitNonlocal", + "name": "Binder.visitNonlocal", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitNonlocal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isAnnotationFinal", + "func_name": "visitNonlocal", "line_range": [ - 4184, - 4220 + 1793, + 1823 ], "class_name": "Binder" }, - "description": "detect final annotation marker" + "description": "bind nonlocal declarations to outer scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._isAnnotationClassVar", - "name": "Binder._isAnnotationClassVar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._isAnnotationClassVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitPatternAs", + "name": "Binder.visitPatternAs", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitPatternAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_isAnnotationClassVar", + "func_name": "visitPatternAs", "line_range": [ - 4225, - 4263 + 2484, + 2516 ], "class_name": "Binder" }, - "description": "detect classvar annotation marker" + "description": "bind pattern as capture target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getMemberAccessInfo", - "name": "Binder._getMemberAccessInfo", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getMemberAccessInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitPatternCapture", + "name": "Binder.visitPatternCapture", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitPatternCapture", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_getMemberAccessInfo", + "func_name": "visitPatternCapture", "line_range": [ - 4268, - 4353 + 2518, + 2524 ], "class_name": "Binder" }, - "description": "get member access target information" + "description": "bind pattern capture target name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addImplicitImportsToLoaderActions", - "name": "Binder._addImplicitImportsToLoaderActions", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addImplicitImportsToLoaderActions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitPatternMappingExpandEntry", + "name": "Binder.visitPatternMappingExpandEntry", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitPatternMappingExpandEntry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addImplicitImportsToLoaderActions", + "func_name": "visitPatternMappingExpandEntry", "line_range": [ - 4355, - 4374 + 2526, + 2532 ], "class_name": "Binder" }, - "description": "add implicit imports to loader actions" + "description": "process mapping expand entry in pattern" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addWildcardImportedModuleAlias", - "name": "Binder._addWildcardImportedModuleAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addWildcardImportedModuleAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitRaise", + "name": "Binder.visitRaise", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitRaise", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addWildcardImportedModuleAlias", + "func_name": "visitRaise", "line_range": [ - 4376, - 4395 + 1577, + 1602 ], "class_name": "Binder" }, - "description": "add wildcard imported module alias" + "description": "handle raise statement exception expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getMultipartModuleAliasDeclaration", - "name": "Binder._getMultipartModuleAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getMultipartModuleAliasDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitReturn", + "name": "Binder.visitReturn", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitReturn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_getMultipartModuleAliasDeclaration", + "func_name": "visitReturn", "line_range": [ - 4399, - 4420 + 1366, + 1388 ], "class_name": "Binder" }, - "description": "find multipart module alias declaration" + "description": "bind return statements to function" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._cloneMultipartModuleAliasDeclaration", - "name": "Binder._cloneMultipartModuleAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._cloneMultipartModuleAliasDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitSuite", + "name": "Binder.visitSuite", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_cloneMultipartModuleAliasDeclaration", + "func_name": "visitSuite", "line_range": [ - 4422, - 4449 + 404, + 407 ], "class_name": "Binder" }, - "description": "clone multipart module alias declaration" + "description": "bind suite statements and scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._cloneModuleLoaderActions", - "name": "Binder._cloneModuleLoaderActions", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._cloneModuleLoaderActions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTernary", + "name": "Binder.visitTernary", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTernary", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_cloneModuleLoaderActions", + "func_name": "visitTernary", "line_range": [ - 4451, - 4469 + 2233, + 2257 ], "class_name": "Binder" }, - "description": "clone module loader actions" + "description": "analyze ternary conditional expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._mergeModuleLoaderActions", - "name": "Binder._mergeModuleLoaderActions", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._mergeModuleLoaderActions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTry", + "name": "Binder.visitTry", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_mergeModuleLoaderActions", + "func_name": "visitTry", "line_range": [ - 4471, - 4498 + 1604, + 1736 ], "class_name": "Binder" }, - "description": "merge module loader actions" + "description": "bind try statement handlers and finally" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._handleTypingStubAssignmentOrAnnotation", - "name": "Binder._handleTypingStubAssignmentOrAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._handleTypingStubAssignmentOrAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTypeAlias", + "name": "Binder.visitTypeAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTypeAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_handleTypingStubAssignmentOrAnnotation", + "func_name": "visitTypeAlias", "line_range": [ - 4502, - 4571 + 886, + 923 ], "class_name": "Binder" }, - "description": "handle stub file special assignments" + "description": "bind type alias declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._deferBinding", - "name": "Binder._deferBinding", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._deferBinding", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTypeAnnotation", + "name": "Binder.visitTypeAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTypeAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_deferBinding", + "func_name": "visitTypeAnnotation", "line_range": [ - 4573, - 4583 + 1211, + 1250 ], "class_name": "Binder" }, - "description": "defer binding tasks for later" + "description": "bind type annotation to target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindDeferred", - "name": "Binder._bindDeferred", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindDeferred", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitTypeParameterList", + "name": "Binder.visitTypeParameterList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitTypeParameterList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindDeferred", + "func_name": "visitTypeParameterList", "line_range": [ - 4585, - 4595 + 839, + 884 ], "class_name": "Binder" }, - "description": "execute deferred binding tasks" + "description": "bind type parameter list" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._bindYield", - "name": "Binder._bindYield", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._bindYield", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitUnaryOperation", + "name": "Binder.visitUnaryOperation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitUnaryOperation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_bindYield", + "func_name": "visitUnaryOperation", "line_range": [ - 4597, - 4623 + 2259, + 2274 ], "class_name": "Binder" }, - "description": "bind yield node and validate usage" + "description": "analyze unary operation operand" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._getUniqueFlowNodeId", - "name": "Binder._getUniqueFlowNodeId", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._getUniqueFlowNodeId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitWhile", + "name": "Binder.visitWhile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitWhile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_getUniqueFlowNodeId", + "func_name": "visitWhile", "line_range": [ - 4625, - 4628 + 1483, + 1520 ], "class_name": "Binder" }, - "description": "generate unique flow node identifier" + "description": "bind while loop branches and flow" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addDiagnostic", - "name": "Binder._addDiagnostic", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addDiagnostic", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitWith", + "name": "Binder.visitWith", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addDiagnostic", + "func_name": "visitWith", "line_range": [ - 4630, - 4653 + 2153, + 2231 ], "class_name": "Binder" }, - "description": "add diagnostic for file range" + "description": "bind with statement context managers and targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder._addSyntaxError", - "name": "Binder._addSyntaxError", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder._addSyntaxError", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitYield", + "name": "Binder.visitYield", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitYield", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_addSyntaxError", + "func_name": "visitYield", "line_range": [ - 4655, - 4657 + 1390, + 1397 ], "class_name": "Binder" }, - "description": "report syntax error diagnostic" + "description": "bind yield statements and mark generator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder", - "name": "YieldFinder", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::Binder.visitYieldFrom", + "name": "Binder.visitYieldFrom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/Binder.visitYieldFrom", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", + "func_name": "visitYieldFrom", + "line_range": [ + 1399, + 1406 + ], + "class_name": "Binder" + }, + "description": "bind yield from expression" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator", + "name": "DummyScopeGenerator", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "YieldFinder", + "func_name": "DummyScopeGenerator", "line_range": [ - 4660, - 4677 + 4698, + 4740 ] }, - "description": "initialize yield detection state" + "description": "initialize current scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder.checkContainsYield", - "name": "YieldFinder.checkContainsYield", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder.checkContainsYield", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator._createNewScope", + "name": "DummyScopeGenerator._createNewScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator._createNewScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "checkContainsYield", + "func_name": "_createNewScope", "line_range": [ - 4663, - 4666 + 4730, + 4739 ], - "class_name": "YieldFinder" + "class_name": "DummyScopeGenerator" }, - "description": "scan node for yield expressions" + "description": "push new scope; execute callback within scope; restore previous scope; return created scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder.visitYield", - "name": "YieldFinder.visitYield", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder.visitYield", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator.visitClass", + "name": "DummyScopeGenerator.visitClass", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator.visitClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitYield", + "func_name": "visitClass", "line_range": [ - 4668, - 4671 + 4706, + 4716 ], - "class_name": "YieldFinder" + "class_name": "DummyScopeGenerator" }, - "description": "record yield expression occurrence" + "description": "create new class scope; walk class body; attach scope to class node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder.visitYieldFrom", - "name": "YieldFinder.visitYieldFrom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder.visitYieldFrom", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator.visitFunction", + "name": "DummyScopeGenerator.visitFunction", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator.visitFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitYieldFrom", + "func_name": "visitFunction", "line_range": [ - 4673, - 4676 + 4718, + 4728 ], - "class_name": "YieldFinder" + "class_name": "DummyScopeGenerator" }, - "description": "record yield from expression occurrence" + "description": "create new function scope; walk function body; attach scope to function node" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::ReturnFinder", @@ -3068,67 +3068,67 @@ "description": "mark presence of return statement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator", - "name": "DummyScopeGenerator", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder", + "name": "YieldFinder", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "DummyScopeGenerator", + "func_name": "YieldFinder", "line_range": [ - 4698, - 4740 + 4660, + 4677 ] }, - "description": "initialize current scope" + "description": "initialize yield detection state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator.visitClass", - "name": "DummyScopeGenerator.visitClass", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator.visitClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder.checkContainsYield", + "name": "YieldFinder.checkContainsYield", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder.checkContainsYield", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitClass", + "func_name": "checkContainsYield", "line_range": [ - 4706, - 4716 + 4663, + 4666 ], - "class_name": "DummyScopeGenerator" + "class_name": "YieldFinder" }, - "description": "create new class scope; walk class body; attach scope to class node" + "description": "scan node for yield expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator.visitFunction", - "name": "DummyScopeGenerator.visitFunction", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator.visitFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder.visitYield", + "name": "YieldFinder.visitYield", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder.visitYield", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "visitFunction", + "func_name": "visitYield", "line_range": [ - 4718, - 4728 + 4668, + 4671 ], - "class_name": "DummyScopeGenerator" + "class_name": "YieldFinder" }, - "description": "create new function scope; walk function body; attach scope to function node" + "description": "record yield expression occurrence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::DummyScopeGenerator._createNewScope", - "name": "DummyScopeGenerator._createNewScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/DummyScopeGenerator._createNewScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts::YieldFinder.visitYieldFrom", + "name": "YieldFinder.visitYieldFrom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/binder.ts/YieldFinder.visitYieldFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/binder.ts", - "func_name": "_createNewScope", + "func_name": "visitYieldFrom", "line_range": [ - 4730, - 4739 + 4673, + 4676 ], - "class_name": "DummyScopeGenerator" + "class_name": "YieldFinder" }, - "description": "push new scope; execute callback within scope; restore previous scope; return created scope" + "description": "record yield from expression occurrence" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::__file__", @@ -3161,84 +3161,84 @@ "description": "initialize cache manager" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.registerCacheOwner", - "name": "CacheManager.registerCacheOwner", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.registerCacheOwner", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager._convertToMB", + "name": "CacheManager._convertToMB", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager._convertToMB", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "registerCacheOwner", + "func_name": "_convertToMB", "line_range": [ - 37, - 39 + 156, + 158 ], "class_name": "CacheManager" }, - "description": "register cache owner" + "description": "format bytes as megabytes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.addWorker", - "name": "CacheManager.addWorker", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.addWorker", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager._getSharedUsageBuffer", + "name": "CacheManager._getSharedUsageBuffer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager._getSharedUsageBuffer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "addWorker", + "func_name": "_getSharedUsageBuffer", "line_range": [ - 41, - 54 + 160, + 172 ], "class_name": "CacheManager" }, - "description": "assign shared usage buffer to worker; reset worker usage on exit" + "description": "allocate shared usage buffer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.handleCachedUsageBufferMessage", - "name": "CacheManager.handleCachedUsageBufferMessage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.handleCachedUsageBufferMessage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager._getTotalHeapUsage", + "name": "CacheManager._getTotalHeapUsage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager._getTotalHeapUsage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "handleCachedUsageBufferMessage", + "func_name": "_getTotalHeapUsage", "line_range": [ - 56, - 71 + 174, + 185 ], "class_name": "CacheManager" }, - "description": "store shared usage buffer; record shared buffer position" + "description": "aggregate total heap usage; include cross worker heap usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.unregisterCacheOwner", - "name": "CacheManager.unregisterCacheOwner", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.unregisterCacheOwner", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.addWorker", + "name": "CacheManager.addWorker", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.addWorker", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "unregisterCacheOwner", + "func_name": "addWorker", "line_range": [ - 73, - 80 + 41, + 54 ], "class_name": "CacheManager" }, - "description": "unregister cache owner" + "description": "assign shared usage buffer to worker; reset worker usage on exit" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.pauseTracking", - "name": "CacheManager.pauseTracking", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.pauseTracking", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.emptyCache", + "name": "CacheManager.emptyCache", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.emptyCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "pauseTracking", + "func_name": "emptyCache", "line_range": [ - 82, - 90 + 106, + 120 ], "class_name": "CacheManager" }, - "description": "pause cache usage tracking; resume cache tracking on dispose" + "description": "empty all registered caches; log heap statistics when requested" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.getCacheUsage", @@ -3257,84 +3257,84 @@ "description": "compute total cache usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.emptyCache", - "name": "CacheManager.emptyCache", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.emptyCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.getUsedHeapRatio", + "name": "CacheManager.getUsedHeapRatio", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.getUsedHeapRatio", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "emptyCache", + "func_name": "getUsedHeapRatio", "line_range": [ - 106, - 120 + 123, + 154 ], "class_name": "CacheManager" }, - "description": "empty all registered caches; log heap statistics when requested" + "description": "compute heap usage ratio; log detailed heap statistics periodically" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.getUsedHeapRatio", - "name": "CacheManager.getUsedHeapRatio", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.getUsedHeapRatio", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.handleCachedUsageBufferMessage", + "name": "CacheManager.handleCachedUsageBufferMessage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.handleCachedUsageBufferMessage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "getUsedHeapRatio", + "func_name": "handleCachedUsageBufferMessage", "line_range": [ - 123, - 154 + 56, + 71 ], "class_name": "CacheManager" }, - "description": "compute heap usage ratio; log detailed heap statistics periodically" + "description": "store shared usage buffer; record shared buffer position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager._convertToMB", - "name": "CacheManager._convertToMB", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager._convertToMB", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.pauseTracking", + "name": "CacheManager.pauseTracking", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.pauseTracking", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "_convertToMB", + "func_name": "pauseTracking", "line_range": [ - 156, - 158 + 82, + 90 ], "class_name": "CacheManager" }, - "description": "format bytes as megabytes" + "description": "pause cache usage tracking; resume cache tracking on dispose" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager._getSharedUsageBuffer", - "name": "CacheManager._getSharedUsageBuffer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager._getSharedUsageBuffer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.registerCacheOwner", + "name": "CacheManager.registerCacheOwner", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.registerCacheOwner", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "_getSharedUsageBuffer", + "func_name": "registerCacheOwner", "line_range": [ - 160, - 172 + 37, + 39 ], "class_name": "CacheManager" }, - "description": "allocate shared usage buffer" + "description": "register cache owner" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager._getTotalHeapUsage", - "name": "CacheManager._getTotalHeapUsage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager._getTotalHeapUsage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts::CacheManager.unregisterCacheOwner", + "name": "CacheManager.unregisterCacheOwner", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cacheManager.ts/CacheManager.unregisterCacheOwner", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts", - "func_name": "_getTotalHeapUsage", + "func_name": "unregisterCacheOwner", "line_range": [ - 174, - 185 + 73, + 80 ], "class_name": "CacheManager" }, - "description": "aggregate total heap usage; include cross worker heap usage" + "description": "unregister cache owner" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::__file__", @@ -3367,36 +3367,52 @@ "description": "store source file accessors; prepare lazy tail cache" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex.invalidate", - "name": "CellChainIndex.invalidate", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex.invalidate", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex._buildTailMap", + "name": "CellChainIndex._buildTailMap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex._buildTailMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts", - "func_name": "invalidate", + "func_name": "_buildTailMap", "line_range": [ - 30, - 32 + 94, + 127 ], "class_name": "CellChainIndex" }, - "description": "invalidate cached tail map" + "description": "discover chaining relationships between cells; map each cell to its chain tail" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex.getLaterModuleNodes", - "name": "CellChainIndex.getLaterModuleNodes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex.getLaterModuleNodes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex._ensureTailMap", + "name": "CellChainIndex._ensureTailMap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex._ensureTailMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts", - "func_name": "getLaterModuleNodes", + "func_name": "_ensureTailMap", "line_range": [ - 39, - 67 + 84, + 89 ], "class_name": "CellChainIndex" }, - "description": "validate file is cell documentation; determine chain tail for file; yield parse trees of later cells" + "description": "build tail map when missing" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex._getLaterCellChainFiles", + "name": "CellChainIndex._getLaterCellChainFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex._getLaterCellChainFiles", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts", + "func_name": "_getLaterCellChainFiles", + "line_range": [ + 133, + 153 + ], + "class_name": "CellChainIndex" + }, + "description": "collect later chain files in forward order; return empty when chain disconnected" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex.getCellChainFiles", @@ -3415,52 +3431,36 @@ "description": "collect chain files for source file; return single file when no later cells" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex._ensureTailMap", - "name": "CellChainIndex._ensureTailMap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex._ensureTailMap", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex.getLaterModuleNodes", + "name": "CellChainIndex.getLaterModuleNodes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex.getLaterModuleNodes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts", - "func_name": "_ensureTailMap", + "func_name": "getLaterModuleNodes", "line_range": [ - 84, - 89 + 39, + 67 ], "class_name": "CellChainIndex" }, - "description": "build tail map when missing" + "description": "validate file is cell documentation; determine chain tail for file; yield parse trees of later cells" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex._buildTailMap", - "name": "CellChainIndex._buildTailMap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex._buildTailMap", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex.invalidate", + "name": "CellChainIndex.invalidate", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex.invalidate", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts", - "func_name": "_buildTailMap", + "func_name": "invalidate", "line_range": [ - 94, - 127 + 30, + 32 ], "class_name": "CellChainIndex" }, - "description": "discover chaining relationships between cells; map each cell to its chain tail" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts::CellChainIndex._getLaterCellChainFiles", - "name": "CellChainIndex._getLaterCellChainFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/cellChainIndex.ts/CellChainIndex._getLaterCellChainFiles", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts", - "func_name": "_getLaterCellChainFiles", - "line_range": [ - 133, - 153 - ], - "class_name": "CellChainIndex" - }, - "description": "collect later chain files in forward order; return empty when chain disconnected" + "description": "invalidate cached tail map" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::__file__", @@ -3472,10 +3472,10 @@ "func_name": "checker", "line_range": [ 1, - 7634 + 7639 ] }, - "description": "Performs static type checking and traverses parse trees to validate and report diagnostics for a source file" + "description": "Performs static type checking for Python source files and reports diagnostics for invalid constructs" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker", @@ -3487,1242 +3487,1242 @@ "func_name": "Checker", "line_range": [ 217, - 7633 + 7638 ] }, - "description": "initialize analyzer context; store evaluator and resolver" + "description": "initialize checker state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.check", - "name": "Checker.check", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.check", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._addMissingModuleSourceDiagnosticIfNeeded", + "name": "Checker._addMissingModuleSourceDiagnosticIfNeeded", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._addMissingModuleSourceDiagnosticIfNeeded", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "check", + "func_name": "_addMissingModuleSourceDiagnosticIfNeeded", "line_range": [ - 244, - 282 + 1810, + 1835 ], "class_name": "Checker" }, - "description": "perform module level checks; report unreachable and import issues" + "description": "report missing module sources" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.walk", - "name": "Checker.walk", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.walk", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._addMultipleInheritanceRelatedInfo", + "name": "Checker._addMultipleInheritanceRelatedInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._addMultipleInheritanceRelatedInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "walk", + "func_name": "_addMultipleInheritanceRelatedInfo", "line_range": [ - 284, - 292 + 6018, + 6044 ], "class_name": "Checker" }, - "description": "traverse parse tree selectively; suppress diagnostics for unreachable code" + "description": "add inheritance diagnostic context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitSuite", - "name": "Checker.visitSuite", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitSuite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._conditionallyReportPrivateUsage", + "name": "Checker._conditionallyReportPrivateUsage", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._conditionallyReportPrivateUsage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitSuite", + "func_name": "_conditionallyReportPrivateUsage", "line_range": [ - 294, - 297 + 4447, + 4578 ], "class_name": "Checker" }, - "description": "analyze suite statements for reachability" + "description": "report private usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitStatementList", - "name": "Checker.visitStatementList", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitStatementList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._conditionallyReportUnusedDeclaration", + "name": "Checker._conditionallyReportUnusedDeclaration", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._conditionallyReportUnusedDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitStatementList", + "func_name": "_conditionallyReportUnusedDeclaration", "line_range": [ - 299, - 312 + 3728, + 3877 ], "class_name": "Checker" }, - "description": "evaluate expression statements; report unused expression values" + "description": "report unused declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitClass", - "name": "Checker.visitClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._conditionallyReportUnusedSymbol", + "name": "Checker._conditionallyReportUnusedSymbol", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._conditionallyReportUnusedSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitClass", + "func_name": "_conditionallyReportUnusedSymbol", "line_range": [ - 314, - 397 + 3695, + 3726 ], "class_name": "Checker" }, - "description": "analyze class definitions; validate inheritance and members" + "description": "report unused symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitFunction", - "name": "Checker.visitFunction", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._findNodeForOverload", + "name": "Checker._findNodeForOverload", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._findNodeForOverload", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitFunction", + "func_name": "_findNodeForOverload", "line_range": [ - 399, - 742 + 2700, + 2716 ], "class_name": "Checker" }, - "description": "analyze function definitions; validate parameters and annotations" + "description": "locate overload declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitLambda", - "name": "Checker.visitLambda", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitLambda", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._getImportResult", + "name": "Checker._getImportResult", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._getImportResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitLambda", + "func_name": "_getImportResult", "line_range": [ - 744, - 793 + 1784, + 1808 ], "class_name": "Checker" }, - "description": "analyze lambda expression types" + "description": "resolve import results" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitCall", - "name": "Checker.visitCall", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitCall", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isFinalFunction", + "name": "Checker._isFinalFunction", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isFinalFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitCall", + "func_name": "_isFinalFunction", "line_range": [ - 795, - 835 + 6961, + 6985 ], "class_name": "Checker" }, - "description": "analyze function call expressions; validate call argument types" + "description": "detect final functions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAwait", - "name": "Checker.visitAwait", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAwait", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isMethodExemptFromLsp", + "name": "Checker._isMethodExemptFromLsp", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isMethodExemptFromLsp", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitAwait", + "func_name": "_isMethodExemptFromLsp", "line_range": [ - 837, - 855 + 6532, + 6535 ], "class_name": "Checker" }, - "description": "analyze await expressions; ensure awaited type is awaitable" + "description": "detect exempt methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitFor", - "name": "Checker.visitFor", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitFor", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isMultipartImportUnused", + "name": "Checker._isMultipartImportUnused", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isMultipartImportUnused", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitFor", + "func_name": "_isMultipartImportUnused", "line_range": [ - 857, - 869 + 1743, + 1782 ], "class_name": "Checker" }, - "description": "analyze for loop constructs; validate iteration target types" + "description": "detect unused imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitList", - "name": "Checker.visitList", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isOverlappingOverload", + "name": "Checker._isOverlappingOverload", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isOverlappingOverload", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitList", + "func_name": "_isOverlappingOverload", "line_range": [ - 871, - 874 + 2718, + 2757 ], "class_name": "Checker" }, - "description": "analyze list literal types" + "description": "detect overlapping overloads" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitSet", - "name": "Checker.visitSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isSymbolPrivate", + "name": "Checker._isSymbolPrivate", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isSymbolPrivate", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitSet", + "func_name": "_isSymbolPrivate", "line_range": [ - 876, - 879 + 4171, + 4190 ], "class_name": "Checker" }, - "description": "analyze set literal types" + "description": "detect private symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitDictionary", - "name": "Checker.visitDictionary", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitDictionary", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isTypeSupportedTypeForIsInstance", + "name": "Checker._isTypeSupportedTypeForIsInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isTypeSupportedTypeForIsInstance", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitDictionary", + "func_name": "_isTypeSupportedTypeForIsInstance", "line_range": [ - 881, - 884 + 4072, + 4159 ], "class_name": "Checker" }, - "description": "analyze dictionary literal types" + "description": "detect supported instance types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitComprehension", - "name": "Checker.visitComprehension", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitComprehension", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isTypeValidForUnusedValueTest", + "name": "Checker._isTypeValidForUnusedValueTest", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isTypeValidForUnusedValueTest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitComprehension", + "func_name": "_isTypeValidForUnusedValueTest", "line_range": [ - 886, - 889 + 2333, + 2335 ], "class_name": "Checker" }, - "description": "analyze comprehension expressions" + "description": "detect meaningful unused values" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitComprehensionIf", - "name": "Checker.visitComprehensionIf", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitComprehensionIf", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedClassProperty", + "name": "Checker._reportDeprecatedClassProperty", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedClassProperty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitComprehensionIf", + "func_name": "_reportDeprecatedClassProperty", "line_range": [ - 891, - 895 + 4192, + 4201 ], "class_name": "Checker" }, - "description": "analyze comprehension filter expressions" + "description": "report deprecated class properties" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitIf", - "name": "Checker.visitIf", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitIf", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedDiagnostic", + "name": "Checker._reportDeprecatedDiagnostic", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedDiagnostic", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitIf", + "func_name": "_reportDeprecatedDiagnostic", "line_range": [ - 897, - 901 + 4401, + 4412 ], "class_name": "Checker" }, - "description": "analyze if statement conditions; validate condition boolean semantics" + "description": "report deprecated usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitWhile", - "name": "Checker.visitWhile", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitWhile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedUseForMemberAccess", + "name": "Checker._reportDeprecatedUseForMemberAccess", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedUseForMemberAccess", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitWhile", + "func_name": "_reportDeprecatedUseForMemberAccess", "line_range": [ - 903, - 907 + 4203, + 4227 ], "class_name": "Checker" }, - "description": "analyze while statement conditions; validate loop condition types" + "description": "report deprecated member usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitWith", - "name": "Checker.visitWith", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitWith", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedUseForOperation", + "name": "Checker._reportDeprecatedUseForOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedUseForOperation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitWith", + "func_name": "_reportDeprecatedUseForOperation", "line_range": [ - 909, - 924 + 4229, + 4243 ], "class_name": "Checker" }, - "description": "analyze with statement contexts; validate context manager types" + "description": "report deprecated operation usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitReturn", - "name": "Checker.visitReturn", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitReturn", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedUseForType", + "name": "Checker._reportDeprecatedUseForType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedUseForType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitReturn", + "func_name": "_reportDeprecatedUseForType", "line_range": [ - 926, - 1053 + 4245, + 4399 ], "class_name": "Checker" }, - "description": "analyze return statements; validate return types against annotations" + "description": "report deprecated type usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitYield", - "name": "Checker.visitYield", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitYield", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDuplicateImports", + "name": "Checker._reportDuplicateImports", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDuplicateImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitYield", + "func_name": "_reportDuplicateImports", "line_range": [ - 1055, - 1065 + 7597, + 7637 ], "class_name": "Checker" }, - "description": "analyze yield expressions; validate yield compatibility with returns" + "description": "report duplicate imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitYieldFrom", - "name": "Checker.visitYieldFrom", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitYieldFrom", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportFinalInLoop", + "name": "Checker._reportFinalInLoop", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportFinalInLoop", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitYieldFrom", + "func_name": "_reportFinalInLoop", "line_range": [ - 1067, - 1097 + 3269, + 3286 ], "class_name": "Checker" }, - "description": "analyze yield from expressions; validate generator delegation types" + "description": "report final loop declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitRaise", - "name": "Checker.visitRaise", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitRaise", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportIncompatibleDeclarations", + "name": "Checker._reportIncompatibleDeclarations", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportIncompatibleDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitRaise", + "func_name": "_reportIncompatibleDeclarations", "line_range": [ - 1099, - 1109 + 3468, + 3693 ], "class_name": "Checker" }, - "description": "analyze raise statements; validate exception types" + "description": "report incompatible declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitExcept", - "name": "Checker.visitExcept", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitExcept", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportInvalidOverload", + "name": "Checker._reportInvalidOverload", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportInvalidOverload", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitExcept", + "func_name": "_reportInvalidOverload", "line_range": [ - 1111, - 1122 + 3133, + 3267 ], "class_name": "Checker" }, - "description": "analyze except clauses; validate exception handler reachability" + "description": "report invalid overloads" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAssert", - "name": "Checker.visitAssert", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAssert", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportMultipleFinalDeclarations", + "name": "Checker._reportMultipleFinalDeclarations", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportMultipleFinalDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitAssert", + "func_name": "_reportMultipleFinalDeclarations", "line_range": [ - 1124, - 1151 + 3351, + 3448 ], "class_name": "Checker" }, - "description": "analyze assert statements; report unnecessary assertions" + "description": "report duplicate final declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAssignment", - "name": "Checker.visitAssignment", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportMultipleTypeAliasDeclarations", + "name": "Checker._reportMultipleTypeAliasDeclarations", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportMultipleTypeAliasDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitAssignment", + "func_name": "_reportMultipleTypeAliasDeclarations", "line_range": [ - 1153, - 1194 + 3450, + 3466 ], "class_name": "Checker" }, - "description": "analyze assignment statements; validate assigned value types" + "description": "report duplicate type aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAssignmentExpression", - "name": "Checker.visitAssignmentExpression", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAssignmentExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportOverwriteOfBuiltinsFinal", + "name": "Checker._reportOverwriteOfBuiltinsFinal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportOverwriteOfBuiltinsFinal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitAssignmentExpression", + "func_name": "_reportOverwriteOfBuiltinsFinal", "line_range": [ - 1196, - 1199 + 3326, + 3348 ], "class_name": "Checker" }, - "description": "analyze assignment expressions for types" + "description": "report builtin final overwrites" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAugmentedAssignment", - "name": "Checker.visitAugmentedAssignment", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAugmentedAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportOverwriteOfImportedFinal", + "name": "Checker._reportOverwriteOfImportedFinal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportOverwriteOfImportedFinal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitAugmentedAssignment", + "func_name": "_reportOverwriteOfImportedFinal", "line_range": [ - 1201, - 1206 + 3291, + 3322 ], "class_name": "Checker" }, - "description": "analyze augmented assignment operations; validate augmented operand types" + "description": "report imported final overwrites" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitIndex", - "name": "Checker.visitIndex", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitIndex", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnboundName", + "name": "Checker._reportUnboundName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnboundName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitIndex", + "func_name": "_reportUnboundName", "line_range": [ - 1208, - 1269 + 4414, + 4445 ], "class_name": "Checker" }, - "description": "analyze indexing operations; validate index and target types" + "description": "report unbound names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitBinaryOperation", - "name": "Checker.visitBinaryOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitBinaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnknownReturnResult", + "name": "Checker._reportUnknownReturnResult", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnknownReturnResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitBinaryOperation", + "func_name": "_reportUnknownReturnResult", "line_range": [ - 1271, - 1293 + 4819, + 4835 ], "class_name": "Checker" }, - "description": "analyze binary operations; validate operand type compatibility" + "description": "report unknown return types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitSlice", - "name": "Checker.visitSlice", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitSlice", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnnecessaryConditionExpression", + "name": "Checker._reportUnnecessaryConditionExpression", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnnecessaryConditionExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitSlice", + "func_name": "_reportUnnecessaryConditionExpression", "line_range": [ - 1295, - 1298 + 1896, + 1943 ], "class_name": "Checker" }, - "description": "analyze slice expressions" + "description": "report unnecessary conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitUnpack", - "name": "Checker.visitUnpack", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitUnpack", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedDunderAllSymbols", + "name": "Checker._reportUnusedDunderAllSymbols", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedDunderAllSymbols", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitUnpack", + "func_name": "_reportUnusedDunderAllSymbols", "line_range": [ - 1300, - 1303 + 3065, + 3085 ], "class_name": "Checker" }, - "description": "analyze unpack operations; validate unpack target counts" + "description": "report unused exported names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTuple", - "name": "Checker.visitTuple", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedExceptStatements", + "name": "Checker._reportUnusedExceptStatements", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedExceptStatements", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTuple", + "func_name": "_reportUnusedExceptStatements", "line_range": [ - 1305, - 1308 + 7498, + 7595 ], "class_name": "Checker" }, - "description": "analyze tuple literal types" + "description": "report redundant exception clauses" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitUnaryOperation", - "name": "Checker.visitUnaryOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitUnaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedExpression", + "name": "Checker._reportUnusedExpression", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitUnaryOperation", + "func_name": "_reportUnusedExpression", "line_range": [ - 1310, - 1319 + 1945, + 1990 ], "class_name": "Checker" }, - "description": "analyze unary operations" + "description": "report unused expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTernary", - "name": "Checker.visitTernary", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTernary", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedMultipartImports", + "name": "Checker._reportUnusedMultipartImports", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedMultipartImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTernary", + "func_name": "_reportUnusedMultipartImports", "line_range": [ - 1321, - 1326 + 1718, + 1741 ], "class_name": "Checker" }, - "description": "analyze conditional expressions" + "description": "report unused imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitStringList", - "name": "Checker.visitStringList", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitStringList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._suppressUnboundCheck", + "name": "Checker._suppressUnboundCheck", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._suppressUnboundCheck", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitStringList", + "func_name": "_suppressUnboundCheck", "line_range": [ - 1328, - 1416 + 2035, + 2044 ], "class_name": "Checker" }, - "description": "analyze string list literals; evaluate string lists for usage" + "description": "suppress unbound checks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitFormatString", - "name": "Checker.visitFormatString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitFormatString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateBaseClassOverride", + "name": "Checker._validateBaseClassOverride", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateBaseClassOverride", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitFormatString", + "func_name": "_validateBaseClassOverride", "line_range": [ - 1418, - 1428 + 6582, + 6959 ], "class_name": "Checker" }, - "description": "analyze formatted string expressions; validate format expression types" + "description": "validate member override compatibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitGlobal", - "name": "Checker.visitGlobal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitGlobal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateBaseClassOverrides", + "name": "Checker._validateBaseClassOverrides", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateBaseClassOverrides", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitGlobal", + "func_name": "_validateBaseClassOverrides", "line_range": [ - 1430, - 1440 + 6411, + 6477 ], "class_name": "Checker" }, - "description": "process global declarations; mark symbols as module global" + "description": "validate base class overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitNonlocal", - "name": "Checker.visitNonlocal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitNonlocal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateClsSelfParamType", + "name": "Checker._validateClsSelfParamType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateClsSelfParamType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitNonlocal", + "func_name": "_validateClsSelfParamType", "line_range": [ - 1442, - 1454 + 7316, + 7414 ], "class_name": "Checker" }, - "description": "process nonlocal declarations; validate nonlocal symbol resolution" + "description": "validate receiver parameter types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitName", - "name": "Checker.visitName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateComparisonTypes", + "name": "Checker._validateComparisonTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateComparisonTypes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitName", + "func_name": "_validateComparisonTypes", "line_range": [ - 1456, - 1470 + 2126, + 2270 ], "class_name": "Checker" }, - "description": "resolve name references; report unbound name references" + "description": "validate comparison operations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitDel", - "name": "Checker.visitDel", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitDel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateConditionalIsBool", + "name": "Checker._validateConditionalIsBool", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateConditionalIsBool", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitDel", + "func_name": "_validateConditionalIsBool", "line_range": [ - 1472, - 1480 + 1837, + 1894 ], "class_name": "Checker" }, - "description": "analyze deletion statements; validate deletion targets" + "description": "validate boolean conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitMemberAccess", - "name": "Checker.visitMemberAccess", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitMemberAccess", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateConstructorConsistency", + "name": "Checker._validateConstructorConsistency", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateConstructorConsistency", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitMemberAccess", + "func_name": "_validateConstructorConsistency", "line_range": [ - 1482, - 1501 + 5504, + 5643 ], "class_name": "Checker" }, - "description": "analyze attribute access; validate member existence and types" + "description": "validate constructor consistency" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitImportAs", - "name": "Checker.visitImportAs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitImportAs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateContainmentTypes", + "name": "Checker._validateContainmentTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateContainmentTypes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitImportAs", + "func_name": "_validateContainmentTypes", "line_range": [ - 1503, - 1512 + 2083, + 2122 ], "class_name": "Checker" }, - "description": "analyze import alias statements; record imported symbol usage" + "description": "validate containment operations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitImportFrom", - "name": "Checker.visitImportFrom", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitImportFrom", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateDataClassPostInit", + "name": "Checker._validateDataClassPostInit", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateDataClassPostInit", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitImportFrom", + "func_name": "_validateDataClassPostInit", "line_range": [ - 1514, - 1554 + 5050, + 5159 ], "class_name": "Checker" }, - "description": "analyze from import statements; resolve imported module members" + "description": "validate dataclass post initialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitImportFromAs", - "name": "Checker.visitImportFromAs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitImportFromAs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateDunderSignatures", + "name": "Checker._validateDunderSignatures", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateDunderSignatures", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitImportFromAs", + "func_name": "_validateDunderSignatures", "line_range": [ - 1556, - 1601 + 4690, + 4721 ], "class_name": "Checker" }, - "description": "analyze aliased from imports; track alias and usage" + "description": "validate special method signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitModuleName", - "name": "Checker.visitModuleName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateEnumClassOverride", + "name": "Checker._validateEnumClassOverride", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateEnumClassOverride", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitModuleName", + "func_name": "_validateEnumClassOverride", "line_range": [ - 1603, - 1613 + 4582, + 4592 ], "class_name": "Checker" }, - "description": "resolve module name references" + "description": "validate enum class overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeParameterList", - "name": "Checker.visitTypeParameterList", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeParameterList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateEnumMembers", + "name": "Checker._validateEnumMembers", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateEnumMembers", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTypeParameterList", + "func_name": "_validateEnumMembers", "line_range": [ - 1615, - 1618 + 4880, + 5046 ], "class_name": "Checker" }, - "description": "process type parameter lists" + "description": "validate enum members" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeParameter", - "name": "Checker.visitTypeParameter", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeParameter", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateExceptionType", + "name": "Checker._validateExceptionType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateExceptionType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTypeParameter", + "func_name": "_validateExceptionType", "line_range": [ - 1620, - 1660 + 3040, + 3063 ], "class_name": "Checker" }, - "description": "analyze type parameter declaration; validate variance and constraints" + "description": "validate exception types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeAlias", - "name": "Checker.visitTypeAlias", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateExceptionTypeRecursive", + "name": "Checker._validateExceptionTypeRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateExceptionTypeRecursive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTypeAlias", + "func_name": "_validateExceptionTypeRecursive", "line_range": [ - 1662, - 1675 + 2972, + 3038 ], "class_name": "Checker" }, - "description": "analyze type alias declarations" + "description": "validate nested exception types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeAnnotation", - "name": "Checker.visitTypeAnnotation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateExhaustiveMatch", + "name": "Checker._validateExhaustiveMatch", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateExhaustiveMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTypeAnnotation", + "func_name": "_validateExhaustiveMatch", "line_range": [ - 1677, - 1680 + 2008, + 2033 ], "class_name": "Checker" }, - "description": "analyze type annotation expressions" + "description": "validate exhaustive matches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitMatch", - "name": "Checker.visitMatch", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFinalClassNotAbstract", + "name": "Checker._validateFinalClassNotAbstract", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFinalClassNotAbstract", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitMatch", + "func_name": "_validateFinalClassNotAbstract", "line_range": [ - 1682, - 1686 + 5163, + 5207 ], "class_name": "Checker" }, - "description": "analyze match statements; validate pattern exhaustiveness" + "description": "validate final abstract classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitCase", - "name": "Checker.visitCase", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitCase", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFinalMemberOverrides", + "name": "Checker._validateFinalMemberOverrides", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFinalMemberOverrides", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitCase", + "func_name": "_validateFinalMemberOverrides", "line_range": [ - 1688, - 1695 + 4839, + 4876 ], "class_name": "Checker" }, - "description": "analyze match case patterns; validate case pattern types" + "description": "validate final member overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitPatternClass", - "name": "Checker.visitPatternClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitPatternClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFunctionReturn", + "name": "Checker._validateFunctionReturn", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFunctionReturn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitPatternClass", + "func_name": "_validateFunctionReturn", "line_range": [ - 1697, - 1700 + 4723, + 4795 ], "class_name": "Checker" }, - "description": "analyze class pattern usage" + "description": "validate function returns" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTry", - "name": "Checker.visitTry", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTry", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFunctionTypeVarUsage", + "name": "Checker._validateFunctionTypeVarUsage", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFunctionTypeVarUsage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitTry", + "func_name": "_validateFunctionTypeVarUsage", "line_range": [ - 1702, - 1705 + 2338, + 2576 ], "class_name": "Checker" }, - "description": "analyze try except finally blocks; validate exception handling flow" + "description": "validate function type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitError", - "name": "Checker.visitError", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitError", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateGeneratorReturnType", + "name": "Checker._validateGeneratorReturnType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateGeneratorReturnType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "visitError", + "func_name": "_validateGeneratorReturnType", "line_range": [ - 1707, - 1716 + 2274, + 2329 ], "class_name": "Checker" }, - "description": "handle parse tree errors" + "description": "validate generator return types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedMultipartImports", - "name": "Checker._reportUnusedMultipartImports", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedMultipartImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateIllegalDefaultParamInitializer", + "name": "Checker._validateIllegalDefaultParamInitializer", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateIllegalDefaultParamInitializer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnusedMultipartImports", + "func_name": "_validateIllegalDefaultParamInitializer", "line_range": [ - 1718, - 1741 + 2046, + 2056 ], "class_name": "Checker" }, - "description": "report unused multipart imports" + "description": "validate default parameter values" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isMultipartImportUnused", - "name": "Checker._isMultipartImportUnused", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isMultipartImportUnused", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateInstanceVariableInitialization", + "name": "Checker._validateInstanceVariableInitialization", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateInstanceVariableInitialization", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isMultipartImportUnused", + "func_name": "_validateInstanceVariableInitialization", "line_range": [ - 1743, - 1782 + 5211, + 5362 ], "class_name": "Checker" }, - "description": "determine multipart import usage" + "description": "validate instance variable initialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._getImportResult", - "name": "Checker._getImportResult", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._getImportResult", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateIsInstanceCall", + "name": "Checker._validateIsInstanceCall", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateIsInstanceCall", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_getImportResult", + "func_name": "_validateIsInstanceCall", "line_range": [ - 1784, - 1808 + 3882, + 4036 ], "class_name": "Checker" }, - "description": "resolve import module result" + "description": "validate instance checks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._addMissingModuleSourceDiagnosticIfNeeded", - "name": "Checker._addMissingModuleSourceDiagnosticIfNeeded", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._addMissingModuleSourceDiagnosticIfNeeded", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMethod", + "name": "Checker._validateMethod", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMethod", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_addMissingModuleSourceDiagnosticIfNeeded", + "func_name": "_validateMethod", "line_range": [ - 1810, - 1830 + 7119, + 7247 ], "class_name": "Checker" }, - "description": "report missing module source diagnostic" + "description": "validate method definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateConditionalIsBool", - "name": "Checker._validateConditionalIsBool", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateConditionalIsBool", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritanceBaseClasses", + "name": "Checker._validateMultipleInheritanceBaseClasses", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritanceBaseClasses", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateConditionalIsBool", + "func_name": "_validateMultipleInheritanceBaseClasses", "line_range": [ - 1832, - 1889 + 5647, + 5730 ], "class_name": "Checker" }, - "description": "ensure conditional expressions are boolean" + "description": "validate inherited base classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnnecessaryConditionExpression", - "name": "Checker._reportUnnecessaryConditionExpression", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnnecessaryConditionExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritanceCompatibility", + "name": "Checker._validateMultipleInheritanceCompatibility", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritanceCompatibility", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnnecessaryConditionExpression", + "func_name": "_validateMultipleInheritanceCompatibility", "line_range": [ - 1891, - 1938 + 5734, + 5819 ], "class_name": "Checker" }, - "description": "flag unnecessary conditional expressions" + "description": "validate inheritance compatibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedExpression", - "name": "Checker._reportUnusedExpression", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritanceOverride", + "name": "Checker._validateMultipleInheritanceOverride", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritanceOverride", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnusedExpression", + "func_name": "_validateMultipleInheritanceOverride", "line_range": [ - 1940, - 1985 + 5821, + 6016 ], "class_name": "Checker" }, - "description": "report unused expression results" + "description": "validate inherited member overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateNonlocalTypeParam", - "name": "Checker._validateNonlocalTypeParam", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateNonlocalTypeParam", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritancePropertyOverride", + "name": "Checker._validateMultipleInheritancePropertyOverride", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritancePropertyOverride", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateNonlocalTypeParam", + "func_name": "_validateMultipleInheritancePropertyOverride", "line_range": [ - 1989, - 2001 + 6046, + 6162 ], "class_name": "Checker" }, - "description": "validate nonlocal type parameter usage" + "description": "validate inherited property overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateExhaustiveMatch", - "name": "Checker._validateExhaustiveMatch", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateExhaustiveMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateNonlocalTypeParam", + "name": "Checker._validateNonlocalTypeParam", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateNonlocalTypeParam", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateExhaustiveMatch", + "func_name": "_validateNonlocalTypeParam", "line_range": [ - 2003, - 2028 + 1994, + 2006 ], "class_name": "Checker" }, - "description": "validate match statement exhaustiveness" + "description": "validate nonlocal type parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._suppressUnboundCheck", - "name": "Checker._suppressUnboundCheck", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._suppressUnboundCheck", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateNotDataProtocol", + "name": "Checker._validateNotDataProtocol", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateNotDataProtocol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_suppressUnboundCheck", + "func_name": "_validateNotDataProtocol", "line_range": [ - 2030, - 2039 + 4161, + 4169 ], "class_name": "Checker" }, - "description": "determine unbound check suppression" + "description": "validate protocol categories" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateIllegalDefaultParamInitializer", - "name": "Checker._validateIllegalDefaultParamInitializer", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateIllegalDefaultParamInitializer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadAbstractConsistency", + "name": "Checker._validateOverloadAbstractConsistency", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadAbstractConsistency", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateIllegalDefaultParamInitializer", + "func_name": "_validateOverloadAbstractConsistency", "line_range": [ - 2041, - 2051 + 6190, + 6234 ], "class_name": "Checker" }, - "description": "flag illegal default parameter initializers" + "description": "validate overload abstractness" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateStandardCollectionInstantiation", - "name": "Checker._validateStandardCollectionInstantiation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateStandardCollectionInstantiation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadAttributeConsistency", + "name": "Checker._validateOverloadAttributeConsistency", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadAttributeConsistency", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateStandardCollectionInstantiation", + "func_name": "_validateOverloadAttributeConsistency", "line_range": [ - 2053, - 2076 + 2579, + 2635 ], "class_name": "Checker" }, - "description": "validate standard collection instantiation" + "description": "validate overload attributes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateContainmentTypes", - "name": "Checker._validateContainmentTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateContainmentTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadConsistency", + "name": "Checker._validateOverloadConsistency", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadConsistency", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateContainmentTypes", + "func_name": "_validateOverloadConsistency", "line_range": [ - 2078, - 2117 + 2638, + 2695 ], "class_name": "Checker" }, - "description": "validate containment operation types" + "description": "validate overload consistency" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateComparisonTypes", - "name": "Checker._validateComparisonTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateComparisonTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadDecoratorConsistency", + "name": "Checker._validateOverloadDecoratorConsistency", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadDecoratorConsistency", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateComparisonTypes", + "func_name": "_validateOverloadDecoratorConsistency", "line_range": [ - 2121, - 2265 + 6167, + 6188 ], "class_name": "Checker" }, - "description": "validate comparison operand types" + "description": "validate overload decorators" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateGeneratorReturnType", - "name": "Checker._validateGeneratorReturnType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateGeneratorReturnType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadFinalOverride", + "name": "Checker._validateOverloadFinalOverride", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadFinalOverride", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateGeneratorReturnType", + "func_name": "_validateOverloadFinalOverride", "line_range": [ - 2269, - 2324 + 6236, + 6282 ], "class_name": "Checker" }, - "description": "validate generator return type" + "description": "validate overload final overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isTypeValidForUnusedValueTest", - "name": "Checker._isTypeValidForUnusedValueTest", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isTypeValidForUnusedValueTest", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadImplementation", + "name": "Checker._validateOverloadImplementation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadImplementation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isTypeValidForUnusedValueTest", + "func_name": "_validateOverloadImplementation", "line_range": [ - 2328, - 2330 + 2763, + 2829 ], "class_name": "Checker" }, - "description": "check type validity for unused value tests" + "description": "validate overload implementations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFunctionTypeVarUsage", - "name": "Checker._validateFunctionTypeVarUsage", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFunctionTypeVarUsage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverrideDecoratorNotPresent", + "name": "Checker._validateOverrideDecoratorNotPresent", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverrideDecoratorNotPresent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateFunctionTypeVarUsage", + "func_name": "_validateOverrideDecoratorNotPresent", "line_range": [ - 2333, - 2571 + 6540, + 6580 ], "class_name": "Checker" }, - "description": "validate function type variable usage" + "description": "validate unexpected override decorators" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadAttributeConsistency", - "name": "Checker._validateOverloadAttributeConsistency", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadAttributeConsistency", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverrideDecoratorPresent", + "name": "Checker._validateOverrideDecoratorPresent", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverrideDecoratorPresent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverloadAttributeConsistency", + "func_name": "_validateOverrideDecoratorPresent", "line_range": [ - 2574, - 2630 + 6479, + 6529 ], "class_name": "Checker" }, - "description": "ensure overload attribute consistency" + "description": "validate override decorators" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadConsistency", - "name": "Checker._validateOverloadConsistency", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadConsistency", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validatePropertyOverride", + "name": "Checker._validatePropertyOverride", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validatePropertyOverride", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverloadConsistency", + "func_name": "_validatePropertyOverride", "line_range": [ - 2633, - 2690 + 6987, + 7115 ], "class_name": "Checker" }, - "description": "validate overload signature consistency" + "description": "validate property overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._findNodeForOverload", - "name": "Checker._findNodeForOverload", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._findNodeForOverload", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateProtocolTypeParamVariance", + "name": "Checker._validateProtocolTypeParamVariance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateProtocolTypeParamVariance", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_findNodeForOverload", + "func_name": "_validateProtocolTypeParamVariance", "line_range": [ - 2695, - 2711 + 5367, + 5461 ], "class_name": "Checker" }, - "description": "find implementation node for overload" + "description": "validate protocol type variance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isOverlappingOverload", - "name": "Checker._isOverlappingOverload", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isOverlappingOverload", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateReturnTypeIsNotContravariant", + "name": "Checker._validateReturnTypeIsNotContravariant", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateReturnTypeIsNotContravariant", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isOverlappingOverload", + "func_name": "_validateReturnTypeIsNotContravariant", "line_range": [ - 2713, - 2752 + 4797, + 4817 ], "class_name": "Checker" }, - "description": "detect overlapping overload signatures" + "description": "validate return variance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadImplementation", - "name": "Checker._validateOverloadImplementation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadImplementation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateSlotsClassVarConflict", + "name": "Checker._validateSlotsClassVarConflict", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateSlotsClassVarConflict", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverloadImplementation", + "func_name": "_validateSlotsClassVarConflict", "line_range": [ - 2758, - 2824 + 5465, + 5501 ], "class_name": "Checker" }, - "description": "validate overload implementation signature" + "description": "validate slot variable conflicts" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._walkStatementsAndReportUnreachable", - "name": "Checker._walkStatementsAndReportUnreachable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._walkStatementsAndReportUnreachable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateStandardCollectionInstantiation", + "name": "Checker._validateStandardCollectionInstantiation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateStandardCollectionInstantiation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_walkStatementsAndReportUnreachable", + "func_name": "_validateStandardCollectionInstantiation", "line_range": [ - 2826, - 2871 + 2058, + 2081 ], "class_name": "Checker" }, - "description": "detect and report unreachable statements" + "description": "validate collection instantiation" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateStubStatement", @@ -4733,1004 +4733,1004 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", "func_name": "_validateStubStatement", "line_range": [ - 2873, - 2965 + 2878, + 2970 ], "class_name": "Checker" }, - "description": "validate stub file statements" + "description": "validate stub statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateExceptionTypeRecursive", - "name": "Checker._validateExceptionTypeRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateExceptionTypeRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateSuperCallForMethod", + "name": "Checker._validateSuperCallForMethod", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateSuperCallForMethod", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateExceptionTypeRecursive", + "func_name": "_validateSuperCallForMethod", "line_range": [ - 2967, - 3033 + 7251, + 7312 ], "class_name": "Checker" }, - "description": "recursively validate exception type expressions" + "description": "validate superclass calls" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateExceptionType", - "name": "Checker._validateExceptionType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateExceptionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateSymbolTables", + "name": "Checker._validateSymbolTables", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateSymbolTables", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateExceptionType", + "func_name": "_validateSymbolTables", "line_range": [ - 3035, - 3058 + 3087, + 3131 ], "class_name": "Checker" }, - "description": "validate exception type expressions" + "description": "validate symbol tables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedDunderAllSymbols", - "name": "Checker._reportUnusedDunderAllSymbols", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedDunderAllSymbols", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateTypedDictClassSuite", + "name": "Checker._validateTypedDictClassSuite", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateTypedDictClassSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnusedDunderAllSymbols", + "func_name": "_validateTypedDictClassSuite", "line_range": [ - 3060, - 3080 + 4597, + 4620 ], "class_name": "Checker" }, - "description": "report unused module export symbols" + "description": "validate typed dictionary classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateSymbolTables", - "name": "Checker._validateSymbolTables", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateSymbolTables", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateTypedDictOverrides", + "name": "Checker._validateTypedDictOverrides", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateTypedDictOverrides", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateSymbolTables", + "func_name": "_validateTypedDictOverrides", "line_range": [ - 3082, - 3126 + 6287, + 6406 ], "class_name": "Checker" }, - "description": "validate symbols in all scopes" + "description": "validate typed dictionary overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportInvalidOverload", - "name": "Checker._reportInvalidOverload", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportInvalidOverload", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateTypeGuardFunction", + "name": "Checker._validateTypeGuardFunction", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateTypeGuardFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportInvalidOverload", + "func_name": "_validateTypeGuardFunction", "line_range": [ - 3128, - 3262 + 4622, + 4688 ], "class_name": "Checker" }, - "description": "report invalid overload declarations" + "description": "validate type guard functions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportFinalInLoop", - "name": "Checker._reportFinalInLoop", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportFinalInLoop", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateUnsafeProtocolOverlap", + "name": "Checker._validateUnsafeProtocolOverlap", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateUnsafeProtocolOverlap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportFinalInLoop", + "func_name": "_validateUnsafeProtocolOverlap", "line_range": [ - 3264, - 3281 + 4038, + 4068 ], "class_name": "Checker" }, - "description": "flag final used inside loops" + "description": "validate protocol overlap" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportOverwriteOfImportedFinal", - "name": "Checker._reportOverwriteOfImportedFinal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportOverwriteOfImportedFinal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateYieldType", + "name": "Checker._validateYieldType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateYieldType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportOverwriteOfImportedFinal", + "func_name": "_validateYieldType", "line_range": [ - 3286, - 3317 + 7418, + 7494 ], "class_name": "Checker" }, - "description": "report overwrite of imported final variables" + "description": "validate yielded value types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportOverwriteOfBuiltinsFinal", - "name": "Checker._reportOverwriteOfBuiltinsFinal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportOverwriteOfBuiltinsFinal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._walkStatementsAndReportUnreachable", + "name": "Checker._walkStatementsAndReportUnreachable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._walkStatementsAndReportUnreachable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportOverwriteOfBuiltinsFinal", + "func_name": "_walkStatementsAndReportUnreachable", "line_range": [ - 3321, - 3343 + 2831, + 2876 ], "class_name": "Checker" }, - "description": "report overwrite of builtin final variables" + "description": "report unreachable statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportMultipleFinalDeclarations", - "name": "Checker._reportMultipleFinalDeclarations", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportMultipleFinalDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.check", + "name": "Checker.check", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.check", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportMultipleFinalDeclarations", + "func_name": "check", "line_range": [ - 3346, - 3443 + 244, + 282 ], "class_name": "Checker" }, - "description": "report multiple final declarations" + "description": "validate module semantics; report module diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportMultipleTypeAliasDeclarations", - "name": "Checker._reportMultipleTypeAliasDeclarations", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportMultipleTypeAliasDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAssert", + "name": "Checker.visitAssert", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAssert", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportMultipleTypeAliasDeclarations", + "func_name": "visitAssert", "line_range": [ - 3445, - 3461 + 1124, + 1151 ], "class_name": "Checker" }, - "description": "report duplicate type alias declarations" + "description": "validate assertion statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportIncompatibleDeclarations", - "name": "Checker._reportIncompatibleDeclarations", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportIncompatibleDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAssignment", + "name": "Checker.visitAssignment", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAssignment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportIncompatibleDeclarations", + "func_name": "visitAssignment", "line_range": [ - 3463, - 3688 + 1153, + 1194 ], "class_name": "Checker" }, - "description": "report incompatible declarations" + "description": "validate assignments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._conditionallyReportUnusedSymbol", - "name": "Checker._conditionallyReportUnusedSymbol", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._conditionallyReportUnusedSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAssignmentExpression", + "name": "Checker.visitAssignmentExpression", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAssignmentExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_conditionallyReportUnusedSymbol", + "func_name": "visitAssignmentExpression", "line_range": [ - 3690, - 3721 + 1196, + 1199 ], "class_name": "Checker" }, - "description": "conditionally report unused symbols" + "description": "validate assignment expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._conditionallyReportUnusedDeclaration", - "name": "Checker._conditionallyReportUnusedDeclaration", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._conditionallyReportUnusedDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAugmentedAssignment", + "name": "Checker.visitAugmentedAssignment", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAugmentedAssignment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_conditionallyReportUnusedDeclaration", + "func_name": "visitAugmentedAssignment", "line_range": [ - 3723, - 3872 + 1201, + 1206 ], "class_name": "Checker" }, - "description": "conditionally report unused declarations" + "description": "validate augmented assignments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateIsInstanceCall", - "name": "Checker._validateIsInstanceCall", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateIsInstanceCall", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitAwait", + "name": "Checker.visitAwait", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitAwait", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateIsInstanceCall", + "func_name": "visitAwait", "line_range": [ - 3877, - 4031 + 837, + 855 ], "class_name": "Checker" }, - "description": "validate isinstance call semantics" + "description": "validate await expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateUnsafeProtocolOverlap", - "name": "Checker._validateUnsafeProtocolOverlap", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateUnsafeProtocolOverlap", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitBinaryOperation", + "name": "Checker.visitBinaryOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitBinaryOperation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateUnsafeProtocolOverlap", + "func_name": "visitBinaryOperation", "line_range": [ - 4033, - 4063 + 1271, + 1293 ], "class_name": "Checker" }, - "description": "detect unsafe protocol overlaps" + "description": "validate binary operations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isTypeSupportedTypeForIsInstance", - "name": "Checker._isTypeSupportedTypeForIsInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isTypeSupportedTypeForIsInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitCall", + "name": "Checker.visitCall", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitCall", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isTypeSupportedTypeForIsInstance", + "func_name": "visitCall", "line_range": [ - 4067, - 4154 + 795, + 835 ], "class_name": "Checker" }, - "description": "identify types supported by isinstance" + "description": "validate call expressions; check instance tests" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateNotDataProtocol", - "name": "Checker._validateNotDataProtocol", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateNotDataProtocol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitCase", + "name": "Checker.visitCase", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitCase", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateNotDataProtocol", + "func_name": "visitCase", "line_range": [ - 4156, - 4164 + 1688, + 1695 ], "class_name": "Checker" }, - "description": "ensure type not data protocol" + "description": "validate match cases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isSymbolPrivate", - "name": "Checker._isSymbolPrivate", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isSymbolPrivate", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitClass", + "name": "Checker.visitClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isSymbolPrivate", + "func_name": "visitClass", "line_range": [ - 4166, - 4185 + 314, + 397 ], "class_name": "Checker" }, - "description": "determine symbol privacy" + "description": "validate class definitions; verify inheritance rules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedClassProperty", - "name": "Checker._reportDeprecatedClassProperty", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedClassProperty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitComprehension", + "name": "Checker.visitComprehension", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitComprehension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportDeprecatedClassProperty", + "func_name": "visitComprehension", "line_range": [ - 4187, - 4196 + 886, + 889 ], "class_name": "Checker" }, - "description": "report deprecated class property usage" + "description": "validate comprehension expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedUseForMemberAccess", - "name": "Checker._reportDeprecatedUseForMemberAccess", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedUseForMemberAccess", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitComprehensionIf", + "name": "Checker.visitComprehensionIf", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitComprehensionIf", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportDeprecatedUseForMemberAccess", + "func_name": "visitComprehensionIf", "line_range": [ - 4198, - 4222 + 891, + 895 ], "class_name": "Checker" }, - "description": "report deprecated member access" + "description": "validate comprehension conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedUseForOperation", - "name": "Checker._reportDeprecatedUseForOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedUseForOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitDel", + "name": "Checker.visitDel", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitDel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportDeprecatedUseForOperation", + "func_name": "visitDel", "line_range": [ - 4224, - 4238 + 1472, + 1480 ], "class_name": "Checker" }, - "description": "report deprecated operation usage" + "description": "validate deletion targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedUseForType", - "name": "Checker._reportDeprecatedUseForType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedUseForType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitDictionary", + "name": "Checker.visitDictionary", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitDictionary", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportDeprecatedUseForType", + "func_name": "visitDictionary", "line_range": [ - 4240, - 4394 + 881, + 884 ], "class_name": "Checker" }, - "description": "report deprecated type usage" + "description": "validate dictionary expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDeprecatedDiagnostic", - "name": "Checker._reportDeprecatedDiagnostic", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDeprecatedDiagnostic", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitError", + "name": "Checker.visitError", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportDeprecatedDiagnostic", + "func_name": "visitError", "line_range": [ - 4396, - 4407 + 1707, + 1716 ], "class_name": "Checker" }, - "description": "emit deprecation diagnostic" + "description": "report parse errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnboundName", - "name": "Checker._reportUnboundName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnboundName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitExcept", + "name": "Checker.visitExcept", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitExcept", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnboundName", + "func_name": "visitExcept", "line_range": [ - 4409, - 4440 + 1111, + 1122 ], "class_name": "Checker" }, - "description": "report unbound name errors" + "description": "validate exception clauses" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._conditionallyReportPrivateUsage", - "name": "Checker._conditionallyReportPrivateUsage", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._conditionallyReportPrivateUsage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitFor", + "name": "Checker.visitFor", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitFor", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_conditionallyReportPrivateUsage", + "func_name": "visitFor", "line_range": [ - 4442, - 4573 + 857, + 869 ], "class_name": "Checker" }, - "description": "conditionally report private symbol usage" + "description": "validate loop variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateEnumClassOverride", - "name": "Checker._validateEnumClassOverride", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateEnumClassOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitFormatString", + "name": "Checker.visitFormatString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitFormatString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateEnumClassOverride", + "func_name": "visitFormatString", "line_range": [ - 4577, - 4587 + 1418, + 1428 ], "class_name": "Checker" }, - "description": "validate enum class override rules" + "description": "validate formatted strings" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateTypedDictClassSuite", - "name": "Checker._validateTypedDictClassSuite", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateTypedDictClassSuite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitFunction", + "name": "Checker.visitFunction", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateTypedDictClassSuite", + "func_name": "visitFunction", "line_range": [ - 4592, - 4615 + 399, + 742 ], "class_name": "Checker" }, - "description": "validate typed dict class suite" + "description": "validate function definitions; verify parameter types; check overload declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateTypeGuardFunction", - "name": "Checker._validateTypeGuardFunction", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateTypeGuardFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitGlobal", + "name": "Checker.visitGlobal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitGlobal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateTypeGuardFunction", + "func_name": "visitGlobal", "line_range": [ - 4617, - 4683 + 1430, + 1440 ], "class_name": "Checker" }, - "description": "validate type guard function semantics" + "description": "validate global declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateDunderSignatures", - "name": "Checker._validateDunderSignatures", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateDunderSignatures", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitIf", + "name": "Checker.visitIf", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitIf", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateDunderSignatures", + "func_name": "visitIf", "line_range": [ - 4685, - 4716 + 897, + 901 ], "class_name": "Checker" }, - "description": "validate special method signatures" + "description": "validate conditional branches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFunctionReturn", - "name": "Checker._validateFunctionReturn", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFunctionReturn", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitImportAs", + "name": "Checker.visitImportAs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitImportAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateFunctionReturn", + "func_name": "visitImportAs", "line_range": [ - 4718, - 4790 + 1503, + 1512 ], "class_name": "Checker" }, - "description": "validate declared function return types" + "description": "validate import aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateReturnTypeIsNotContravariant", - "name": "Checker._validateReturnTypeIsNotContravariant", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateReturnTypeIsNotContravariant", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitImportFrom", + "name": "Checker.visitImportFrom", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitImportFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateReturnTypeIsNotContravariant", + "func_name": "visitImportFrom", "line_range": [ - 4792, - 4812 + 1514, + 1554 ], "class_name": "Checker" }, - "description": "ensure return type not contravariant" + "description": "validate imported modules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnknownReturnResult", - "name": "Checker._reportUnknownReturnResult", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnknownReturnResult", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitImportFromAs", + "name": "Checker.visitImportFromAs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitImportFromAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnknownReturnResult", + "func_name": "visitImportFromAs", "line_range": [ - 4814, - 4830 + 1556, + 1601 ], "class_name": "Checker" }, - "description": "report unknown return value usages" + "description": "validate imported symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFinalMemberOverrides", - "name": "Checker._validateFinalMemberOverrides", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFinalMemberOverrides", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitIndex", + "name": "Checker.visitIndex", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitIndex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateFinalMemberOverrides", + "func_name": "visitIndex", "line_range": [ - 4834, - 4871 + 1208, + 1269 ], "class_name": "Checker" }, - "description": "validate overrides of final members" + "description": "validate index expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateEnumMembers", - "name": "Checker._validateEnumMembers", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateEnumMembers", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitLambda", + "name": "Checker.visitLambda", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitLambda", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateEnumMembers", + "func_name": "visitLambda", "line_range": [ - 4875, - 5041 + 744, + 793 ], "class_name": "Checker" }, - "description": "validate enum member definitions" + "description": "validate lambda expressions; verify lambda return types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateDataClassPostInit", - "name": "Checker._validateDataClassPostInit", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateDataClassPostInit", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitList", + "name": "Checker.visitList", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateDataClassPostInit", + "func_name": "visitList", "line_range": [ - 5045, - 5154 + 871, + 874 ], "class_name": "Checker" }, - "description": "validate dataclass post init behavior" + "description": "validate list expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateFinalClassNotAbstract", - "name": "Checker._validateFinalClassNotAbstract", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateFinalClassNotAbstract", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitMatch", + "name": "Checker.visitMatch", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateFinalClassNotAbstract", + "func_name": "visitMatch", "line_range": [ - 5158, - 5202 + 1682, + 1686 ], "class_name": "Checker" }, - "description": "ensure final class is not abstract" + "description": "validate pattern matching" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateInstanceVariableInitialization", - "name": "Checker._validateInstanceVariableInitialization", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateInstanceVariableInitialization", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitMemberAccess", + "name": "Checker.visitMemberAccess", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitMemberAccess", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateInstanceVariableInitialization", + "func_name": "visitMemberAccess", "line_range": [ - 5206, - 5357 + 1482, + 1501 ], "class_name": "Checker" }, - "description": "validate instance variable initialization" + "description": "validate member access" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateProtocolTypeParamVariance", - "name": "Checker._validateProtocolTypeParamVariance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateProtocolTypeParamVariance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitModuleName", + "name": "Checker.visitModuleName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateProtocolTypeParamVariance", + "func_name": "visitModuleName", "line_range": [ - 5362, - 5456 + 1603, + 1613 ], "class_name": "Checker" }, - "description": "validate protocol type parameter variance" + "description": "validate module references" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateSlotsClassVarConflict", - "name": "Checker._validateSlotsClassVarConflict", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateSlotsClassVarConflict", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitName", + "name": "Checker.visitName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateSlotsClassVarConflict", + "func_name": "visitName", "line_range": [ - 5460, - 5496 + 1456, + 1470 ], "class_name": "Checker" }, - "description": "detect slots and class var conflicts" + "description": "validate name references" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateConstructorConsistency", - "name": "Checker._validateConstructorConsistency", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateConstructorConsistency", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitNonlocal", + "name": "Checker.visitNonlocal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitNonlocal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateConstructorConsistency", + "func_name": "visitNonlocal", "line_range": [ - 5499, - 5638 + 1442, + 1454 ], "class_name": "Checker" }, - "description": "validate constructor signature consistency" + "description": "validate nonlocal declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritanceBaseClasses", - "name": "Checker._validateMultipleInheritanceBaseClasses", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritanceBaseClasses", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitPatternClass", + "name": "Checker.visitPatternClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitPatternClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateMultipleInheritanceBaseClasses", + "func_name": "visitPatternClass", "line_range": [ - 5642, - 5725 + 1697, + 1700 ], "class_name": "Checker" }, - "description": "validate multiple inheritance base classes" + "description": "validate class patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritanceCompatibility", - "name": "Checker._validateMultipleInheritanceCompatibility", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritanceCompatibility", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitRaise", + "name": "Checker.visitRaise", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitRaise", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateMultipleInheritanceCompatibility", + "func_name": "visitRaise", "line_range": [ - 5729, - 5814 + 1099, + 1109 ], "class_name": "Checker" }, - "description": "ensure multiple inheritance compatibility" + "description": "validate raised exceptions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritanceOverride", - "name": "Checker._validateMultipleInheritanceOverride", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritanceOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitReturn", + "name": "Checker.visitReturn", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitReturn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateMultipleInheritanceOverride", + "func_name": "visitReturn", "line_range": [ - 5816, - 6011 + 926, + 1053 ], "class_name": "Checker" }, - "description": "validate overrides in multiple inheritance" + "description": "validate return statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._addMultipleInheritanceRelatedInfo", - "name": "Checker._addMultipleInheritanceRelatedInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._addMultipleInheritanceRelatedInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitSet", + "name": "Checker.visitSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_addMultipleInheritanceRelatedInfo", + "func_name": "visitSet", "line_range": [ - 6013, - 6039 + 876, + 879 ], "class_name": "Checker" }, - "description": "add multiple inheritance diagnostic info" + "description": "validate set expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMultipleInheritancePropertyOverride", - "name": "Checker._validateMultipleInheritancePropertyOverride", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMultipleInheritancePropertyOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitSlice", + "name": "Checker.visitSlice", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitSlice", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateMultipleInheritancePropertyOverride", + "func_name": "visitSlice", "line_range": [ - 6041, - 6157 + 1295, + 1298 ], "class_name": "Checker" }, - "description": "validate property overrides across bases" + "description": "validate slice expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadDecoratorConsistency", - "name": "Checker._validateOverloadDecoratorConsistency", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadDecoratorConsistency", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitStatementList", + "name": "Checker.visitStatementList", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitStatementList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverloadDecoratorConsistency", + "func_name": "visitStatementList", "line_range": [ - 6162, - 6183 + 299, + 312 ], "class_name": "Checker" }, - "description": "ensure overload decorator usage consistency" + "description": "evaluate expression statements; report unused expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadAbstractConsistency", - "name": "Checker._validateOverloadAbstractConsistency", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadAbstractConsistency", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitStringList", + "name": "Checker.visitStringList", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitStringList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverloadAbstractConsistency", + "func_name": "visitStringList", "line_range": [ - 6185, - 6229 + 1328, + 1416 ], "class_name": "Checker" }, - "description": "validate overload abstract consistency rules" + "description": "validate string literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverloadFinalOverride", - "name": "Checker._validateOverloadFinalOverride", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverloadFinalOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitSuite", + "name": "Checker.visitSuite", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverloadFinalOverride", + "func_name": "visitSuite", "line_range": [ - 6231, - 6277 + 294, + 297 ], "class_name": "Checker" }, - "description": "validate final override with overloads" + "description": "validate suite reachability" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateTypedDictOverrides", - "name": "Checker._validateTypedDictOverrides", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateTypedDictOverrides", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTernary", + "name": "Checker.visitTernary", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTernary", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateTypedDictOverrides", + "func_name": "visitTernary", "line_range": [ - 6282, - 6401 + 1321, + 1326 ], "class_name": "Checker" }, - "description": "validate typed dict overrides" + "description": "validate ternary expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateBaseClassOverrides", - "name": "Checker._validateBaseClassOverrides", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateBaseClassOverrides", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTry", + "name": "Checker.visitTry", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateBaseClassOverrides", + "func_name": "visitTry", "line_range": [ - 6406, - 6472 + 1702, + 1705 ], "class_name": "Checker" }, - "description": "validate base class override relationships" + "description": "validate exception handling" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverrideDecoratorPresent", - "name": "Checker._validateOverrideDecoratorPresent", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverrideDecoratorPresent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTuple", + "name": "Checker.visitTuple", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTuple", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverrideDecoratorPresent", + "func_name": "visitTuple", "line_range": [ - 6474, - 6524 + 1305, + 1308 ], "class_name": "Checker" }, - "description": "ensure override decorator is present" + "description": "validate tuple expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isMethodExemptFromLsp", - "name": "Checker._isMethodExemptFromLsp", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isMethodExemptFromLsp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeAlias", + "name": "Checker.visitTypeAlias", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isMethodExemptFromLsp", + "func_name": "visitTypeAlias", "line_range": [ - 6527, - 6530 + 1662, + 1675 ], "class_name": "Checker" }, - "description": "determine lsp exemption for method" + "description": "validate type aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateOverrideDecoratorNotPresent", - "name": "Checker._validateOverrideDecoratorNotPresent", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateOverrideDecoratorNotPresent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeAnnotation", + "name": "Checker.visitTypeAnnotation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateOverrideDecoratorNotPresent", + "func_name": "visitTypeAnnotation", "line_range": [ - 6535, - 6575 + 1677, + 1680 ], "class_name": "Checker" }, - "description": "validate absence of override decorator" + "description": "validate type annotations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateBaseClassOverride", - "name": "Checker._validateBaseClassOverride", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateBaseClassOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeParameter", + "name": "Checker.visitTypeParameter", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeParameter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateBaseClassOverride", + "func_name": "visitTypeParameter", "line_range": [ - 6577, - 6954 + 1620, + 1660 ], "class_name": "Checker" }, - "description": "validate single base class override" + "description": "validate type parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._isFinalFunction", - "name": "Checker._isFinalFunction", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._isFinalFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitTypeParameterList", + "name": "Checker.visitTypeParameterList", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitTypeParameterList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_isFinalFunction", + "func_name": "visitTypeParameterList", "line_range": [ - 6956, - 6980 + 1615, + 1618 ], "class_name": "Checker" }, - "description": "determine final function markers" + "description": "track type parameter lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validatePropertyOverride", - "name": "Checker._validatePropertyOverride", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validatePropertyOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitUnaryOperation", + "name": "Checker.visitUnaryOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitUnaryOperation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validatePropertyOverride", + "func_name": "visitUnaryOperation", "line_range": [ - 6982, - 7110 + 1310, + 1319 ], "class_name": "Checker" }, - "description": "validate property override compatibility" + "description": "validate unary operations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateMethod", - "name": "Checker._validateMethod", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateMethod", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitUnpack", + "name": "Checker.visitUnpack", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitUnpack", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateMethod", + "func_name": "visitUnpack", "line_range": [ - 7114, - 7242 + 1300, + 1303 ], "class_name": "Checker" }, - "description": "validate method signature compatibility" + "description": "validate unpack expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateSuperCallForMethod", - "name": "Checker._validateSuperCallForMethod", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateSuperCallForMethod", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitWhile", + "name": "Checker.visitWhile", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitWhile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateSuperCallForMethod", + "func_name": "visitWhile", "line_range": [ - 7246, - 7307 + 903, + 907 ], "class_name": "Checker" }, - "description": "validate super call usage in method" + "description": "validate loop conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateClsSelfParamType", - "name": "Checker._validateClsSelfParamType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateClsSelfParamType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitWith", + "name": "Checker.visitWith", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateClsSelfParamType", + "func_name": "visitWith", "line_range": [ - 7311, - 7409 + 909, + 924 ], "class_name": "Checker" }, - "description": "validate cls self parameter types" + "description": "validate context managers" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._validateYieldType", - "name": "Checker._validateYieldType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._validateYieldType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitYield", + "name": "Checker.visitYield", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitYield", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_validateYieldType", + "func_name": "visitYield", "line_range": [ - 7413, - 7489 + 1055, + 1065 ], "class_name": "Checker" }, - "description": "validate yield type compatibility with return" + "description": "validate yield statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportUnusedExceptStatements", - "name": "Checker._reportUnusedExceptStatements", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportUnusedExceptStatements", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.visitYieldFrom", + "name": "Checker.visitYieldFrom", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.visitYieldFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportUnusedExceptStatements", + "func_name": "visitYieldFrom", "line_range": [ - 7493, - 7590 + 1067, + 1097 ], "class_name": "Checker" }, - "description": "report redundant except clauses" + "description": "validate delegated yields" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker._reportDuplicateImports", - "name": "Checker._reportDuplicateImports", - "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker._reportDuplicateImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::Checker.walk", + "name": "Checker.walk", + "feature_path": "pyright-whole-repo/TypeEvaluation/Manage analyzer runtime/source file state/checker.ts/Checker.walk", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts", - "func_name": "_reportDuplicateImports", + "func_name": "walk", "line_range": [ - 7592, - 7632 + 284, + 292 ], "class_name": "Checker" }, - "description": "report duplicate import statements" + "description": "traverse reachable code; suppress unreachable diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts::__file__", @@ -5795,36 +5795,36 @@ "description": "retrieve stored dependency paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts::CircularDependency.normalizeOrder", - "name": "CircularDependency.normalizeOrder", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/circularDependency.ts/CircularDependency.normalizeOrder", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts::CircularDependency.isEqual", + "name": "CircularDependency.isEqual", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/circularDependency.ts/CircularDependency.isEqual", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts", - "func_name": "normalizeOrder", + "func_name": "isEqual", "line_range": [ - 26, - 39 + 41, + 53 ], "class_name": "CircularDependency" }, - "description": "reorder paths to alphabetical order" + "description": "compare dependency path sequences for equality" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts::CircularDependency.isEqual", - "name": "CircularDependency.isEqual", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/circularDependency.ts/CircularDependency.isEqual", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts::CircularDependency.normalizeOrder", + "name": "CircularDependency.normalizeOrder", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/circularDependency.ts/CircularDependency.normalizeOrder", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts", - "func_name": "isEqual", + "func_name": "normalizeOrder", "line_range": [ - 41, - 53 + 26, + 39 ], "class_name": "CircularDependency" }, - "description": "compare dependency path sequences for equality" + "description": "reorder paths to alphabetical order" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts::__file__", @@ -5836,40 +5836,40 @@ "func_name": "codeFlowEngine", "line_range": [ 1, - 2061 + 2073 ] }, - "description": "Determines narrowed types for variables and expressions and computes statement reachability via the code flow graph" + "description": "Determines flow-sensitive type narrowing and reachability from Pyright control-flow graphs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts::isIncompleteType", - "name": "isIncompleteType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/codeFlowEngine.ts/isIncompleteType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts::getCodeFlowEngine", + "name": "getCodeFlowEngine", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/codeFlowEngine.ts/getCodeFlowEngine", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts", - "func_name": "isIncompleteType", + "func_name": "getCodeFlowEngine", "line_range": [ - 162, - 164 + 203, + 2072 ] }, - "description": "narrow cached type to incomplete type" + "description": "create code flow analyzer; narrow reference type; determine node reachability; narrow constrained type variable; infer no return calls; detect exception swallowing context managers; resolve wildcard import type; print flow analysis graph" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts::getCodeFlowEngine", - "name": "getCodeFlowEngine", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/codeFlowEngine.ts/getCodeFlowEngine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts::isIncompleteType", + "name": "isIncompleteType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/codeFlowEngine.ts/isIncompleteType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts", - "func_name": "getCodeFlowEngine", + "func_name": "isIncompleteType", "line_range": [ - 201, - 2060 + 164, + 166 ] }, - "description": "create code flow analyzer; determine narrowed expression type; cache flow node types; track speculative incomplete types; combine incomplete branch types; determine flow node reachability; prevent reachability recursion; detect no-return calls; infer no-return for functions; analyze exception context managers; resolve wildcard import types; narrow constrained type variables" + "description": "identify incomplete type" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::__file__", @@ -5887,64 +5887,64 @@ "description": "Types and helpers for tracking code-flow nodes and reference keys used in Pyright's code flow analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::getUniqueFlowNodeId", - "name": "getUniqueFlowNodeId", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/getUniqueFlowNodeId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::createKeyForReference", + "name": "createKeyForReference", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/createKeyForReference", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts", - "func_name": "getUniqueFlowNodeId", + "func_name": "createKeyForReference", "line_range": [ - 61, - 63 + 223, + 256 ] }, - "description": "generate unique flow node id" + "description": "create string key for reference; include member names in key path; encode numeric and string indices; report error on unsupported expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::isCodeFlowSupportedForReference", - "name": "isCodeFlowSupportedForReference", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/isCodeFlowSupportedForReference", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::createKeysForReferenceSubexpressions", + "name": "createKeysForReferenceSubexpressions", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/createKeysForReferenceSubexpressions", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts", - "func_name": "isCodeFlowSupportedForReference", + "func_name": "createKeysForReferenceSubexpressions", "line_range": [ - 170, - 221 + 258, + 282 ] }, - "description": "determine reference code flow support; allow simple literal index subscripts; traverse nested left expressions" + "description": "generate keys for reference subexpressions; collect hierarchical keys for member chains; include full reference key as final element" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::createKeyForReference", - "name": "createKeyForReference", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/createKeyForReference", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::getUniqueFlowNodeId", + "name": "getUniqueFlowNodeId", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/getUniqueFlowNodeId", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts", - "func_name": "createKeyForReference", + "func_name": "getUniqueFlowNodeId", "line_range": [ - 223, - 256 + 61, + 63 ] }, - "description": "create string key for reference; include member names in key path; encode numeric and string indices; report error on unsupported expressions" + "description": "generate unique flow node id" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::createKeysForReferenceSubexpressions", - "name": "createKeysForReferenceSubexpressions", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/createKeysForReferenceSubexpressions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts::isCodeFlowSupportedForReference", + "name": "isCodeFlowSupportedForReference", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/codeFlowTypes.ts/isCodeFlowSupportedForReference", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts", - "func_name": "createKeysForReferenceSubexpressions", + "func_name": "isCodeFlowSupportedForReference", "line_range": [ - 258, - 282 + 170, + 221 ] }, - "description": "generate keys for reference subexpressions; collect hierarchical keys for member chains; include full reference key as final element" + "description": "determine reference code flow support; allow simple literal index subscripts; traverse nested left expressions" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts::__file__", @@ -5992,39 +5992,24 @@ "description": "Parses pyright-specific comments to adjust diagnostic rule settings and collect comment diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::getFileLevelDirectives", - "name": "getFileLevelDirectives", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/getFileLevelDirectives", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_applyBasicRules", + "name": "_applyBasicRules", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_applyBasicRules", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "getFileLevelDirectives", + "func_name": "_applyBasicRules", "line_range": [ - 40, - 77 + 87, + 89 ] }, - "description": "derive file diagnostic rules; apply strict diagnostic rules; parse inline pyright comments; emit comment diagnostics" + "description": "overwrite diagnostic rules with basic set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_applyStrictRules", - "name": "_applyStrictRules", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_applyStrictRules", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "_applyStrictRules", - "line_range": [ - 79, - 81 - ] - }, - "description": "override diagnostic rules with strict set" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_applyStandardRules", - "name": "_applyStandardRules", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_applyStandardRules", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_applyStandardRules", + "name": "_applyStandardRules", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_applyStandardRules", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", @@ -6037,19 +6022,19 @@ "description": "overwrite diagnostic rules with standard set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_applyBasicRules", - "name": "_applyBasicRules", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_applyBasicRules", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_applyStrictRules", + "name": "_applyStrictRules", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_applyStrictRules", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "_applyBasicRules", + "func_name": "_applyStrictRules", "line_range": [ - 87, - 89 + 79, + 81 ] }, - "description": "overwrite diagnostic rules with basic set" + "description": "override diagnostic rules with strict set" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_overrideRules", @@ -6082,64 +6067,64 @@ "description": "overwrite diagnostic rules with given set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parsePyrightComment", - "name": "_parsePyrightComment", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parsePyrightComment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parseBoolSetting", + "name": "_parseBoolSetting", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parseBoolSetting", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "_parsePyrightComment", + "func_name": "_parseBoolSetting", "line_range": [ - 142, - 195 + 287, + 295 ] }, - "description": "identify pyright directives in comments; apply preset diagnostic rule sets; warn when comment not on own line; parse and apply directive operands" + "description": "parse boolean setting value" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parsePyrightOperand", - "name": "_parsePyrightOperand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parsePyrightOperand", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parseDiagLevel", + "name": "_parseDiagLevel", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parseDiagLevel", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "_parsePyrightOperand", + "func_name": "_parseDiagLevel", "line_range": [ - 197, - 264 + 266, + 285 ] }, - "description": "identify directive name and value; apply diagnostic level to rule; apply boolean setting to rule; report invalid or unknown directives" + "description": "parse diagnostic severity value" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parseDiagLevel", - "name": "_parseDiagLevel", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parseDiagLevel", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parsePyrightComment", + "name": "_parsePyrightComment", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parsePyrightComment", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "_parseDiagLevel", + "func_name": "_parsePyrightComment", "line_range": [ - 266, - 285 + 142, + 195 ] }, - "description": "parse diagnostic severity value" + "description": "identify pyright directives in comments; apply preset diagnostic rule sets; warn when comment not on own line; parse and apply directive operands" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parseBoolSetting", - "name": "_parseBoolSetting", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parseBoolSetting", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_parsePyrightOperand", + "name": "_parsePyrightOperand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/_parsePyrightOperand", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", - "func_name": "_parseBoolSetting", + "func_name": "_parsePyrightOperand", "line_range": [ - 287, - 295 + 197, + 264 ] }, - "description": "parse boolean setting value" + "description": "identify directive name and value; apply diagnostic level to rule; apply boolean setting to rule; report invalid or unknown directives" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::_trimTextWithRange", @@ -6156,6 +6141,21 @@ }, "description": "trim text and update range" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts::getFileLevelDirectives", + "name": "getFileLevelDirectives", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/commentUtils.ts/getFileLevelDirectives", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts", + "func_name": "getFileLevelDirectives", + "line_range": [ + 40, + 77 + ] + }, + "description": "derive file diagnostic rules; apply strict diagnostic rules; parse inline pyright comments; emit comment diagnostics" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::__file__", "name": "constraintSolution", @@ -6172,114 +6172,83 @@ "description": "Holds mappings from type variables to resolved types and manages multiple constraint solution sets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet", - "name": "ConstraintSolutionSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution", + "name": "ConstraintSolution", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "ConstraintSolutionSet", + "func_name": "ConstraintSolution", "line_range": [ - 15, - 51 + 53, + 89 ] }, - "description": "initialize empty type variable map" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.isEmpty", - "name": "ConstraintSolutionSet.isEmpty", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.isEmpty", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "isEmpty", - "line_range": [ - 23, - 25 - ], - "class_name": "ConstraintSolutionSet" - }, - "description": "check for type mappings" + "description": "initialize solution sets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.getType", - "name": "ConstraintSolutionSet.getType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.getType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.doForEachSolutionSet", + "name": "ConstraintSolution.doForEachSolutionSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.doForEachSolutionSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "getType", + "func_name": "doForEachSolutionSet", "line_range": [ - 29, - 32 + 79, + 83 ], - "class_name": "ConstraintSolutionSet" + "class_name": "ConstraintSolution" }, - "description": "retrieve mapped type for type variable" + "description": "execute callback for each solution set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.setType", - "name": "ConstraintSolutionSet.setType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.setType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.getMainSolutionSet", + "name": "ConstraintSolution.getMainSolutionSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.getMainSolutionSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "setType", + "func_name": "getMainSolutionSet", "line_range": [ - 34, - 37 + 71, + 73 ], - "class_name": "ConstraintSolutionSet" + "class_name": "ConstraintSolution" }, - "description": "set type mapping for type variable" + "description": "retrieve main solution set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.hasType", - "name": "ConstraintSolutionSet.hasType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.hasType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.getSolutionSet", + "name": "ConstraintSolution.getSolutionSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.getSolutionSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "hasType", + "func_name": "getSolutionSet", "line_range": [ - 39, - 42 + 85, + 88 ], - "class_name": "ConstraintSolutionSet" + "class_name": "ConstraintSolution" }, - "description": "check existence of type mapping" + "description": "retrieve solution set by index" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.doForEachTypeVar", - "name": "ConstraintSolutionSet.doForEachTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.doForEachTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.getSolutionSets", + "name": "ConstraintSolution.getSolutionSets", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.getSolutionSets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "doForEachTypeVar", + "func_name": "getSolutionSets", "line_range": [ - 44, - 50 + 75, + 77 ], - "class_name": "ConstraintSolutionSet" - }, - "description": "apply operation for each assigned type variable" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution", - "name": "ConstraintSolution", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "ConstraintSolution", - "line_range": [ - 53, - 89 - ] + "class_name": "ConstraintSolution" }, - "description": "initialize solution sets" + "description": "retrieve all solution sets" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.isEmpty", @@ -6314,68 +6283,99 @@ "description": "assign type to type variable across solution sets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.getMainSolutionSet", - "name": "ConstraintSolution.getMainSolutionSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.getMainSolutionSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet", + "name": "ConstraintSolutionSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", + "func_name": "ConstraintSolutionSet", + "line_range": [ + 15, + 51 + ] + }, + "description": "initialize empty type variable map" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.doForEachTypeVar", + "name": "ConstraintSolutionSet.doForEachTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.doForEachTypeVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "getMainSolutionSet", + "func_name": "doForEachTypeVar", "line_range": [ - 71, - 73 + 44, + 50 ], - "class_name": "ConstraintSolution" + "class_name": "ConstraintSolutionSet" }, - "description": "retrieve main solution set" + "description": "apply operation for each assigned type variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.getSolutionSets", - "name": "ConstraintSolution.getSolutionSets", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.getSolutionSets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.getType", + "name": "ConstraintSolutionSet.getType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.getType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "getSolutionSets", + "func_name": "getType", "line_range": [ - 75, - 77 + 29, + 32 ], - "class_name": "ConstraintSolution" + "class_name": "ConstraintSolutionSet" }, - "description": "retrieve all solution sets" + "description": "retrieve mapped type for type variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.doForEachSolutionSet", - "name": "ConstraintSolution.doForEachSolutionSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.doForEachSolutionSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.hasType", + "name": "ConstraintSolutionSet.hasType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.hasType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "doForEachSolutionSet", + "func_name": "hasType", "line_range": [ - 79, - 83 + 39, + 42 ], - "class_name": "ConstraintSolution" + "class_name": "ConstraintSolutionSet" }, - "description": "execute callback for each solution set" + "description": "check existence of type mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolution.getSolutionSet", - "name": "ConstraintSolution.getSolutionSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolution.getSolutionSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.isEmpty", + "name": "ConstraintSolutionSet.isEmpty", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.isEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", - "func_name": "getSolutionSet", + "func_name": "isEmpty", "line_range": [ - 85, - 88 + 23, + 25 ], - "class_name": "ConstraintSolution" + "class_name": "ConstraintSolutionSet" }, - "description": "retrieve solution set by index" + "description": "check for type mappings" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts::ConstraintSolutionSet.setType", + "name": "ConstraintSolutionSet.setType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolution.ts/ConstraintSolutionSet.setType", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts", + "func_name": "setType", + "line_range": [ + 34, + 37 + ], + "class_name": "ConstraintSolutionSet" + }, + "description": "set type mapping for type variable" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::__file__", @@ -6393,109 +6393,109 @@ "description": "Solves TypeVar, TypeVarTuple, and ParamSpec constraints to infer concrete types based on collected constraints" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignTypeVar", - "name": "assignTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::addConstraintsForExpectedType", + "name": "addConstraintsForExpectedType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/addConstraintsForExpectedType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "assignTypeVar", + "func_name": "addConstraintsForExpectedType", "line_range": [ - 90, - 215 + 335, + 512 ] }, - "description": "assign type variable; ignore typevar outside scope; accept identical types without constraints; reject instantiable special form assignment; delegate bound typevar assignment; handle paramspec assignment; handle unpacked typevar tuple; assign constrained typevar; assign unconstrained typevar" + "description": "add constraints from expected type; propagate any to all params; fallback to assign generic expected type; infer variance for class targeting; derive type param bounds when matching generic; synthesize placeholder type variables for mapping; infer type arg mapping via synthetic assignment; map synthesized solutions to target params; transform expected types for live scopes; preserve literals when assigning inferred args; return overall validity of inferred constraints" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::solveConstraints", - "name": "solveConstraints", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/solveConstraints", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::applySourceSolutionToConstraints", + "name": "applySourceSolutionToConstraints", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/applySourceSolutionToConstraints", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "solveConstraints", + "func_name": "applySourceSolutionToConstraints", "line_range": [ - 218, - 231 + 234, + 249 ] }, - "description": "solve constraints for tracker; solve each constraint set; aggregate constraint solutions" + "description": "apply source solution to constraints; replace typevar bounds with solved types; skip when source solution empty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::applySourceSolutionToConstraints", - "name": "applySourceSolutionToConstraints", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/applySourceSolutionToConstraints", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignBoundTypeVar", + "name": "assignBoundTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignBoundTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "applySourceSolutionToConstraints", + "func_name": "assignBoundTypeVar", "line_range": [ - 234, - 249 + 579, + 618 ] }, - "description": "apply source solution to constraints; replace typevar bounds with solved types; skip when source solution empty" + "description": "validate assignment to bound typevar; allow any or unknown sources; allow paramspec gradual callable forms; allow never unless invariant context; accept type any for instantiable bound; report diagnostic for invalid assignment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::solveConstraintSet", - "name": "solveConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/solveConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignConstrainedTypeVar", + "name": "assignConstrainedTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignConstrainedTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "solveConstraintSet", + "func_name": "assignConstrainedTypeVar", "line_range": [ - 251, - 264 + 1008, + 1198 ] }, - "description": "solve type variables in set; collect results into solution set" + "description": "determine constrained type for typevar; validate source compatibility with constraints; enforce single unconditional constraint mapping; update typevar bounds in constraints; report constraint assignment errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::solveTypeVarRecursive", - "name": "solveTypeVarRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/solveTypeVarRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignParamSpec", + "name": "assignParamSpec", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignParamSpec", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "solveTypeVarRecursive", + "func_name": "assignParamSpec", "line_range": [ - 266, - 327 + 1201, + 1309 ] }, - "description": "solve type variable recursively; guard against infinite recursion; resolve dependent type variables; substitute dependent solutions into type; respect bound and self typevars" + "description": "normalize function to param spec; compare and update param spec bounds; choose narrower function signature when applicable; report param spec assignment errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::addConstraintsForExpectedType", - "name": "addConstraintsForExpectedType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/addConstraintsForExpectedType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignTypeVar", + "name": "assignTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "addConstraintsForExpectedType", + "func_name": "assignTypeVar", "line_range": [ - 335, - 512 + 90, + 215 ] }, - "description": "add constraints from expected type; propagate any to all params; fallback to assign generic expected type; infer variance for class targeting; derive type param bounds when matching generic; synthesize placeholder type variables for mapping; infer type arg mapping via synthetic assignment; map synthesized solutions to target params; transform expected types for live scopes; preserve literals when assigning inferred args; return overall validity of inferred constraints" + "description": "assign type variable; ignore typevar outside scope; accept identical types without constraints; reject instantiable special form assignment; delegate bound typevar assignment; handle paramspec assignment; handle unpacked typevar tuple; assign constrained typevar; assign unconstrained typevar" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::stripLiteralsForLowerBound", - "name": "stripLiteralsForLowerBound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/stripLiteralsForLowerBound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignUnconstrainedTypeVar", + "name": "assignUnconstrainedTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignUnconstrainedTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "stripLiteralsForLowerBound", + "func_name": "assignUnconstrainedTypeVar", "line_range": [ - 514, - 518 + 622, + 1005 ] }, - "description": "strip literals for lower bound; handle unpacked tuple separately" + "description": "assign unconstrained type variable; populate expected type constraints; convert class source to instance type; fill missing type arguments with unknown; apply occurs check to prevent cycles; update type variable lower bound; update type variable upper bound; strip literals from lower bound; widen union to avoid exponential growth; widen type for type variable tuple; validate assignment against type bounds; record solved bounds and retain literals flag" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::getTypeVarType", @@ -6513,94 +6513,94 @@ "description": "compute effective typevar type from constraints; prefer lower bound when present; widen literal lower bounds when safe; respect upper bound when widening; handle paramspec lower bound specially; fallback to upper bound when needed" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignBoundTypeVar", - "name": "assignBoundTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignBoundTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::logConstraints", + "name": "logConstraints", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/logConstraints", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "assignBoundTypeVar", + "func_name": "logConstraints", "line_range": [ - 579, - 618 + 1408, + 1420 ] }, - "description": "validate assignment to bound typevar; allow any or unknown sources; allow paramspec gradual callable forms; allow never unless invariant context; accept type any for instantiable bound; report diagnostic for invalid assignment" + "description": "log constraint tracker contents; enumerate and log constraint signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignUnconstrainedTypeVar", - "name": "assignUnconstrainedTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignUnconstrainedTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::logTypeVarConstraintSet", + "name": "logTypeVarConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/logTypeVarConstraintSet", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "assignUnconstrainedTypeVar", + "func_name": "logTypeVarConstraintSet", "line_range": [ - 622, - 1005 + 1422, + 1449 ] }, - "description": "assign unconstrained type variable; populate expected type constraints; convert class source to instance type; fill missing type arguments with unknown; apply occurs check to prevent cycles; update type variable lower bound; update type variable upper bound; strip literals from lower bound; widen union to avoid exponential growth; widen type for type variable tuple; validate assignment against type bounds; record solved bounds and retain literals flag" + "description": "log typevar bounds in constraint set; report no constraints when empty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignConstrainedTypeVar", - "name": "assignConstrainedTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignConstrainedTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::solveConstraints", + "name": "solveConstraints", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/solveConstraints", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "assignConstrainedTypeVar", + "func_name": "solveConstraints", "line_range": [ - 1008, - 1198 + 218, + 231 ] }, - "description": "determine constrained type for typevar; validate source compatibility with constraints; enforce single unconditional constraint mapping; update typevar bounds in constraints; report constraint assignment errors" + "description": "solve constraints for tracker; solve each constraint set; aggregate constraint solutions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::assignParamSpec", - "name": "assignParamSpec", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/assignParamSpec", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::solveConstraintSet", + "name": "solveConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/solveConstraintSet", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "assignParamSpec", + "func_name": "solveConstraintSet", "line_range": [ - 1201, - 1309 + 251, + 264 ] }, - "description": "normalize function to param spec; compare and update param spec bounds; choose narrower function signature when applicable; report param spec assignment errors" + "description": "solve type variables in set; collect results into solution set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::typeVarOccursIn", - "name": "typeVarOccursIn", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/typeVarOccursIn", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::solveTypeVarRecursive", + "name": "solveTypeVarRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/solveTypeVarRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "typeVarOccursIn", + "func_name": "solveTypeVarRecursive", "line_range": [ - 1317, - 1342 + 266, + 327 ] }, - "description": "detect internal typevar occurrences excluding top level" + "description": "solve type variable recursively; guard against infinite recursion; resolve dependent type variables; substitute dependent solutions into type; respect bound and self typevars" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::widenTypeForTypeVarTuple", - "name": "widenTypeForTypeVarTuple", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/widenTypeForTypeVarTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::stripLiteralsForLowerBound", + "name": "stripLiteralsForLowerBound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/stripLiteralsForLowerBound", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "widenTypeForTypeVarTuple", + "func_name": "stripLiteralsForLowerBound", "line_range": [ - 1347, - 1375 + 514, + 518 ] }, - "description": "combine unpacked tuple types when identical" + "description": "strip literals for lower bound; handle unpacked tuple separately" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::stripLiteralValueForUnpackedTuple", @@ -6618,34 +6618,34 @@ "description": "strip literal values for unpacked tuple elements; return specialized tuple when literals removed" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::logConstraints", - "name": "logConstraints", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/logConstraints", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::typeVarOccursIn", + "name": "typeVarOccursIn", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/typeVarOccursIn", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "logConstraints", + "func_name": "typeVarOccursIn", "line_range": [ - 1408, - 1420 + 1317, + 1342 ] }, - "description": "log constraint tracker contents; enumerate and log constraint signatures" + "description": "detect internal typevar occurrences excluding top level" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::logTypeVarConstraintSet", - "name": "logTypeVarConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/logTypeVarConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts::widenTypeForTypeVarTuple", + "name": "widenTypeForTypeVarTuple", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintSolver.ts/widenTypeForTypeVarTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts", - "func_name": "logTypeVarConstraintSet", + "func_name": "widenTypeForTypeVarTuple", "line_range": [ - 1422, - 1449 + 1347, + 1375 ] }, - "description": "log typevar bounds in constraint set; report no constraints when empty" + "description": "combine unpacked tuple types when identical" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::__file__", @@ -6677,6 +6677,22 @@ }, "description": "initialize type variable map" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.addScopeId", + "name": "ConstraintSet.addScopeId", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.addScopeId", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", + "func_name": "addScopeId", + "line_range": [ + 154, + 160 + ], + "class_name": "ConstraintSet" + }, + "description": "add scope identifier" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.clone", "name": "ConstraintSet.clone", @@ -6694,36 +6710,36 @@ "description": "duplicate constraint set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.isSame", - "name": "ConstraintSet.isSame", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.isSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.doForEachTypeVar", + "name": "ConstraintSet.doForEachTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.doForEachTypeVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "isSame", + "func_name": "doForEachTypeVar", "line_range": [ - 71, - 97 + 135, + 137 ], "class_name": "ConstraintSet" }, - "description": "compare constraint sets" + "description": "invoke callback for type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.isEmpty", - "name": "ConstraintSet.isEmpty", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.isEmpty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.getScopeIds", + "name": "ConstraintSet.getScopeIds", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.getScopeIds", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "isEmpty", + "func_name": "getScopeIds", "line_range": [ - 99, - 101 + 170, + 172 ], "class_name": "ConstraintSet" }, - "description": "detect empty constraint set" + "description": "retrieve scope identifier set" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.getScore", @@ -6741,38 +6757,6 @@ }, "description": "compute constraint set score" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.setBounds", - "name": "ConstraintSet.setBounds", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.setBounds", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "setBounds", - "line_range": [ - 125, - 133 - ], - "class_name": "ConstraintSet" - }, - "description": "assign type variable bounds" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.doForEachTypeVar", - "name": "ConstraintSet.doForEachTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.doForEachTypeVar", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "doForEachTypeVar", - "line_range": [ - 135, - 137 - ], - "class_name": "ConstraintSet" - }, - "description": "invoke callback for type variables" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.getTypeVar", "name": "ConstraintSet.getTypeVar", @@ -6806,68 +6790,84 @@ "description": "list type variable constraints" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.addScopeId", - "name": "ConstraintSet.addScopeId", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.addScopeId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.hasScopeId", + "name": "ConstraintSet.hasScopeId", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.hasScopeId", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "addScopeId", + "func_name": "hasScopeId", "line_range": [ - 154, - 160 + 162, + 168 ], "class_name": "ConstraintSet" }, - "description": "add scope identifier" + "description": "check scope identifier membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.hasScopeId", - "name": "ConstraintSet.hasScopeId", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.hasScopeId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.hasUnificationVars", + "name": "ConstraintSet.hasUnificationVars", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.hasUnificationVars", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "hasScopeId", + "func_name": "hasUnificationVars", "line_range": [ - 162, - 168 + 174, + 182 ], "class_name": "ConstraintSet" }, - "description": "check scope identifier membership" + "description": "detect unification type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.getScopeIds", - "name": "ConstraintSet.getScopeIds", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.getScopeIds", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.isEmpty", + "name": "ConstraintSet.isEmpty", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.isEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "getScopeIds", + "func_name": "isEmpty", "line_range": [ - 170, - 172 + 99, + 101 ], "class_name": "ConstraintSet" }, - "description": "retrieve scope identifier set" + "description": "detect empty constraint set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.hasUnificationVars", - "name": "ConstraintSet.hasUnificationVars", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.hasUnificationVars", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.isSame", + "name": "ConstraintSet.isSame", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.isSame", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "hasUnificationVars", + "func_name": "isSame", "line_range": [ - 174, - 182 + 71, + 97 ], "class_name": "ConstraintSet" }, - "description": "detect unification type variables" + "description": "compare constraint sets" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintSet.setBounds", + "name": "ConstraintSet.setBounds", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintSet.setBounds", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", + "func_name": "setBounds", + "line_range": [ + 125, + 133 + ], + "class_name": "ConstraintSet" + }, + "description": "assign type variable bounds" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker", @@ -6884,6 +6884,22 @@ }, "description": "initialize default constraint sets" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.addConstraintSets", + "name": "ConstraintTracker.addConstraintSets", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.addConstraintSets", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", + "func_name": "addConstraintSets", + "line_range": [ + 230, + 238 + ], + "class_name": "ConstraintTracker" + }, + "description": "replace constraint sets with provided sets; limit number of constraint sets copied" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.clone", "name": "ConstraintTracker.clone", @@ -6916,22 +6932,6 @@ }, "description": "clone constraint tracker with scope; filter constraint sets by scope" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.copyFromClone", - "name": "ConstraintTracker.copyFromClone", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.copyFromClone", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "copyFromClone", - "line_range": [ - 219, - 221 - ], - "class_name": "ConstraintTracker" - }, - "description": "apply cloned constraint sets to tracker" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.copyBounds", "name": "ConstraintTracker.copyBounds", @@ -6949,148 +6949,148 @@ "description": "propagate type variable bounds to sets; apply lower and upper bounds" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.addConstraintSets", - "name": "ConstraintTracker.addConstraintSets", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.addConstraintSets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.copyFromClone", + "name": "ConstraintTracker.copyFromClone", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.copyFromClone", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "addConstraintSets", + "func_name": "copyFromClone", "line_range": [ - 230, - 238 + 219, + 221 ], "class_name": "ConstraintTracker" }, - "description": "replace constraint sets with provided sets; limit number of constraint sets copied" + "description": "apply cloned constraint sets to tracker" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.isSame", - "name": "ConstraintTracker.isSame", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.isSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.doForEachConstraintSet", + "name": "ConstraintTracker.doForEachConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.doForEachConstraintSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "isSame", + "func_name": "doForEachConstraintSet", "line_range": [ - 240, - 246 + 277, + 281 ], "class_name": "ConstraintTracker" }, - "description": "compare constraint sets for equality" + "description": "invoke callback for each constraint set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.isEmpty", - "name": "ConstraintTracker.isEmpty", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.isEmpty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getConstraintSet", + "name": "ConstraintTracker.getConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getConstraintSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "isEmpty", + "func_name": "getConstraintSet", "line_range": [ - 248, - 250 + 283, + 286 ], "class_name": "ConstraintTracker" }, - "description": "check if all constraint sets are empty" + "description": "retrieve constraint set by index" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.setBounds", - "name": "ConstraintTracker.setBounds", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.setBounds", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getConstraintSets", + "name": "ConstraintTracker.getConstraintSets", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getConstraintSets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "setBounds", + "func_name": "getConstraintSets", "line_range": [ - 252, - 256 + 273, + 275 ], "class_name": "ConstraintTracker" }, - "description": "apply bounds to all constraint sets; set lower and upper bounds for type variables" + "description": "return all constraint sets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getScore", - "name": "ConstraintTracker.getScore", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getScore", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getMainConstraintSet", + "name": "ConstraintTracker.getMainConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getMainConstraintSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "getScore", + "func_name": "getMainConstraintSet", "line_range": [ - 258, - 267 + 269, + 271 ], "class_name": "ConstraintTracker" }, - "description": "calculate average constraint set score; aggregate scores across constraint sets" + "description": "retrieve primary constraint set" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getMainConstraintSet", - "name": "ConstraintTracker.getMainConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getMainConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getScore", + "name": "ConstraintTracker.getScore", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getScore", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "getMainConstraintSet", + "func_name": "getScore", "line_range": [ - 269, - 271 + 258, + 267 ], "class_name": "ConstraintTracker" }, - "description": "retrieve primary constraint set" + "description": "calculate average constraint set score; aggregate scores across constraint sets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getConstraintSets", - "name": "ConstraintTracker.getConstraintSets", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getConstraintSets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.isEmpty", + "name": "ConstraintTracker.isEmpty", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.isEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "getConstraintSets", + "func_name": "isEmpty", "line_range": [ - 273, - 275 + 248, + 250 ], "class_name": "ConstraintTracker" }, - "description": "return all constraint sets" + "description": "check if all constraint sets are empty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.doForEachConstraintSet", - "name": "ConstraintTracker.doForEachConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.doForEachConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.isSame", + "name": "ConstraintTracker.isSame", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.isSame", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "doForEachConstraintSet", + "func_name": "isSame", "line_range": [ - 277, - 281 + 240, + 246 ], "class_name": "ConstraintTracker" }, - "description": "invoke callback for each constraint set" + "description": "compare constraint sets for equality" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.getConstraintSet", - "name": "ConstraintTracker.getConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.getConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts::ConstraintTracker.setBounds", + "name": "ConstraintTracker.setBounds", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/constraint solving/constraintTracker.ts/ConstraintTracker.setBounds", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts", - "func_name": "getConstraintSet", + "func_name": "setBounds", "line_range": [ - 283, - 286 + 252, + 256 ], "class_name": "ConstraintTracker" }, - "description": "retrieve constraint set by index" + "description": "apply bounds to all constraint sets; set lower and upper bounds for type variables" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::__file__", @@ -7107,141 +7107,6 @@ }, "description": "Evaluates Python constructor and metaclass calls, validating __new__/__init__ arguments and inferring resulting instance types" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::getBoundNewMethod", - "name": "getBoundNewMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/getBoundNewMethod", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "getBoundNewMethod", - "line_range": [ - 66, - 80 - ] - }, - "description": "get bound new method" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::getBoundInitMethod", - "name": "getBoundInitMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/getBoundInitMethod", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "getBoundInitMethod", - "line_range": [ - 83, - 94 - ] - }, - "description": "get bound init method" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::getBoundCallMethod", - "name": "getBoundCallMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/getBoundCallMethod", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "getBoundCallMethod", - "line_range": [ - 97, - 108 - ] - }, - "description": "get bound call method" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateConstructorArgs", - "name": "validateConstructorArgs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateConstructorArgs", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "validateConstructorArgs", - "line_range": [ - 113, - 241 - ] - }, - "description": "specialize generic type alias; validate metaclass call; validate constructor call arguments; evaluate arguments speculatively when required; apply constructor transform when applicable; revalidate arguments to generate diagnostics; analyze argument expressions for diagnostics; return combined call result" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateNewAndInitMethods", - "name": "validateNewAndInitMethods", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateNewAndInitMethods", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "validateNewAndInitMethods", - "line_range": [ - 243, - 405 - ] - }, - "description": "validate new and init methods; speculatively validate new method arguments; determine constructed instance type; defer to init for type specialization; evaluate new non speculatively when needed; use fallback object constructor when absent; aggregate overloads used for call" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateNewMethod", - "name": "validateNewMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateNewMethod", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "validateNewMethod", - "line_range": [ - 410, - 483 - ] - }, - "description": "validate new method call arguments; track type variable constraints; revalidate arguments non speculatively on errors; specialize tuple constructor return type; apply expected constructor return type" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateInitMethod", - "name": "validateInitMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateInitMethod", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "validateInitMethod", - "line_range": [ - 485, - 540 - ] - }, - "description": "validate init method call arguments; add constraints for expected class type; support specialized self type inference; derive constructor return type from constraints; collect overloads used for call" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateFallbackConstructorCall", - "name": "validateFallbackConstructorCall", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateFallbackConstructorCall", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "validateFallbackConstructorCall", - "line_range": [ - 542, - 575 - ] - }, - "description": "bind object new method; fallback to instance when new unavailable; validate fallback new method call" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateMetaclassCall", - "name": "validateMetaclassCall", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateMetaclassCall", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "validateMetaclassCall", - "line_range": [ - 577, - 617 - ] - }, - "description": "validate metaclass call invocation; speculatively validate metaclass call arguments; ignore unannotated or unknown returns; return metaclass call result when meaningful" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::applyExpectedSubtypeForConstructor", "name": "applyExpectedSubtypeForConstructor", @@ -7302,6 +7167,21 @@ }, "description": "derive constructor function from metaclass; derive constructor function from new method; derive constructor function from init method; combine new and init constructors into union; fallback to object new constructor" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::createFunctionFromInitMethod", + "name": "createFunctionFromInitMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/createFunctionFromInitMethod", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "createFunctionFromInitMethod", + "line_range": [ + 926, + 1036 + ] + }, + "description": "convert init methods to constructor functions; bind init method to class instance; infer class type arguments from init parameters; set constructor return type from init signature; remove static flag from constructor function; assign constructor typevar scope id" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::createFunctionFromMetaclassCall", "name": "createFunctionFromMetaclassCall", @@ -7348,49 +7228,49 @@ "description": "create fallback constructor from object new; add default parameters for extensible classes; inherit class docstring to constructor" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::createFunctionFromInitMethod", - "name": "createFunctionFromInitMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/createFunctionFromInitMethod", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::getBoundCallMethod", + "name": "getBoundCallMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/getBoundCallMethod", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "createFunctionFromInitMethod", + "func_name": "getBoundCallMethod", "line_range": [ - 926, - 1036 + 97, + 108 ] }, - "description": "convert init methods to constructor functions; bind init method to class instance; infer class type arguments from init parameters; set constructor return type from init signature; remove static flag from constructor function; assign constructor typevar scope id" + "description": "get bound call method" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::shouldSkipNewAndInitEvaluation", - "name": "shouldSkipNewAndInitEvaluation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/shouldSkipNewAndInitEvaluation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::getBoundInitMethod", + "name": "getBoundInitMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/getBoundInitMethod", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "shouldSkipNewAndInitEvaluation", + "func_name": "getBoundInitMethod", "line_range": [ - 1040, - 1060 + 83, + 94 ] }, - "description": "skip new and init for incompatible return types; skip new and init when return contains any type; skip new and init for enum classes" + "description": "get bound init method" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::shouldSkipInitEvaluation", - "name": "shouldSkipInitEvaluation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/shouldSkipInitEvaluation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::getBoundNewMethod", + "name": "getBoundNewMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/getBoundNewMethod", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", - "func_name": "shouldSkipInitEvaluation", + "func_name": "getBoundNewMethod", "line_range": [ - 1065, - 1093 + 66, + 80 ] }, - "description": "skip init when new return types are not derived from class; ignore unknown subtypes during check" + "description": "get bound new method" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::isDefaultNewMethod", @@ -7408,34 +7288,139 @@ "description": "identify default new method signature; verify new parameters are args and kwargs; ensure new returns self type variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts::__file__", - "name": "constructorTransform", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructorTransform.ts", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::shouldSkipInitEvaluation", + "name": "shouldSkipInitEvaluation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/shouldSkipInitEvaluation", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts", - "func_name": "constructorTransform", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "shouldSkipInitEvaluation", "line_range": [ - 1, - 488 + 1065, + 1093 ] }, - "description": "Transforms objects created by constructors for special-case behaviors like functools.partial and TypedDicts" + "description": "skip init when new return types are not derived from class; ignore unknown subtypes during check" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts::hasConstructorTransform", - "name": "hasConstructorTransform", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructorTransform.ts/hasConstructorTransform", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::shouldSkipNewAndInitEvaluation", + "name": "shouldSkipNewAndInitEvaluation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/shouldSkipNewAndInitEvaluation", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "shouldSkipNewAndInitEvaluation", + "line_range": [ + 1040, + 1060 + ] + }, + "description": "skip new and init for incompatible return types; skip new and init when return contains any type; skip new and init for enum classes" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateConstructorArgs", + "name": "validateConstructorArgs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateConstructorArgs", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "validateConstructorArgs", + "line_range": [ + 113, + 241 + ] + }, + "description": "specialize generic type alias; validate metaclass call; validate constructor call arguments; evaluate arguments speculatively when required; apply constructor transform when applicable; revalidate arguments to generate diagnostics; analyze argument expressions for diagnostics; return combined call result" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateFallbackConstructorCall", + "name": "validateFallbackConstructorCall", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateFallbackConstructorCall", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "validateFallbackConstructorCall", + "line_range": [ + 542, + 575 + ] + }, + "description": "bind object new method; fallback to instance when new unavailable; validate fallback new method call" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateInitMethod", + "name": "validateInitMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateInitMethod", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "validateInitMethod", + "line_range": [ + 485, + 540 + ] + }, + "description": "validate init method call arguments; add constraints for expected class type; support specialized self type inference; derive constructor return type from constraints; collect overloads used for call" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateMetaclassCall", + "name": "validateMetaclassCall", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateMetaclassCall", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "validateMetaclassCall", + "line_range": [ + 577, + 617 + ] + }, + "description": "validate metaclass call invocation; speculatively validate metaclass call arguments; ignore unannotated or unknown returns; return metaclass call result when meaningful" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateNewAndInitMethods", + "name": "validateNewAndInitMethods", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateNewAndInitMethods", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "validateNewAndInitMethods", + "line_range": [ + 243, + 405 + ] + }, + "description": "validate new and init methods; speculatively validate new method arguments; determine constructed instance type; defer to init for type specialization; evaluate new non speculatively when needed; use fallback object constructor when absent; aggregate overloads used for call" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts::validateNewMethod", + "name": "validateNewMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructors.ts/validateNewMethod", "meta": { "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts", + "func_name": "validateNewMethod", + "line_range": [ + 410, + 483 + ] + }, + "description": "validate new method call arguments; track type variable constraints; revalidate arguments non speculatively on errors; specialize tuple constructor return type; apply expected constructor return type" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts::__file__", + "name": "constructorTransform", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructorTransform.ts", + "meta": { + "type": "file", "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts", - "func_name": "hasConstructorTransform", + "func_name": "constructorTransform", "line_range": [ - 42, - 48 + 1, + 488 ] }, - "description": "identify classes requiring constructor transform" + "description": "Transforms objects created by constructors for special-case behaviors like functools.partial and TypedDicts" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts::applyConstructorTransform", @@ -7482,6 +7467,21 @@ }, "description": "map provided arguments to function parameters; validate argument types against parameter types; track which parameters have been assigned; solve constraints and specialize the function; remove populated parameters from call signature; preserve mapping parameter narrowings; mark assigned keyword parameters as having defaults; create new call signature with remaining parameters; return transformed call type and argument errors" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts::hasConstructorTransform", + "name": "hasConstructorTransform", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/constructorTransform.ts/hasConstructorTransform", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts", + "func_name": "hasConstructorTransform", + "line_range": [ + 42, + 48 + ] + }, + "description": "identify classes requiring constructor transform" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::__file__", "name": "dataClasses", @@ -7492,220 +7492,220 @@ "func_name": "dataClasses", "line_range": [ 1, - 1598 + 1599 ] }, - "description": "Handles special-case analysis and synthesis for Python dataclasses and dataclass_transform behaviors" + "description": "Implements dataclass and dataclass_transform semantics for fields, initialization, and generated methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::synthesizeDataClassMethods", - "name": "synthesizeDataClassMethods", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/synthesizeDataClassMethods", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::addInheritedDataClassEntries", + "name": "addInheritedDataClassEntries", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/addInheritedDataClassEntries", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "synthesizeDataClassMethods", + "func_name": "addInheritedDataClassEntries", "line_range": [ - 95, - 820 + 1146, + 1182 ] }, - "description": "synthesize new method; synthesize init method; synthesize replace method; add field parameters to constructor; collect local and inherited entries; defer entry type evaluation; evaluate default expressions for fields; handle default factory values; respect field init flag; respect field kw only flag; handle namedtuple field parameters; synthesize equality method" + "description": "merge inherited dataclass fields; resolve inherited generic field types; remove overridden class fields; detect unknown dataclass ancestors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getDefaultArgValueForFieldSpecifier", - "name": "getDefaultArgValueForFieldSpecifier", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getDefaultArgValueForFieldSpecifier", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassBehaviorOverride", + "name": "applyDataClassBehaviorOverride", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassBehaviorOverride", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "getDefaultArgValueForFieldSpecifier", + "func_name": "applyDataClassBehaviorOverride", "line_range": [ - 826, - 886 + 1407, + 1419 ] }, - "description": "select best overload for call; infer default boolean value for parameter" + "description": "evaluate behavior override expression; apply dataclass behavior override" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getConverterInputType", - "name": "getConverterInputType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getConverterInputType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassBehaviorOverrideValue", + "name": "applyDataClassBehaviorOverrideValue", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassBehaviorOverrideValue", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "getConverterInputType", + "func_name": "applyDataClassBehaviorOverrideValue", "line_range": [ - 890, - 991 + 1421, + 1533 ] }, - "description": "speculatively evaluate converter expression; infer converter input type; report diagnostics for converter mismatch" + "description": "set ordering behavior; set keyword only behavior; set match argument behavior; validate frozen inheritance compatibility; set initializer generation behavior; set equality generation behavior; set slots generation behavior; report slots overwrite conflict; set hash generation behavior" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getConverterAsFunction", - "name": "getConverterAsFunction", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getConverterAsFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassClassBehaviorOverrides", + "name": "applyDataClassClassBehaviorOverrides", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassClassBehaviorOverrides", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "getConverterAsFunction", + "func_name": "applyDataClassClassBehaviorOverrides", "line_range": [ - 993, - 1022 + 1535, + 1582 ] }, - "description": "resolve converter as function type; extract call method from instance; fallback to constructor signature when applicable" + "description": "initialize class dataclass behaviors; apply class behavior overrides; validate implicit frozen behavior" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getDescriptorForConverterField", - "name": "getDescriptorForConverterField", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getDescriptorForConverterField", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassDecorator", + "name": "applyDataClassDecorator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassDecorator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "getDescriptorForConverterField", + "func_name": "applyDataClassDecorator", "line_range": [ - 1029, - 1118 + 1584, + 1598 ] }, - "description": "create descriptor class for converter field; apply dataclass type parameters to descriptor; define descriptor getter and setter methods" + "description": "apply decorator behavior overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::transformDescriptorType", - "name": "transformDescriptorType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/transformDescriptorType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getConverterAsFunction", + "name": "getConverterAsFunction", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getConverterAsFunction", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "transformDescriptorType", + "func_name": "getConverterAsFunction", "line_range": [ - 1123, - 1139 + 994, + 1023 ] }, - "description": "derive descriptor value type from __set__; return original type if not descriptor" + "description": "resolve converter callable type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::addInheritedDataClassEntries", - "name": "addInheritedDataClassEntries", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/addInheritedDataClassEntries", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getConverterInputType", + "name": "getConverterInputType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getConverterInputType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "addInheritedDataClassEntries", + "func_name": "getConverterInputType", "line_range": [ - 1145, - 1181 + 891, + 992 ] }, - "description": "merge inherited data class entries; apply ancestor generic substitutions; override instance entries with class vars; report completeness of ancestor information" + "description": "infer converter input type; validate converter return compatibility; report invalid converter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::isDataclassFieldConstructor", - "name": "isDataclassFieldConstructor", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/isDataclassFieldConstructor", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getDataclassDecoratorBehaviors", + "name": "getDataclassDecoratorBehaviors", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getDataclassDecoratorBehaviors", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "isDataclassFieldConstructor", + "func_name": "getDataclassDecoratorBehaviors", "line_range": [ - 1183, - 1202 + 1367, + 1405 ] }, - "description": "identify dataclass field constructor by name" + "description": "resolve dataclass decorator behaviors; provide builtin dataclass defaults" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::validateDataClassTransformDecorator", - "name": "validateDataClassTransformDecorator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/validateDataClassTransformDecorator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getDefaultArgValueForFieldSpecifier", + "name": "getDefaultArgValueForFieldSpecifier", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getDefaultArgValueForFieldSpecifier", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "validateDataClassTransformDecorator", + "func_name": "getDefaultArgValueForFieldSpecifier", "line_range": [ - 1204, - 1364 + 827, + 887 ] }, - "description": "validate dataclass_transform decorator arguments; evaluate boolean decorator default values; collect field descriptor names from specifier tuple; report diagnostics for invalid decorator arguments" + "description": "resolve field specifier boolean default" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getDataclassDecoratorBehaviors", - "name": "getDataclassDecoratorBehaviors", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getDataclassDecoratorBehaviors", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::getDescriptorForConverterField", + "name": "getDescriptorForConverterField", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/getDescriptorForConverterField", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "getDataclassDecoratorBehaviors", + "func_name": "getDescriptorForConverterField", "line_range": [ - 1366, - 1404 + 1030, + 1119 ] }, - "description": "locate dataclass decorator function; retrieve dataclass behaviors from decorator; provide default dataclass behaviors" + "description": "create converter field descriptor; preserve dataclass generic parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassBehaviorOverride", - "name": "applyDataClassBehaviorOverride", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassBehaviorOverride", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::isDataclassFieldConstructor", + "name": "isDataclassFieldConstructor", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/isDataclassFieldConstructor", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "applyDataClassBehaviorOverride", + "func_name": "isDataclassFieldConstructor", "line_range": [ - 1406, - 1418 + 1184, + 1203 ] }, - "description": "evaluate dataclass argument expression; apply override to class behaviors" + "description": "identify dataclass field constructor" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassBehaviorOverrideValue", - "name": "applyDataClassBehaviorOverrideValue", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassBehaviorOverrideValue", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::synthesizeDataClassMethods", + "name": "synthesizeDataClassMethods", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/synthesizeDataClassMethods", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "applyDataClassBehaviorOverrideValue", + "func_name": "synthesizeDataClassMethods", "line_range": [ - 1420, - 1532 + 95, + 821 ] }, - "description": "set order generation behavior; set keyword only behavior; set match args behavior; set frozen dataclass behavior; validate frozen inheritance compatibility; report frozen inheritance conflict; set init generation behavior; set equality generation behavior; set slots generation behavior; report slots overwrite conflict; enable hash generation" + "description": "synthesize data class constructors; collect inherited data class fields; infer field parameter types; apply field initialization options; apply field converters; report private field names; synthesize replace method; synthesize pattern matching metadata; synthesize comparison methods; synthesize hash behavior; record data class field metadata; synthesize slot metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassClassBehaviorOverrides", - "name": "applyDataClassClassBehaviorOverrides", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassClassBehaviorOverrides", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::transformDescriptorType", + "name": "transformDescriptorType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/transformDescriptorType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "applyDataClassClassBehaviorOverrides", + "func_name": "transformDescriptorType", "line_range": [ - 1534, - 1581 + 1124, + 1140 ] }, - "description": "initialize class dataclass behaviors; attach behaviors to class type; apply argument based behavior overrides; enforce default frozen behavior" + "description": "infer descriptor assignment type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::applyDataClassDecorator", - "name": "applyDataClassDecorator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/applyDataClassDecorator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts::validateDataClassTransformDecorator", + "name": "validateDataClassTransformDecorator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/dataClasses.ts/validateDataClassTransformDecorator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts", - "func_name": "applyDataClassDecorator", + "func_name": "validateDataClassTransformDecorator", "line_range": [ - 1583, - 1597 + 1205, + 1365 ] }, - "description": "convert decorator call to args; apply dataclass overrides to class" + "description": "validate dataclass transform arguments; derive dataclass transform behaviors; collect field specifier names; report invalid transform arguments" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::__file__", @@ -7723,19 +7723,19 @@ "description": "Describes declaration kinds and interfaces that record symbol locations, nodes, and import/alias resolution metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isFunctionDeclaration", - "name": "isFunctionDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isFunctionDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isAliasDeclaration", + "name": "isAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isAliasDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isFunctionDeclaration", + "func_name": "isAliasDeclaration", "line_range": [ - 265, - 267 + 289, + 291 ] }, - "description": "identify function declaration" + "description": "identify alias declaration" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isClassDeclaration", @@ -7753,124 +7753,124 @@ "description": "identify class declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isParamDeclaration", - "name": "isParamDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isParamDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isFunctionDeclaration", + "name": "isFunctionDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isFunctionDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isParamDeclaration", + "func_name": "isFunctionDeclaration", "line_range": [ - 273, - 275 + 265, + 267 ] }, - "description": "identify parameter declaration" + "description": "identify function declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isTypeParamDeclaration", - "name": "isTypeParamDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isTypeParamDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isIntrinsicDeclaration", + "name": "isIntrinsicDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isIntrinsicDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isTypeParamDeclaration", + "func_name": "isIntrinsicDeclaration", "line_range": [ - 277, - 279 + 297, + 299 ] }, - "description": "identify type parameter declaration" + "description": "identify intrinsic declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isTypeAliasDeclaration", - "name": "isTypeAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isTypeAliasDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isParamDeclaration", + "name": "isParamDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isParamDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isTypeAliasDeclaration", + "func_name": "isParamDeclaration", "line_range": [ - 281, - 283 + 273, + 275 ] }, - "description": "identify type alias declaration" + "description": "identify parameter declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isVariableDeclaration", - "name": "isVariableDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isVariableDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isSpecialBuiltInClassDeclaration", + "name": "isSpecialBuiltInClassDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isSpecialBuiltInClassDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isVariableDeclaration", + "func_name": "isSpecialBuiltInClassDeclaration", "line_range": [ - 285, - 287 + 293, + 295 ] }, - "description": "identify variable declaration" + "description": "identify special built in class declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isAliasDeclaration", - "name": "isAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isAliasDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isTypeAliasDeclaration", + "name": "isTypeAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isTypeAliasDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isAliasDeclaration", + "func_name": "isTypeAliasDeclaration", "line_range": [ - 289, - 291 + 281, + 283 ] }, - "description": "identify alias declaration" + "description": "identify type alias declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isSpecialBuiltInClassDeclaration", - "name": "isSpecialBuiltInClassDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isSpecialBuiltInClassDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isTypeParamDeclaration", + "name": "isTypeParamDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isTypeParamDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isSpecialBuiltInClassDeclaration", + "func_name": "isTypeParamDeclaration", "line_range": [ - 293, - 295 + 277, + 279 ] }, - "description": "identify special built in class declaration" + "description": "identify type parameter declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isIntrinsicDeclaration", - "name": "isIntrinsicDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isIntrinsicDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isUnresolvedAliasDeclaration", + "name": "isUnresolvedAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isUnresolvedAliasDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isIntrinsicDeclaration", + "func_name": "isUnresolvedAliasDeclaration", "line_range": [ - 297, - 299 + 301, + 303 ] }, - "description": "identify intrinsic declaration" + "description": "detect unresolved alias declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isUnresolvedAliasDeclaration", - "name": "isUnresolvedAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isUnresolvedAliasDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::isVariableDeclaration", + "name": "isVariableDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declaration.ts/isVariableDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts", - "func_name": "isUnresolvedAliasDeclaration", + "func_name": "isVariableDeclaration", "line_range": [ - 301, - 303 + 285, + 287 ] }, - "description": "detect unresolved alias declaration" + "description": "identify variable declaration" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::__file__", @@ -7888,34 +7888,34 @@ "description": "Utilities for inspecting, comparing, and resolving declarations and alias references in the analyzer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::hasTypeForDeclaration", - "name": "hasTypeForDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/hasTypeForDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::areDeclarationsSame", + "name": "areDeclarationsSame", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/areDeclarationsSame", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts", - "func_name": "hasTypeForDeclaration", + "func_name": "areDeclarationsSame", "line_range": [ - 26, - 68 + 70, + 117 ] }, - "description": "determine declaration has type annotation; account for parameter function type comments" + "description": "compare declarations for equivalence; apply alias import equality rules; optionally ignore alias range when comparing" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::areDeclarationsSame", - "name": "areDeclarationsSame", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/areDeclarationsSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::getDeclarationsWithUsesLocalNameRemoved", + "name": "getDeclarationsWithUsesLocalNameRemoved", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/getDeclarationsWithUsesLocalNameRemoved", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts", - "func_name": "areDeclarationsSame", + "func_name": "getDeclarationsWithUsesLocalNameRemoved", "line_range": [ - 70, - 117 + 200, + 211 ] }, - "description": "compare declarations for equivalence; apply alias import equality rules; optionally ignore alias range when comparing" + "description": "remove local name usage flag from aliases; return shallow copy of declarations" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::getNameFromDeclaration", @@ -7947,6 +7947,21 @@ }, "description": "retrieve name node for declaration; resolve import alias name node; return no name node for intrinsics" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::hasTypeForDeclaration", + "name": "hasTypeForDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/hasTypeForDeclaration", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts", + "func_name": "hasTypeForDeclaration", + "line_range": [ + 26, + 68 + ] + }, + "description": "determine declaration has type annotation; account for parameter function type comments" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::isDefinedInFile", "name": "isDefinedInFile", @@ -7963,19 +7978,19 @@ "description": "determine if declaration is defined in file; use node file info for alias declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::getDeclarationsWithUsesLocalNameRemoved", - "name": "getDeclarationsWithUsesLocalNameRemoved", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/getDeclarationsWithUsesLocalNameRemoved", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::resolveAliasDeclaration", + "name": "resolveAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/resolveAliasDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts", - "func_name": "getDeclarationsWithUsesLocalNameRemoved", + "func_name": "resolveAliasDeclaration", "line_range": [ - 200, - 211 + 241, + 420 ] }, - "description": "remove local name usage flag from aliases; return shallow copy of declarations" + "description": "resolve alias chain to underlying declaration; follow imports to resolve symbol declarations; prefer typed declarations over inferred ones; avoid except suite declarations when possible; apply submodule fallback for ambiguous imports; detect private and externally hidden symbols; track pytyped transition and private imports; resolve circular alias references with fallback; honor option to stop at local aliases" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::synthesizeAliasDeclaration", @@ -7992,21 +8007,6 @@ }, "description": "synthesize alias declaration for uri; create ide focused alias placeholder" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts::resolveAliasDeclaration", - "name": "resolveAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/declarationUtils.ts/resolveAliasDeclaration", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts", - "func_name": "resolveAliasDeclaration", - "line_range": [ - 241, - 420 - ] - }, - "description": "resolve alias chain to underlying declaration; follow imports to resolve symbol declarations; prefer typed declarations over inferred ones; avoid except suite declarations when possible; apply submodule fallback for ambiguous imports; detect private and externally hidden symbols; track pytyped transition and private imports; resolve circular alias references with fallback; honor option to stop at local aliases" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::__file__", "name": "decorators", @@ -8023,34 +8023,19 @@ "description": "Evaluates and applies function/class decorators, adjusting types, flags, overloads, properties, and dataclass behavior" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::getFunctionInfoFromDecorators", - "name": "getFunctionInfoFromDecorators", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/getFunctionInfoFromDecorators", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts", - "func_name": "getFunctionInfoFromDecorators", - "line_range": [ - 54, - 124 - ] - }, - "description": "determine function flags from decorators; extract deprecation message from decorator; recognize implicit class methods by magic names; treat constructor magic method as static method" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::applyFunctionDecorator", - "name": "applyFunctionDecorator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/applyFunctionDecorator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::addOverloadsToFunctionType", + "name": "addOverloadsToFunctionType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/addOverloadsToFunctionType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts", - "func_name": "applyFunctionDecorator", + "func_name": "addOverloadsToFunctionType", "line_range": [ - 128, - 294 + 495, + 590 ] }, - "description": "apply decorator to function type; handle overload decorator semantics; apply dataclass transform decorator behaviors; normalize partially evaluated function before application; handle property setter and deleter decorators; apply classmethod and staticmethod semantics; wrap callable instances as properties when needed; preserve overload flag and docstring" + "description": "collect previous overload declarations; evaluate previous declarations for caching; merge overloads into function type; inherit implementation docstring to overloads; propagate deprecation to overloads; detect replacement of previous implementation; return single overload or implementation" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::applyClassDecorator", @@ -8068,49 +8053,64 @@ "description": "apply decorator to class type; detect and apply dataclass transform behaviors; mark class as final when final decorator applied; mark class as type check only when decorated; mark class as runtime checkable when decorated; extract deprecation message from decorator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::getTypeOfDecorator", - "name": "getTypeOfDecorator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/getTypeOfDecorator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::applyFunctionDecorator", + "name": "applyFunctionDecorator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/applyFunctionDecorator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts", - "func_name": "getTypeOfDecorator", + "func_name": "applyFunctionDecorator", "line_range": [ - 406, - 489 + 128, + 294 ] }, - "description": "evaluate decorator type for given target; validate decorator call arguments to infer return; preserve original type for passthrough decorators; treat classmethod applied to property as noop" + "description": "apply decorator to function type; handle overload decorator semantics; apply dataclass transform decorator behaviors; normalize partially evaluated function before application; handle property setter and deleter decorators; apply classmethod and staticmethod semantics; wrap callable instances as properties when needed; preserve overload flag and docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::addOverloadsToFunctionType", - "name": "addOverloadsToFunctionType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/addOverloadsToFunctionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::getDeprecatedMessageFromCall", + "name": "getDeprecatedMessageFromCall", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/getDeprecatedMessageFromCall", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts", - "func_name": "addOverloadsToFunctionType", + "func_name": "getDeprecatedMessageFromCall", "line_range": [ - 495, - 590 + 594, + 606 ] }, - "description": "collect previous overload declarations; evaluate previous declarations for caching; merge overloads into function type; inherit implementation docstring to overloads; propagate deprecation to overloads; detect replacement of previous implementation; return single overload or implementation" + "description": "extract deprecated message from call; convert docstring to plain text; return empty string when no message" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::getDeprecatedMessageFromCall", - "name": "getDeprecatedMessageFromCall", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/getDeprecatedMessageFromCall", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::getFunctionInfoFromDecorators", + "name": "getFunctionInfoFromDecorators", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/getFunctionInfoFromDecorators", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts", - "func_name": "getDeprecatedMessageFromCall", + "func_name": "getFunctionInfoFromDecorators", "line_range": [ - 594, - 606 + 54, + 124 ] }, - "description": "extract deprecated message from call; convert docstring to plain text; return empty string when no message" + "description": "determine function flags from decorators; extract deprecation message from decorator; recognize implicit class methods by magic names; treat constructor magic method as static method" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts::getTypeOfDecorator", + "name": "getTypeOfDecorator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/decorators.ts/getTypeOfDecorator", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts", + "func_name": "getTypeOfDecorator", + "line_range": [ + 406, + 489 + ] + }, + "description": "evaluate decorator type for given target; validate decorator call arguments to infer return; preserve original type for passthrough decorators; treat classmethod applied to property as noop" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts::__file__", @@ -8142,6 +8142,51 @@ }, "description": "Converts Python docstrings into Markdown or cleaned plaintext for documentation and display" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::_countLeadingSpaces", + "name": "_countLeadingSpaces", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/_countLeadingSpaces", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", + "func_name": "_countLeadingSpaces", + "line_range": [ + 862, + 864 + ] + }, + "description": "count leading spaces" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::_isHeader", + "name": "_isHeader", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/_isHeader", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", + "func_name": "_isHeader", + "line_range": [ + 870, + 872 + ] + }, + "description": "detect header marker line" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::_isUndefinedOrWhitespace", + "name": "_isUndefinedOrWhitespace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/_isUndefinedOrWhitespace", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", + "func_name": "_isUndefinedOrWhitespace", + "line_range": [ + 866, + 868 + ] + }, + "description": "check undefined or whitespace" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::convertDocStringToMarkdown", "name": "convertDocStringToMarkdown", @@ -8188,340 +8233,356 @@ "description": "initialize converter with input; split and clean docstring lines; set initial parser state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter.convert", - "name": "DocStringConverter.convert", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter.convert", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._append", + "name": "DocStringConverter._append", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._append", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "convert", + "func_name": "_append", "line_range": [ - 135, - 167 + 845, + 848 ], "class_name": "DocStringConverter" }, - "description": "convert docstring to markdown; apply epydoc fixes; iterate and parse input lines; close unclosed code blocks; trim and return final output" + "description": "append text to output buffer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._eatLine", - "name": "DocStringConverter._eatLine", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._eatLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._appendLine", + "name": "DocStringConverter._appendLine", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._appendLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_eatLine", + "func_name": "_appendLine", "line_range": [ - 169, - 171 + 835, + 843 ], "class_name": "DocStringConverter" }, - "description": "advance to next line" + "description": "append line to output with spacing; prevent duplicate empty lines" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLineOrUndefined", - "name": "DocStringConverter._currentLineOrUndefined", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLineOrUndefined", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._appendTextLine", + "name": "DocStringConverter._appendTextLine", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._appendTextLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_currentLineOrUndefined", + "func_name": "_appendTextLine", "line_range": [ - 173, - 175 + 310, + 398 ], "class_name": "DocStringConverter" }, - "description": "retrieve current line or undefined" + "description": "process inline code segments; escape markdown special characters; handle potential header and bullets; append processed line to output" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLine", - "name": "DocStringConverter._currentLine", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginBacktickBlock", + "name": "DocStringConverter._beginBacktickBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginBacktickBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_currentLine", + "func_name": "_beginBacktickBlock", "line_range": [ - 177, - 179 + 428, + 442 ], "class_name": "DocStringConverter" }, - "description": "get current line string" + "description": "detect and begin backtick code block; record backtick delimiter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentIndent", - "name": "DocStringConverter._currentIndent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentIndent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginDirective", + "name": "DocStringConverter._beginDirective", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginDirective", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_currentIndent", + "func_name": "_beginDirective", "line_range": [ - 181, - 183 + 550, + 559 ], "class_name": "DocStringConverter" }, - "description": "compute current line indent" + "description": "detect and begin directive parsing" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._prevIndent", - "name": "DocStringConverter._prevIndent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._prevIndent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginDocTest", + "name": "DocStringConverter._beginDocTest", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginDocTest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_prevIndent", + "func_name": "_beginDocTest", "line_range": [ - 185, - 187 + 459, + 468 ], "class_name": "DocStringConverter" }, - "description": "compute previous line indent" + "description": "detect and begin doctest block" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._lineAt", - "name": "DocStringConverter._lineAt", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._lineAt", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginFieldList", + "name": "DocStringConverter._beginFieldList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginFieldList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_lineAt", + "func_name": "_beginFieldList", "line_range": [ - 189, - 191 + 575, + 611 ], "class_name": "DocStringConverter" }, - "description": "retrieve line at index" + "description": "detect and handle field list entries; format and indent field list lines" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._nextBlockIndent", - "name": "DocStringConverter._nextBlockIndent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._nextBlockIndent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginList", + "name": "DocStringConverter._beginList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_nextBlockIndent", + "func_name": "_beginList", "line_range": [ - 193, - 197 + 721, + 768 ], "class_name": "DocStringConverter" }, - "description": "compute next nonempty line indent" + "description": "detect and begin list items; normalize list item indentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLineIsOutsideBlock", - "name": "DocStringConverter._currentLineIsOutsideBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLineIsOutsideBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginLiteralBlock", + "name": "DocStringConverter._beginLiteralBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginLiteralBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_currentLineIsOutsideBlock", + "func_name": "_beginLiteralBlock", "line_range": [ - 199, - 201 + 482, + 520 ], "class_name": "DocStringConverter" }, - "description": "detect current line outside block" + "description": "detect and begin literal block; establish literal block indent" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLineWithinBlock", - "name": "DocStringConverter._currentLineWithinBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLineWithinBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginMinIndentCodeBlock", + "name": "DocStringConverter._beginMinIndentCodeBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginMinIndentCodeBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_currentLineWithinBlock", + "func_name": "_beginMinIndentCodeBlock", "line_range": [ - 203, - 205 + 422, + 426 ], "class_name": "DocStringConverter" }, - "description": "extract current line within block" + "description": "begin min indent code block" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._pushAndSetState", - "name": "DocStringConverter._pushAndSetState", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._pushAndSetState", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginTableBlock", + "name": "DocStringConverter._beginTableBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginTableBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_pushAndSetState", + "func_name": "_beginTableBlock", "line_range": [ - 207, - 214 + 613, + 628 ], "class_name": "DocStringConverter" }, - "description": "push current state and set next" + "description": "detect and begin table block" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._popState", - "name": "DocStringConverter._popState", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._popState", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._convertIndent", + "name": "DocStringConverter._convertIndent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._convertIndent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_popState", + "func_name": "_convertIndent", "line_range": [ - 216, - 223 + 297, + 300 ], "class_name": "DocStringConverter" }, - "description": "restore previous parser state; terminate inline code on text restore" + "description": "convert leading indentation to nbsp" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseText", - "name": "DocStringConverter._parseText", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseText", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentIndent", + "name": "DocStringConverter._currentIndent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentIndent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_parseText", + "func_name": "_currentIndent", "line_range": [ - 225, - 263 + 181, + 183 ], "class_name": "DocStringConverter" }, - "description": "parse text and dispatch blocks; format and append plain text" + "description": "compute current line indent" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._formatPlainTextIndent", - "name": "DocStringConverter._formatPlainTextIndent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._formatPlainTextIndent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLine", + "name": "DocStringConverter._currentLine", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_formatPlainTextIndent", + "func_name": "_currentLine", "line_range": [ - 265, - 295 + 177, + 179 ], "class_name": "DocStringConverter" }, - "description": "insert line breaks for indent changes; normalize plain text indentation" + "description": "get current line string" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._convertIndent", - "name": "DocStringConverter._convertIndent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._convertIndent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLineIsOutsideBlock", + "name": "DocStringConverter._currentLineIsOutsideBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLineIsOutsideBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_convertIndent", + "func_name": "_currentLineIsOutsideBlock", "line_range": [ - 297, - 300 + 199, + 201 ], "class_name": "DocStringConverter" }, - "description": "convert leading indentation to nbsp" + "description": "detect current line outside block" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._escapeHtml", - "name": "DocStringConverter._escapeHtml", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._escapeHtml", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLineOrUndefined", + "name": "DocStringConverter._currentLineOrUndefined", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLineOrUndefined", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_escapeHtml", + "func_name": "_currentLineOrUndefined", "line_range": [ - 302, - 308 + 173, + 175 ], "class_name": "DocStringConverter" }, - "description": "escape html special characters" + "description": "retrieve current line or undefined" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._appendTextLine", - "name": "DocStringConverter._appendTextLine", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._appendTextLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._currentLineWithinBlock", + "name": "DocStringConverter._currentLineWithinBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._currentLineWithinBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_appendTextLine", + "func_name": "_currentLineWithinBlock", "line_range": [ - 310, - 398 + 203, + 205 ], "class_name": "DocStringConverter" }, - "description": "process inline code segments; escape markdown special characters; handle potential header and bullets; append processed line to output" + "description": "extract current line within block" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._preprocessTextLine", - "name": "DocStringConverter._preprocessTextLine", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._preprocessTextLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._eatLine", + "name": "DocStringConverter._eatLine", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._eatLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_preprocessTextLine", + "func_name": "_eatLine", "line_range": [ - 400, - 410 + 169, + 171 ], "class_name": "DocStringConverter" }, - "description": "apply literal block replacements; normalize double tick to backtick" + "description": "advance to next line" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseEmpty", - "name": "DocStringConverter._parseEmpty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseEmpty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._escapeHtml", + "name": "DocStringConverter._escapeHtml", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._escapeHtml", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_parseEmpty", + "func_name": "_escapeHtml", "line_range": [ - 412, - 420 + 302, + 308 ], "class_name": "DocStringConverter" }, - "description": "handle blank lines and paragraphs; manage state transitions on empties" + "description": "escape html special characters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginMinIndentCodeBlock", - "name": "DocStringConverter._beginMinIndentCodeBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginMinIndentCodeBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._formatPlainTextIndent", + "name": "DocStringConverter._formatPlainTextIndent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._formatPlainTextIndent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginMinIndentCodeBlock", + "func_name": "_formatPlainTextIndent", "line_range": [ - 422, - 426 + 265, + 295 ], "class_name": "DocStringConverter" }, - "description": "begin min indent code block" + "description": "insert line breaks for indent changes; normalize plain text indentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginBacktickBlock", - "name": "DocStringConverter._beginBacktickBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginBacktickBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._lineAt", + "name": "DocStringConverter._lineAt", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._lineAt", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginBacktickBlock", + "func_name": "_lineAt", "line_range": [ - 428, - 442 + 189, + 191 ], "class_name": "DocStringConverter" }, - "description": "detect and begin backtick code block; record backtick delimiter" + "description": "retrieve line at index" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._nextBlockIndent", + "name": "DocStringConverter._nextBlockIndent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._nextBlockIndent", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", + "func_name": "_nextBlockIndent", + "line_range": [ + 193, + 197 + ], + "class_name": "DocStringConverter" + }, + "description": "compute next nonempty line indent" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseBacktickBlock", @@ -8540,20 +8601,36 @@ "description": "parse backtick code block lines; close backtick block on delimiter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginDocTest", - "name": "DocStringConverter._beginDocTest", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginDocTest", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseDirective", + "name": "DocStringConverter._parseDirective", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseDirective", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginDocTest", + "func_name": "_parseDirective", "line_range": [ - 459, - 468 + 787, + 818 ], "class_name": "DocStringConverter" }, - "description": "detect and begin doctest block" + "description": "parse directive header and dispatch block; handle class and code-block directives" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseDirectiveBlock", + "name": "DocStringConverter._parseDirectiveBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseDirectiveBlock", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", + "func_name": "_parseDirectiveBlock", + "line_range": [ + 820, + 833 + ], + "class_name": "DocStringConverter" + }, + "description": "parse directive block body; append directive content as top-level text" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseDocTest", @@ -8572,20 +8649,36 @@ "description": "parse doctest block lines" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginLiteralBlock", - "name": "DocStringConverter._beginLiteralBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginLiteralBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseEmpty", + "name": "DocStringConverter._parseEmpty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginLiteralBlock", + "func_name": "_parseEmpty", "line_range": [ - 482, - 520 + 412, + 420 ], "class_name": "DocStringConverter" }, - "description": "detect and begin literal block; establish literal block indent" + "description": "handle blank lines and paragraphs; manage state transitions on empties" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseList", + "name": "DocStringConverter._parseList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseList", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", + "func_name": "_parseList", + "line_range": [ + 770, + 785 + ], + "class_name": "DocStringConverter" + }, + "description": "parse list item continuation lines" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseLiteralBlock", @@ -8620,164 +8713,100 @@ "description": "parse single-line literal block" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginDirective", - "name": "DocStringConverter._beginDirective", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginDirective", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseTableBlock", + "name": "DocStringConverter._parseTableBlock", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseTableBlock", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginDirective", + "func_name": "_parseTableBlock", "line_range": [ - 550, - 559 + 645, + 719 ], "class_name": "DocStringConverter" }, - "description": "detect and begin directive parsing" + "description": "convert rest table to markdown; parse table header and rows" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginFieldList", - "name": "DocStringConverter._beginFieldList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginFieldList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseText", + "name": "DocStringConverter._parseText", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseText", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginFieldList", + "func_name": "_parseText", "line_range": [ - 575, - 611 + 225, + 263 ], "class_name": "DocStringConverter" }, - "description": "detect and handle field list entries; format and indent field list lines" + "description": "parse text and dispatch blocks; format and append plain text" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginTableBlock", - "name": "DocStringConverter._beginTableBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginTableBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._popState", + "name": "DocStringConverter._popState", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._popState", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginTableBlock", + "func_name": "_popState", "line_range": [ - 613, - 628 + 216, + 223 ], "class_name": "DocStringConverter" }, - "description": "detect and begin table block" + "description": "restore previous parser state; terminate inline code on text restore" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseTableBlock", - "name": "DocStringConverter._parseTableBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseTableBlock", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_parseTableBlock", - "line_range": [ - 645, - 719 - ], - "class_name": "DocStringConverter" - }, - "description": "convert rest table to markdown; parse table header and rows" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._beginList", - "name": "DocStringConverter._beginList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._beginList", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_beginList", - "line_range": [ - 721, - 768 - ], - "class_name": "DocStringConverter" - }, - "description": "detect and begin list items; normalize list item indentation" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseList", - "name": "DocStringConverter._parseList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseList", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_parseList", - "line_range": [ - 770, - 785 - ], - "class_name": "DocStringConverter" - }, - "description": "parse list item continuation lines" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseDirective", - "name": "DocStringConverter._parseDirective", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseDirective", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_parseDirective", - "line_range": [ - 787, - 818 - ], - "class_name": "DocStringConverter" - }, - "description": "parse directive header and dispatch block; handle class and code-block directives" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._parseDirectiveBlock", - "name": "DocStringConverter._parseDirectiveBlock", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._parseDirectiveBlock", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._preprocessTextLine", + "name": "DocStringConverter._preprocessTextLine", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._preprocessTextLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_parseDirectiveBlock", + "func_name": "_preprocessTextLine", "line_range": [ - 820, - 833 + 400, + 410 ], "class_name": "DocStringConverter" }, - "description": "parse directive block body; append directive content as top-level text" + "description": "apply literal block replacements; normalize double tick to backtick" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._appendLine", - "name": "DocStringConverter._appendLine", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._appendLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._prevIndent", + "name": "DocStringConverter._prevIndent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._prevIndent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_appendLine", + "func_name": "_prevIndent", "line_range": [ - 835, - 843 + 185, + 187 ], "class_name": "DocStringConverter" }, - "description": "append line to output with spacing; prevent duplicate empty lines" + "description": "compute previous line indent" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._append", - "name": "DocStringConverter._append", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._append", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._pushAndSetState", + "name": "DocStringConverter._pushAndSetState", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter._pushAndSetState", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_append", + "func_name": "_pushAndSetState", "line_range": [ - 845, - 848 + 207, + 214 ], "class_name": "DocStringConverter" }, - "description": "append text to output buffer" + "description": "push current state and set next" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter._trimOutputAndAppendLine", @@ -8796,49 +8825,20 @@ "description": "trim trailing whitespace and append line; control optional newline before appending" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::_countLeadingSpaces", - "name": "_countLeadingSpaces", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/_countLeadingSpaces", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_countLeadingSpaces", - "line_range": [ - 862, - 864 - ] - }, - "description": "count leading spaces" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::_isUndefinedOrWhitespace", - "name": "_isUndefinedOrWhitespace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/_isUndefinedOrWhitespace", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_isUndefinedOrWhitespace", - "line_range": [ - 866, - 868 - ] - }, - "description": "check undefined or whitespace" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::_isHeader", - "name": "_isHeader", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/_isHeader", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts::DocStringConverter.convert", + "name": "DocStringConverter.convert", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringConversion.ts/DocStringConverter.convert", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts", - "func_name": "_isHeader", + "func_name": "convert", "line_range": [ - 870, - 872 - ] + 135, + 167 + ], + "class_name": "DocStringConverter" }, - "description": "detect header marker line" + "description": "convert docstring to markdown; apply epydoc fixes; iterate and parse input lines; close unclosed code blocks; trim and return final output" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::__file__", @@ -8850,10 +8850,10 @@ "func_name": "docStringUtils", "line_range": [ 1, - 153 + 240 ] }, - "description": "Parses Python docstrings and extracts parameter and attribute docs in Epytext, reST, and Google styles" + "description": "Cleans Python docstrings and extracts parameter, attribute, and return documentation" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::cleanAndSplitDocString", @@ -8868,7 +8868,22 @@ 59 ] }, - "description": "normalize whitespace and line endings; replace tabs with spaces; split docstring into lines; remove common leading indentation; trim first line whitespace specially; strip leading and trailing blank lines" + "description": "normalize docstring text; trim docstring indentation; remove blank docstring boundaries" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::extractAttributeDocumentation", + "name": "extractAttributeDocumentation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringUtils.ts/extractAttributeDocumentation", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts", + "func_name": "extractAttributeDocumentation", + "line_range": [ + 112, + 152 + ] + }, + "description": "extract attribute documentation" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::extractParameterDocumentation", @@ -8883,22 +8898,22 @@ 110 ] }, - "description": "validate inputs before extraction; extract parameter description from docstring; recognize common parameter annotation styles; return documentation substring for parameter" + "description": "extract parameter documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::extractAttributeDocumentation", - "name": "extractAttributeDocumentation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringUtils.ts/extractAttributeDocumentation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::extractReturnDocumentation", + "name": "extractReturnDocumentation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Format analyzer output/type and trace text/docStringUtils.ts/extractReturnDocumentation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts", - "func_name": "extractAttributeDocumentation", + "func_name": "extractReturnDocumentation", "line_range": [ - 112, - 152 + 154, + 239 ] }, - "description": "validate inputs before extraction; extract attribute description from docstring; recognize common attribute annotation styles; return documentation substring for attribute" + "description": "extract return documentation; collect return section description" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::__file__", @@ -8916,64 +8931,64 @@ "description": "Provides type analysis and special-case handling for Python Enum classes and enum members" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isEnumMetaclass", - "name": "isEnumMetaclass", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/isEnumMetaclass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::createEnumType", + "name": "createEnumType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/createEnumType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "isEnumMetaclass", + "func_name": "createEnumType", "line_range": [ - 50, - 54 + 80, + 301 ] }, - "description": "detect enum metaclass" + "description": "create enum class type; parse functional form enum arguments; extract enum entry names and values; populate class symbol table with members; assign literal value types to members; compute mro and set base classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isEnumClassWithMembers", - "name": "isEnumClassWithMembers", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/isEnumClassWithMembers", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::getEnumAutoValueType", + "name": "getEnumAutoValueType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/getEnumAutoValueType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "isEnumClassWithMembers", + "func_name": "getEnumAutoValueType", "line_range": [ - 58, - 77 + 715, + 746 ] }, - "description": "determine if enum class has members; detect members matching class instance" + "description": "determine auto value type; use custom generator return type; ignore builtin generator default; default to int type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::createEnumType", - "name": "createEnumType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/createEnumType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::getEnumDeclaredValueType", + "name": "getEnumDeclaredValueType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/getEnumDeclaredValueType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "createEnumType", + "func_name": "getEnumDeclaredValueType", "line_range": [ - 80, - 301 + 551, + 577 ] }, - "description": "create enum class type; parse functional form enum arguments; extract enum entry names and values; populate class symbol table with members; assign literal value types to members; compute mro and set base classes" + "description": "retrieve declared enum value type; ignore inherited enum base declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::transformTypeForEnumMember", - "name": "transformTypeForEnumMember", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/transformTypeForEnumMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::getTypeOfEnumMember", + "name": "getTypeOfEnumMember", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/getTypeOfEnumMember", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "transformTypeForEnumMember", + "func_name": "getTypeOfEnumMember", "line_range": [ - 311, - 535 + 579, + 713 ] }, - "description": "resolve enum member type; determine if name is enum member; apply declared annotation to member; handle aliasing to other enum members; support membership and nonmembership wrappers; exclude descriptors and private names; prevent infinite recursion during resolution; treat decorated functions and classes as members" + "description": "determine enum member type; resolve name attribute type; resolve value attribute type; aggregate literal member types; respect declared value type; respect explicit member overrides; consider custom metaclass behavior; consider custom constructors" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isDeclInEnumClass", @@ -8991,64 +9006,64 @@ "description": "determine if declaration is inside enum class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::getEnumDeclaredValueType", - "name": "getEnumDeclaredValueType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/getEnumDeclaredValueType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isEnumClassWithMembers", + "name": "isEnumClassWithMembers", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/isEnumClassWithMembers", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "getEnumDeclaredValueType", + "func_name": "isEnumClassWithMembers", "line_range": [ - 551, - 577 + 58, + 77 ] }, - "description": "retrieve declared enum value type; ignore inherited enum base declarations" + "description": "determine if enum class has members; detect members matching class instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::getTypeOfEnumMember", - "name": "getTypeOfEnumMember", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/getTypeOfEnumMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isEnumMetaclass", + "name": "isEnumMetaclass", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/isEnumMetaclass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "getTypeOfEnumMember", + "func_name": "isEnumMetaclass", "line_range": [ - 579, - 713 + 50, + 54 ] }, - "description": "determine enum member type; resolve name attribute type; resolve value attribute type; aggregate literal member types; respect declared value type; respect explicit member overrides; consider custom metaclass behavior; consider custom constructors" + "description": "detect enum metaclass" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::getEnumAutoValueType", - "name": "getEnumAutoValueType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/getEnumAutoValueType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isReprEnumClass", + "name": "isReprEnumClass", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/isReprEnumClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "getEnumAutoValueType", + "func_name": "isReprEnumClass", "line_range": [ - 715, - 746 + 748, + 750 ] }, - "description": "determine auto value type; use custom generator return type; ignore builtin generator default; default to int type" + "description": "detect repr enum subclass" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::isReprEnumClass", - "name": "isReprEnumClass", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/isReprEnumClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::transformTypeForEnumMember", + "name": "transformTypeForEnumMember", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/enums.ts/transformTypeForEnumMember", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts", - "func_name": "isReprEnumClass", + "func_name": "transformTypeForEnumMember", "line_range": [ - 748, - 750 + 311, + 535 ] }, - "description": "detect repr enum subclass" + "description": "resolve enum member type; determine if name is enum member; apply declared annotation to member; handle aliasing to other enum members; support membership and nonmembership wrappers; exclude descriptors and private names; prevent infinite recursion during resolution; treat decorated functions and classes as members" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts::__file__", @@ -9126,36 +9141,36 @@ "description": "initialize empty log storage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts::ImportLogger.log", - "name": "ImportLogger.log", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importLogger.ts/ImportLogger.log", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts::ImportLogger.getLogs", + "name": "ImportLogger.getLogs", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importLogger.ts/ImportLogger.getLogs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts", - "func_name": "log", + "func_name": "getLogs", "line_range": [ - 13, - 15 + 17, + 19 ], "class_name": "ImportLogger" }, - "description": "record import messages" + "description": "retrieve recorded log messages" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts::ImportLogger.getLogs", - "name": "ImportLogger.getLogs", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importLogger.ts/ImportLogger.getLogs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts::ImportLogger.log", + "name": "ImportLogger.log", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importLogger.ts/ImportLogger.log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts", - "func_name": "getLogs", + "func_name": "log", "line_range": [ - 17, - 19 + 13, + 15 ], "class_name": "ImportLogger" }, - "description": "retrieve recorded log messages" + "description": "record import messages" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::__file__", @@ -9167,10 +9182,40 @@ "func_name": "importResolver", "line_range": [ 1, - 2576 + 2646 + ] + }, + "description": "Resolves Python imports to modules, paths, stubs, and typing metadata for Pyright analysis" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::_getModuleNameInfoFromPath", + "name": "_getModuleNameInfoFromPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/_getModuleNameInfoFromPath", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", + "func_name": "_getModuleNameInfoFromPath", + "line_range": [ + 2583, + 2637 + ] + }, + "description": "derive module name from path; normalize package module name; validate module name identifiers" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::_isNativeModuleFileExtension", + "name": "_isNativeModuleFileExtension", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/_isNativeModuleFileExtension", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", + "func_name": "_isNativeModuleFileExtension", + "line_range": [ + 2639, + 2641 ] }, - "description": "Resolves Python imports to filesystem modules, packages, typeshed and stub sources for static type analysis" + "description": "identify native module extension" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::createImportedModuleDescriptor", @@ -9185,7 +9230,52 @@ 79 ] }, - "description": "create imported module descriptor; count leading relative import dots; split module name into parts" + "description": "describe imported module; initialize imported symbols" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::formatImportName", + "name": "formatImportName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/formatImportName", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", + "func_name": "formatImportName", + "line_range": [ + 2558, + 2560 + ] + }, + "description": "format import name" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::getModuleNameFromPath", + "name": "getModuleNameFromPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/getModuleNameFromPath", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", + "func_name": "getModuleNameFromPath", + "line_range": [ + 2570, + 2581 + ] + }, + "description": "derive module name; reject invalid module names" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::getParentImportResolutionRoot", + "name": "getParentImportResolutionRoot", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/getParentImportResolutionRoot", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", + "func_name": "getParentImportResolutionRoot", + "line_range": [ + 2562, + 2568 + ] + }, + "description": "resolve parent import root" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver", @@ -9197,1065 +9287,990 @@ "func_name": "ImportResolver", "line_range": [ 94, - 2480 + 2550 ] }, - "description": "initialize resolver caches and providers; configure filesystem and cache helpers" + "description": "initialize import resolution services" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.isSupportedImportSourceFile", - "name": "ImportResolver.isSupportedImportSourceFile", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.isSupportedImportSourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._addFilteredSuggestionsAbsolute", + "name": "ImportResolver._addFilteredSuggestionsAbsolute", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._addFilteredSuggestionsAbsolute", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "isSupportedImportSourceFile", + "func_name": "_addFilteredSuggestionsAbsolute", "line_range": [ - 131, - 134 + 2305, + 2389 ], "class_name": "ImportResolver" }, - "description": "check supported source file" + "description": "add filtered import suggestions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.isSupportedImportFile", - "name": "ImportResolver.isSupportedImportFile", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.isSupportedImportFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._buildStdlibCache", + "name": "ImportResolver._buildStdlibCache", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._buildStdlibCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "isSupportedImportFile", + "func_name": "_buildStdlibCache", "line_range": [ - 136, - 139 + 1932, + 1990 ], "class_name": "ImportResolver" }, - "description": "check supported import file" + "description": "index standard library modules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.invalidateCache", - "name": "ImportResolver.invalidateCache", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.invalidateCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._findAndResolveNativeModule", + "name": "ImportResolver._findAndResolveNativeModule", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._findAndResolveNativeModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "invalidateCache", + "func_name": "_findAndResolveNativeModule", "line_range": [ - 141, - 150 + 2455, + 2489 ], "class_name": "ImportResolver" }, - "description": "invalidate import resolver cache" + "description": "resolve native module file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveImport", - "name": "ImportResolver.resolveImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._findTypeshedPath", + "name": "ImportResolver._findTypeshedPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._findTypeshedPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "resolveImport", + "func_name": "_findTypeshedPath", "line_range": [ - 154, - 162 + 1869, + 1929 ], "class_name": "ImportResolver" }, - "description": "resolve import to file" + "description": "find typeshed root" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getCompletionSuggestions", - "name": "ImportResolver.getCompletionSuggestions", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getCompletionSuggestions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsAbsolute", + "name": "ImportResolver._getCompletionSuggestionsAbsolute", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsAbsolute", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getCompletionSuggestions", + "func_name": "_getCompletionSuggestionsAbsolute", "line_range": [ - 164, - 194 + 2243, + 2303 ], "class_name": "ImportResolver" }, - "description": "provide import completion suggestions" + "description": "suggest absolute import completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getConfigOptions", - "name": "ImportResolver.getConfigOptions", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsRelative", + "name": "ImportResolver._getCompletionSuggestionsRelative", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsRelative", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getConfigOptions", + "func_name": "_getCompletionSuggestionsRelative", "line_range": [ - 196, - 198 + 2227, + 2241 ], "class_name": "ImportResolver" }, - "description": "retrieve configuration options" + "description": "suggest relative import completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.setConfigOptions", - "name": "ImportResolver.setConfigOptions", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.setConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsStrict", + "name": "ImportResolver._getCompletionSuggestionsStrict", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsStrict", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "setConfigOptions", + "func_name": "_getCompletionSuggestionsStrict", "line_range": [ - 200, - 203 + 997, + 1062 ], "class_name": "ImportResolver" }, - "description": "update configuration options" + "description": "suggest strict import completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getSourceFilesFromStub", - "name": "ImportResolver.getSourceFilesFromStub", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getSourceFilesFromStub", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsTypeshedPath", + "name": "ImportResolver._getCompletionSuggestionsTypeshedPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsTypeshedPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getSourceFilesFromStub", + "func_name": "_getCompletionSuggestionsTypeshedPath", "line_range": [ - 206, - 302 + 1997, + 2042 ], "class_name": "ImportResolver" }, - "description": "map stub to source files" + "description": "suggest typeshed import completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getModuleNameForImport", - "name": "ImportResolver.getModuleNameForImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getModuleNameForImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getImportCacheKey", + "name": "ImportResolver._getImportCacheKey", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getImportCacheKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getModuleNameForImport", + "func_name": "_getImportCacheKey", "line_range": [ - 307, - 323 + 1499, + 1501 ], "class_name": "ImportResolver" }, - "description": "derive module name for import" + "description": "create import lookup key" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedStdLibPath", - "name": "ImportResolver.getTypeshedStdLibPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedStdLibPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getModuleNameForImport", + "name": "ImportResolver._getModuleNameForImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getModuleNameForImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getTypeshedStdLibPath", + "func_name": "_getModuleNameForImport", "line_range": [ - 325, - 332 + 1064, + 1266 ], "class_name": "ImportResolver" }, - "description": "locate standard library stub path" + "description": "derive module import metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedThirdPartyPath", - "name": "ImportResolver.getTypeshedThirdPartyPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedThirdPartyPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getPyTypedInfo", + "name": "ImportResolver._getPyTypedInfo", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getPyTypedInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getTypeshedThirdPartyPath", + "func_name": "_getPyTypedInfo", "line_range": [ - 334, - 336 + 2447, + 2453 ], "class_name": "ImportResolver" }, - "description": "locate third party stub path" + "description": "read package typing metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.isStdlibModule", - "name": "ImportResolver.isStdlibModule", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.isStdlibModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getStdlibTypeshedPath", + "name": "ImportResolver._getStdlibTypeshedPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getStdlibTypeshedPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "isStdlibModule", + "func_name": "_getStdlibTypeshedPath", "line_range": [ - 338, - 344 + 2047, + 2074 ], "class_name": "ImportResolver" }, - "description": "check standard library module" + "description": "locate standard typeshed path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getImportRoots", - "name": "ImportResolver.getImportRoots", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getImportRoots", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getThirdPartyTypeshedPackagePaths", + "name": "ImportResolver._getThirdPartyTypeshedPackagePaths", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getThirdPartyTypeshedPackagePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getImportRoots", + "func_name": "_getThirdPartyTypeshedPackagePaths", "line_range": [ - 346, - 393 + 2129, + 2149 ], "class_name": "ImportResolver" }, - "description": "compute import root directories" + "description": "collect third party stub paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.ensurePartialStubPackages", - "name": "ImportResolver.ensurePartialStubPackages", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.ensurePartialStubPackages", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getThirdPartyTypeshedPackageRoots", + "name": "ImportResolver._getThirdPartyTypeshedPackageRoots", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getThirdPartyTypeshedPackageRoots", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "ensurePartialStubPackages", + "func_name": "_getThirdPartyTypeshedPackageRoots", "line_range": [ - 395, - 427 + 2151, + 2157 ], "class_name": "ImportResolver" }, - "description": "ensure partial stub packages present" + "description": "collect third party stub roots" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getPythonSearchPaths", - "name": "ImportResolver.getPythonSearchPaths", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getPythonSearchPaths", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getThirdPartyTypeshedPath", + "name": "ImportResolver._getThirdPartyTypeshedPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getThirdPartyTypeshedPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getPythonSearchPaths", + "func_name": "_getThirdPartyTypeshedPath", "line_range": [ - 429, - 442 + 2076, + 2082 ], "class_name": "ImportResolver" }, - "description": "enumerate python search paths" + "description": "locate third party typeshed path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedStdlibExcludeList", - "name": "ImportResolver.getTypeshedStdlibExcludeList", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedStdlibExcludeList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getTypeshedInfoProvider", + "name": "ImportResolver._getTypeshedInfoProvider", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getTypeshedInfoProvider", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getTypeshedStdlibExcludeList", + "func_name": "_getTypeshedInfoProvider", "line_range": [ - 444, - 501 + 2159, + 2161 ], "class_name": "ImportResolver" }, - "description": "compute standard library exclude list" + "description": "provide typeshed information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedPathEx", - "name": "ImportResolver.getTypeshedPathEx", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedPathEx", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._invalidateFileSystemCache", + "name": "ImportResolver._invalidateFileSystemCache", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._invalidateFileSystemCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getTypeshedPathEx", + "func_name": "_invalidateFileSystemCache", "line_range": [ - 505, - 507 + 1268, + 1270 ], "class_name": "ImportResolver" }, - "description": "resolve extended stub path" + "description": "reset file system state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveImportInternal", - "name": "ImportResolver.resolveImportInternal", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveImportInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isNamespacePackageResolved", + "name": "ImportResolver._isNamespacePackageResolved", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isNamespacePackageResolved", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "resolveImportInternal", + "func_name": "_isNamespacePackageResolved", "line_range": [ - 511, - 588 + 1534, + 1546 ], "class_name": "ImportResolver" }, - "description": "perform core import resolution" + "description": "detect resolved namespace package" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.fileExistsCached", - "name": "ImportResolver.fileExistsCached", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.fileExistsCached", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isNativeModuleFileName", + "name": "ImportResolver._isNativeModuleFileName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isNativeModuleFileName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "fileExistsCached", + "func_name": "_isNativeModuleFileName", "line_range": [ - 590, - 592 + 2519, + 2528 ], "class_name": "ImportResolver" }, - "description": "check file existence cached" + "description": "recognize native module file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.dirExistsCached", - "name": "ImportResolver.dirExistsCached", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.dirExistsCached", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isPossibleImportDir", + "name": "ImportResolver._isPossibleImportDir", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isPossibleImportDir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "dirExistsCached", + "func_name": "_isPossibleImportDir", "line_range": [ - 594, - 596 + 849, + 869 ], "class_name": "ImportResolver" }, - "description": "check directory existence cached" + "description": "identify importable directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.addResultsToCache", - "name": "ImportResolver.addResultsToCache", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.addResultsToCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isResolvableSuggestion", + "name": "ImportResolver._isResolvableSuggestion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isResolvableSuggestion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "addResultsToCache", + "func_name": "_isResolvableSuggestion", "line_range": [ - 598, - 615 + 2393, + 2425 ], "class_name": "ImportResolver" }, - "description": "store import results in cache" + "description": "validate import suggestion" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveAbsoluteImport", - "name": "ImportResolver.resolveAbsoluteImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveAbsoluteImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isStdlibTypeshedStubValidForVersion", + "name": "ImportResolver._isStdlibTypeshedStubValidForVersion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isStdlibTypeshedStubValidForVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "resolveAbsoluteImport", + "func_name": "_isStdlibTypeshedStubValidForVersion", "line_range": [ - 619, - 677 + 2084, + 2127 ], "class_name": "ImportResolver" }, - "description": "resolve absolute import path" + "description": "validate standard stub version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveImportEx", - "name": "ImportResolver.resolveImportEx", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveImportEx", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isUniqueValidSuggestion", + "name": "ImportResolver._isUniqueValidSuggestion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isUniqueValidSuggestion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "resolveImportEx", + "func_name": "_isUniqueValidSuggestion", "line_range": [ - 682, - 691 + 2427, + 2443 ], "class_name": "ImportResolver" }, - "description": "perform extended import resolution" + "description": "enforce unique valid suggestion" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveNativeImportEx", - "name": "ImportResolver.resolveNativeImportEx", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveNativeImportEx", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._lookUpResultsInCache", + "name": "ImportResolver._lookUpResultsInCache", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._lookUpResultsInCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "resolveNativeImportEx", + "func_name": "_lookUpResultsInCache", "line_range": [ - 696, - 702 + 1503, + 1527 ], "class_name": "ImportResolver" }, - "description": "resolve native module import" + "description": "retrieve import result" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getNativeModuleName", - "name": "ImportResolver.getNativeModuleName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getNativeModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._pickBestImport", + "name": "ImportResolver._pickBestImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._pickBestImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getNativeModuleName", + "func_name": "_pickBestImport", "line_range": [ - 704, - 710 + 1767, + 1867 ], "class_name": "ImportResolver" }, - "description": "derive native module name" + "description": "choose preferred import result" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.filterImplicitImports", - "name": "ImportResolver.filterImplicitImports", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.filterImplicitImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveAbsoluteImport", + "name": "ImportResolver._resolveAbsoluteImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveAbsoluteImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "filterImplicitImports", + "func_name": "_resolveAbsoluteImport", "line_range": [ - 714, - 746 + 1272, + 1497 ], "class_name": "ImportResolver" }, - "description": "filter implicit imports" + "description": "resolve absolute module path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.findImplicitImports", - "name": "ImportResolver.findImplicitImports", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.findImplicitImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveBestAbsoluteImport", + "name": "ImportResolver._resolveBestAbsoluteImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveBestAbsoluteImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "findImplicitImports", + "func_name": "_resolveBestAbsoluteImport", "line_range": [ - 748, - 840 + 1548, + 1751 ], "class_name": "ImportResolver" }, - "description": "discover implicit imports" + "description": "select best absolute import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isPossibleImportDir", - "name": "ImportResolver._isPossibleImportDir", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isPossibleImportDir", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveImportStrict", + "name": "ImportResolver._resolveImportStrict", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveImportStrict", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isPossibleImportDir", + "func_name": "_resolveImportStrict", "line_range": [ - 842, - 862 + 871, + 995 ], "class_name": "ImportResolver" }, - "description": "check possible import directory" + "description": "resolve strict import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveImportStrict", - "name": "ImportResolver._resolveImportStrict", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveImportStrict", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveNativeModuleWithStub", + "name": "ImportResolver._resolveNativeModuleWithStub", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveNativeModuleWithStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_resolveImportStrict", + "func_name": "_resolveNativeModuleWithStub", "line_range": [ - 864, - 988 + 2491, + 2517 ], "class_name": "ImportResolver" }, - "description": "resolve import using strict rules" + "description": "prefer stubbed native module" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsStrict", - "name": "ImportResolver._getCompletionSuggestionsStrict", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsStrict", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveRelativeImport", + "name": "ImportResolver._resolveRelativeImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveRelativeImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getCompletionSuggestionsStrict", + "func_name": "_resolveRelativeImport", "line_range": [ - 990, - 1055 + 2163, + 2225 ], "class_name": "ImportResolver" }, - "description": "gather strict completion suggestions" + "description": "resolve relative import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getModuleNameForImport", - "name": "ImportResolver._getModuleNameForImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getModuleNameForImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", + "name": "ImportResolver._shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getModuleNameForImport", + "func_name": "_shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", "line_range": [ - 1057, - 1259 + 1753, + 1765 ], "class_name": "ImportResolver" }, - "description": "compute module name for file" + "description": "avoid external stub fallback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._invalidateFileSystemCache", - "name": "ImportResolver._invalidateFileSystemCache", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._invalidateFileSystemCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._shouldWalkUp", + "name": "ImportResolver._shouldWalkUp", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._shouldWalkUp", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_invalidateFileSystemCache", + "func_name": "_shouldWalkUp", "line_range": [ - 1261, - 1263 + 2543, + 2549 ], "class_name": "ImportResolver" }, - "description": "invalidate filesystem cache" + "description": "allow parent directory search" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveAbsoluteImport", - "name": "ImportResolver._resolveAbsoluteImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveAbsoluteImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._tryWalkUp", + "name": "ImportResolver._tryWalkUp", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._tryWalkUp", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_resolveAbsoluteImport", + "func_name": "_tryWalkUp", "line_range": [ - 1265, - 1454 + 2530, + 2541 ], "class_name": "ImportResolver" }, - "description": "perform thorough absolute import resolution" + "description": "select parent directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getImportCacheKey", - "name": "ImportResolver._getImportCacheKey", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getImportCacheKey", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.addResultsToCache", + "name": "ImportResolver.addResultsToCache", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.addResultsToCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getImportCacheKey", + "func_name": "addResultsToCache", "line_range": [ - 1456, - 1458 + 605, + 622 ], "class_name": "ImportResolver" }, - "description": "compute import cache key" + "description": "remember import result" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._lookUpResultsInCache", - "name": "ImportResolver._lookUpResultsInCache", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._lookUpResultsInCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.dirExistsCached", + "name": "ImportResolver.dirExistsCached", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.dirExistsCached", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_lookUpResultsInCache", + "func_name": "dirExistsCached", "line_range": [ - 1460, - 1484 + 601, + 603 ], "class_name": "ImportResolver" }, - "description": "lookup cached import results" + "description": "check directory existence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isNamespacePackageResolved", - "name": "ImportResolver._isNamespacePackageResolved", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isNamespacePackageResolved", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.ensurePartialStubPackages", + "name": "ImportResolver.ensurePartialStubPackages", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.ensurePartialStubPackages", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isNamespacePackageResolved", + "func_name": "ensurePartialStubPackages", "line_range": [ - 1491, - 1503 + 402, + 434 ], "class_name": "ImportResolver" }, - "description": "determine namespace package resolution" + "description": "prepare partial stub packages" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveBestAbsoluteImport", - "name": "ImportResolver._resolveBestAbsoluteImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveBestAbsoluteImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.fileExistsCached", + "name": "ImportResolver.fileExistsCached", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.fileExistsCached", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_resolveBestAbsoluteImport", + "func_name": "fileExistsCached", "line_range": [ - 1505, - 1708 + 597, + 599 ], "class_name": "ImportResolver" }, - "description": "select best absolute import candidate" + "description": "check file existence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", - "name": "ImportResolver._shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.filterImplicitImports", + "name": "ImportResolver.filterImplicitImports", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.filterImplicitImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_shouldSkipThirdPartyTypeshedFallbackForLocalNamespace", + "func_name": "filterImplicitImports", "line_range": [ - 1710, - 1722 + 721, + 753 ], "class_name": "ImportResolver" }, - "description": "determine skipping of third party fallback" + "description": "filter implicit imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._pickBestImport", - "name": "ImportResolver._pickBestImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._pickBestImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.findImplicitImports", + "name": "ImportResolver.findImplicitImports", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.findImplicitImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_pickBestImport", + "func_name": "findImplicitImports", "line_range": [ - 1724, - 1824 + 755, + 847 ], "class_name": "ImportResolver" }, - "description": "choose best import result" + "description": "discover implicit imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._findTypeshedPath", - "name": "ImportResolver._findTypeshedPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._findTypeshedPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getCompletionSuggestions", + "name": "ImportResolver.getCompletionSuggestions", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getCompletionSuggestions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_findTypeshedPath", + "func_name": "getCompletionSuggestions", "line_range": [ - 1826, - 1886 + 164, + 194 ], "class_name": "ImportResolver" }, - "description": "find stub path for module" + "description": "suggest import completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._buildStdlibCache", - "name": "ImportResolver._buildStdlibCache", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._buildStdlibCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getConfigOptions", + "name": "ImportResolver.getConfigOptions", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_buildStdlibCache", + "func_name": "getConfigOptions", "line_range": [ - 1889, - 1920 + 196, + 198 ], "class_name": "ImportResolver" }, - "description": "build standard library cache" + "description": "provide resolver configuration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsTypeshedPath", - "name": "ImportResolver._getCompletionSuggestionsTypeshedPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsTypeshedPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getImportRoots", + "name": "ImportResolver.getImportRoots", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getImportRoots", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getCompletionSuggestionsTypeshedPath", + "func_name": "getImportRoots", "line_range": [ - 1927, - 1972 + 353, + 400 ], "class_name": "ImportResolver" }, - "description": "get completion suggestions from stubs" + "description": "collect import search roots" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getStdlibTypeshedPath", - "name": "ImportResolver._getStdlibTypeshedPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getStdlibTypeshedPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getModuleNameForImport", + "name": "ImportResolver.getModuleNameForImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getModuleNameForImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getStdlibTypeshedPath", + "func_name": "getModuleNameForImport", "line_range": [ - 1977, - 2004 + 307, + 323 ], "class_name": "ImportResolver" }, - "description": "get standard library stub path" + "description": "derive importable module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getThirdPartyTypeshedPath", - "name": "ImportResolver._getThirdPartyTypeshedPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getThirdPartyTypeshedPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getNativeModuleName", + "name": "ImportResolver.getNativeModuleName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getNativeModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getThirdPartyTypeshedPath", + "func_name": "getNativeModuleName", "line_range": [ - 2006, - 2012 + 711, + 717 ], "class_name": "ImportResolver" }, - "description": "get third party stub path" + "description": "derive native module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isStdlibTypeshedStubValidForVersion", - "name": "ImportResolver._isStdlibTypeshedStubValidForVersion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isStdlibTypeshedStubValidForVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getPythonSearchPaths", + "name": "ImportResolver.getPythonSearchPaths", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getPythonSearchPaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isStdlibTypeshedStubValidForVersion", + "func_name": "getPythonSearchPaths", "line_range": [ - 2014, - 2057 + 436, + 449 ], "class_name": "ImportResolver" }, - "description": "validate standard library stub version" + "description": "collect python search paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getThirdPartyTypeshedPackagePaths", - "name": "ImportResolver._getThirdPartyTypeshedPackagePaths", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getThirdPartyTypeshedPackagePaths", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getSourceFilesFromStub", + "name": "ImportResolver.getSourceFilesFromStub", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getSourceFilesFromStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getThirdPartyTypeshedPackagePaths", + "func_name": "getSourceFilesFromStub", "line_range": [ - 2059, - 2079 + 206, + 302 ], "class_name": "ImportResolver" }, - "description": "list third party stub package paths" + "description": "find implementation files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getThirdPartyTypeshedPackageRoots", - "name": "ImportResolver._getThirdPartyTypeshedPackageRoots", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getThirdPartyTypeshedPackageRoots", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedPathEx", + "name": "ImportResolver.getTypeshedPathEx", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedPathEx", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getThirdPartyTypeshedPackageRoots", + "func_name": "getTypeshedPathEx", "line_range": [ - 2081, - 2087 + 512, + 514 ], "class_name": "ImportResolver" }, - "description": "compute third party stub roots" + "description": "locate typeshed directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getTypeshedInfoProvider", - "name": "ImportResolver._getTypeshedInfoProvider", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getTypeshedInfoProvider", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedStdlibExcludeList", + "name": "ImportResolver.getTypeshedStdlibExcludeList", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedStdlibExcludeList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getTypeshedInfoProvider", + "func_name": "getTypeshedStdlibExcludeList", "line_range": [ - 2089, - 2091 + 451, + 508 ], "class_name": "ImportResolver" }, - "description": "access stub info provider" + "description": "list excluded standard stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveRelativeImport", - "name": "ImportResolver._resolveRelativeImport", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveRelativeImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedStdLibPath", + "name": "ImportResolver.getTypeshedStdLibPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedStdLibPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_resolveRelativeImport", + "func_name": "getTypeshedStdLibPath", "line_range": [ - 2093, - 2155 + 325, + 332 ], "class_name": "ImportResolver" }, - "description": "resolve relative import path" + "description": "locate standard library stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsRelative", - "name": "ImportResolver._getCompletionSuggestionsRelative", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsRelative", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.getTypeshedThirdPartyPath", + "name": "ImportResolver.getTypeshedThirdPartyPath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.getTypeshedThirdPartyPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getCompletionSuggestionsRelative", + "func_name": "getTypeshedThirdPartyPath", "line_range": [ - 2157, - 2171 + 334, + 336 ], "class_name": "ImportResolver" }, - "description": "get relative import completions" + "description": "locate third party stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getCompletionSuggestionsAbsolute", - "name": "ImportResolver._getCompletionSuggestionsAbsolute", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getCompletionSuggestionsAbsolute", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.invalidateCache", + "name": "ImportResolver.invalidateCache", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.invalidateCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getCompletionSuggestionsAbsolute", + "func_name": "invalidateCache", "line_range": [ - 2173, - 2233 + 141, + 150 ], "class_name": "ImportResolver" }, - "description": "get absolute import completions" + "description": "reset import resolution state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._addFilteredSuggestionsAbsolute", - "name": "ImportResolver._addFilteredSuggestionsAbsolute", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._addFilteredSuggestionsAbsolute", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.isStdlibModule", + "name": "ImportResolver.isStdlibModule", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.isStdlibModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_addFilteredSuggestionsAbsolute", + "func_name": "isStdlibModule", "line_range": [ - 2235, - 2319 + 338, + 351 ], "class_name": "ImportResolver" }, - "description": "add filtered absolute suggestions" + "description": "identify standard library modules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isResolvableSuggestion", - "name": "ImportResolver._isResolvableSuggestion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isResolvableSuggestion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.isSupportedImportFile", + "name": "ImportResolver.isSupportedImportFile", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.isSupportedImportFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isResolvableSuggestion", + "func_name": "isSupportedImportFile", "line_range": [ - 2323, - 2355 + 136, + 139 ], "class_name": "ImportResolver" }, - "description": "check suggestion resolvability" + "description": "recognize supported import files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isUniqueValidSuggestion", - "name": "ImportResolver._isUniqueValidSuggestion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isUniqueValidSuggestion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.isSupportedImportSourceFile", + "name": "ImportResolver.isSupportedImportSourceFile", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.isSupportedImportSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isUniqueValidSuggestion", + "func_name": "isSupportedImportSourceFile", "line_range": [ - 2357, - 2373 + 131, + 134 ], "class_name": "ImportResolver" }, - "description": "check uniqueness and validity" + "description": "recognize supported source files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._getPyTypedInfo", - "name": "ImportResolver._getPyTypedInfo", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._getPyTypedInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveAbsoluteImport", + "name": "ImportResolver.resolveAbsoluteImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveAbsoluteImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getPyTypedInfo", + "func_name": "resolveAbsoluteImport", "line_range": [ - 2377, - 2383 + 626, + 684 ], "class_name": "ImportResolver" }, - "description": "retrieve package typing metadata" + "description": "resolve absolute import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._findAndResolveNativeModule", - "name": "ImportResolver._findAndResolveNativeModule", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._findAndResolveNativeModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveImport", + "name": "ImportResolver.resolveImport", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_findAndResolveNativeModule", + "func_name": "resolveImport", "line_range": [ - 2385, - 2419 + 154, + 162 ], "class_name": "ImportResolver" }, - "description": "find and resolve native module" + "description": "resolve module import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._resolveNativeModuleWithStub", - "name": "ImportResolver._resolveNativeModuleWithStub", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._resolveNativeModuleWithStub", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveImportEx", + "name": "ImportResolver.resolveImportEx", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveImportEx", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_resolveNativeModuleWithStub", + "func_name": "resolveImportEx", "line_range": [ - 2421, - 2447 + 689, + 698 ], "class_name": "ImportResolver" }, - "description": "resolve native module using stub" + "description": "resolve import candidate" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._isNativeModuleFileName", - "name": "ImportResolver._isNativeModuleFileName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._isNativeModuleFileName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveImportInternal", + "name": "ImportResolver.resolveImportInternal", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveImportInternal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isNativeModuleFileName", + "func_name": "resolveImportInternal", "line_range": [ - 2449, - 2458 + 518, + 595 ], "class_name": "ImportResolver" }, - "description": "check native module filename" + "description": "resolve import request" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._tryWalkUp", - "name": "ImportResolver._tryWalkUp", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._tryWalkUp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.resolveNativeImportEx", + "name": "ImportResolver.resolveNativeImportEx", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.resolveNativeImportEx", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_tryWalkUp", + "func_name": "resolveNativeImportEx", "line_range": [ - 2460, - 2471 + 703, + 709 ], "class_name": "ImportResolver" }, - "description": "walk up parent directories" + "description": "resolve native module import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver._shouldWalkUp", - "name": "ImportResolver._shouldWalkUp", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver._shouldWalkUp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::ImportResolver.setConfigOptions", + "name": "ImportResolver.setConfigOptions", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/ImportResolver.setConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_shouldWalkUp", + "func_name": "setConfigOptions", "line_range": [ - 2473, - 2479 + 200, + 203 ], "class_name": "ImportResolver" }, - "description": "determine directory walk eligibility" + "description": "update resolver configuration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::formatImportName", - "name": "formatImportName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/formatImportName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::isDefaultWorkspace", + "name": "isDefaultWorkspace", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/isDefaultWorkspace", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "formatImportName", + "func_name": "isDefaultWorkspace", "line_range": [ - 2488, - 2490 + 2643, + 2645 ] }, - "description": "format import name string" + "description": "identify default workspace" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::getParentImportResolutionRoot", - "name": "getParentImportResolutionRoot", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/getParentImportResolutionRoot", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getParentImportResolutionRoot", - "line_range": [ - 2492, - 2498 - ] - }, - "description": "select parent import resolution root; use source directory as fallback" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::getModuleNameFromPath", - "name": "getModuleNameFromPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/getModuleNameFromPath", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "getModuleNameFromPath", - "line_range": [ - 2500, - 2511 - ] - }, - "description": "derive module name from path; validate module name characters" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::_getModuleNameInfoFromPath", - "name": "_getModuleNameInfoFromPath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/_getModuleNameInfoFromPath", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_getModuleNameInfoFromPath", - "line_range": [ - 2513, - 2567 - ] - }, - "description": "derive module name info from path; strip file extension from filename; strip native module platform suffix; remove package init filename; optionally strip top container directory; strip stubs package suffix; check for invalid identifier characters; assemble dotted module name string" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::_isNativeModuleFileExtension", - "name": "_isNativeModuleFileExtension", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/_isNativeModuleFileExtension", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "_isNativeModuleFileExtension", - "line_range": [ - 2569, - 2571 - ] - }, - "description": "check native module file extension" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::isDefaultWorkspace", - "name": "isDefaultWorkspace", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolver.ts/isDefaultWorkspace", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts", - "func_name": "isDefaultWorkspace", - "line_range": [ - 2573, - 2575 - ] - }, - "description": "check whether uri is default workspace" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::__file__", - "name": "importResolverFileSystem", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::__file__", + "name": "importResolverFileSystem", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts", "meta": { "type": "file", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", @@ -10298,52 +10313,52 @@ "description": "capture file system dependency" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.invalidateCache", - "name": "ImportResolverFileSystemImpl.invalidateCache", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.invalidateCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl._getCachedDir", + "name": "ImportResolverFileSystemImpl._getCachedDir", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl._getCachedDir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "invalidateCache", + "func_name": "_getCachedDir", "line_range": [ - 34, - 38 + 155, + 201 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "clear directory and file caches" + "description": "retrieve and cache directory metadata; compute resolvable names from directory entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.readdirEntriesSync", - "name": "ImportResolverFileSystemImpl.readdirEntriesSync", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.readdirEntriesSync", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.dirExists", + "name": "ImportResolverFileSystemImpl.dirExists", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.dirExists", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "readdirEntriesSync", + "func_name": "dirExists", "line_range": [ - 40, - 42 + 71, + 99 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "read directory entries synchronously" + "description": "check if path refers to directory; resolve symbolic links when necessary" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.getResolvableNamesInDirectory", - "name": "ImportResolverFileSystemImpl.getResolvableNamesInDirectory", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.getResolvableNamesInDirectory", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.existsSync", + "name": "ImportResolverFileSystemImpl.existsSync", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.existsSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "getResolvableNamesInDirectory", + "func_name": "existsSync", "line_range": [ - 44, - 46 + 133, + 135 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "get resolvable names in directory" + "description": "check if path exists synchronously" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.fileExists", @@ -10362,132 +10377,132 @@ "description": "check if path refers to file; resolve symbolic links when necessary" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.dirExists", - "name": "ImportResolverFileSystemImpl.dirExists", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.dirExists", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.getFilesInDirectory", + "name": "ImportResolverFileSystemImpl.getFilesInDirectory", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.getFilesInDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "dirExists", + "func_name": "getFilesInDirectory", "line_range": [ - 71, - 99 + 101, + 131 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "check if path refers to directory; resolve symbolic links when necessary" + "description": "list files in directory; cache file list for directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.getFilesInDirectory", - "name": "ImportResolverFileSystemImpl.getFilesInDirectory", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.getFilesInDirectory", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.getModulePath", + "name": "ImportResolverFileSystemImpl.getModulePath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.getModulePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "getFilesInDirectory", + "func_name": "getModulePath", "line_range": [ - 101, - 131 + 151, + 153 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "list files in directory; cache file list for directory" + "description": "retrieve module root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.existsSync", - "name": "ImportResolverFileSystemImpl.existsSync", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.existsSync", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.getResolvableNamesInDirectory", + "name": "ImportResolverFileSystemImpl.getResolvableNamesInDirectory", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.getResolvableNamesInDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "existsSync", + "func_name": "getResolvableNamesInDirectory", "line_range": [ - 133, - 135 + 44, + 46 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "check if path exists synchronously" + "description": "get resolvable names in directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.readFileSync", - "name": "ImportResolverFileSystemImpl.readFileSync", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.readFileSync", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.invalidateCache", + "name": "ImportResolverFileSystemImpl.invalidateCache", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.invalidateCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "readFileSync", + "func_name": "invalidateCache", "line_range": [ - 139, - 141 + 34, + 38 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "read file contents synchronously" + "description": "clear directory and file caches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.statSync", - "name": "ImportResolverFileSystemImpl.statSync", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.statSync", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.readdirEntriesSync", + "name": "ImportResolverFileSystemImpl.readdirEntriesSync", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.readdirEntriesSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "statSync", + "func_name": "readdirEntriesSync", "line_range": [ - 143, - 145 + 40, + 42 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "get file system stats synchronously" + "description": "read directory entries synchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.realCasePath", - "name": "ImportResolverFileSystemImpl.realCasePath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.realCasePath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.readFileSync", + "name": "ImportResolverFileSystemImpl.readFileSync", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.readFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "realCasePath", + "func_name": "readFileSync", "line_range": [ - 147, - 149 + 139, + 141 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "resolve path to real case" + "description": "read file contents synchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.getModulePath", - "name": "ImportResolverFileSystemImpl.getModulePath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.getModulePath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.realCasePath", + "name": "ImportResolverFileSystemImpl.realCasePath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.realCasePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "getModulePath", + "func_name": "realCasePath", "line_range": [ - 151, - 153 + 147, + 149 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "retrieve module root path" + "description": "resolve path to real case" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl._getCachedDir", - "name": "ImportResolverFileSystemImpl._getCachedDir", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl._getCachedDir", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts::ImportResolverFileSystemImpl.statSync", + "name": "ImportResolverFileSystemImpl.statSync", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importResolverFileSystem.ts/ImportResolverFileSystemImpl.statSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts", - "func_name": "_getCachedDir", + "func_name": "statSync", "line_range": [ - 155, - 201 + 143, + 145 ], "class_name": "ImportResolverFileSystemImpl" }, - "description": "retrieve and cache directory metadata; compute resolvable names from directory entries" + "description": "get file system stats synchronously" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts::__file__", @@ -10529,55 +10544,40 @@ "func_name": "importStatementUtils", "line_range": [ 1, - 1016 - ] - }, - "description": "Summarizes and manipulates Python import statements and generates edits for auto-imports and formatting" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getImportGroup", - "name": "getImportGroup", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getImportGroup", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getImportGroup", - "line_range": [ - 85, - 109 + 1037 ] }, - "description": "determine import group; infer relative import from syntax" + "description": "Provides utilities for classifying, comparing, editing, and resolving Python import statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::compareImportStatements", - "name": "compareImportStatements", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/compareImportStatements", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_compareImportNames", + "name": "_compareImportNames", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_compareImportNames", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "compareImportStatements", + "func_name": "_compareImportNames", "line_range": [ - 112, - 123 + 236, + 253 ] }, - "description": "order imports by group then module" + "description": "order import names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTopLevelImports", - "name": "getTopLevelImports", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTopLevelImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_convertInsertionEditsToTextEdits", + "name": "_convertInsertionEditsToTextEdits", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_convertInsertionEditsToTextEdits", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getTopLevelImports", + "func_name": "_convertInsertionEditsToTextEdits", "line_range": [ - 127, - 162 + 394, + 438 ] }, - "description": "collect top-level import statements; detect import grouping boundaries" + "description": "merge import insertion edits; order inserted import statements" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_getImportSymbolNameType", @@ -10592,37 +10592,37 @@ 174 ] }, - "description": "classify import symbol name type" + "description": "classify import symbol name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextEditsForAutoImportSymbolAddition", - "name": "getTextEditsForAutoImportSymbolAddition", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextEditsForAutoImportSymbolAddition", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_getInsertionEditForAutoImportInsertion", + "name": "_getInsertionEditForAutoImportInsertion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_getInsertionEditForAutoImportInsertion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getTextEditsForAutoImportSymbolAddition", + "func_name": "_getInsertionEditForAutoImportInsertion", "line_range": [ - 176, - 234 + 524, + 664 ] }, - "description": "generate edits to add symbol to existing import; skip addition if symbol already imported; merge edits at same insertion point" + "description": "create auto import insertion edit; place import among existing imports; preserve import group separation; preserve module header spacing" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_compareImportNames", - "name": "_compareImportNames", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_compareImportNames", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_getInsertionEditsForAutoImportInsertion", + "name": "_getInsertionEditsForAutoImportInsertion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_getInsertionEditsForAutoImportInsertion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "_compareImportNames", + "func_name": "_getInsertionEditsForAutoImportInsertion", "line_range": [ - 236, - 253 + 440, + 522 ] }, - "description": "compare import symbol names for sorting; prioritize by symbol kind then alphabetical" + "description": "create import statements; place relative imports; sort imported names; deduplicate imported names" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_getTextEditsForAutoImportSymbolAddition", @@ -10637,157 +10637,157 @@ 333 ] }, - "description": "compute insertion position and replacement text; preserve existing import formatting and indentation" + "description": "choose symbol insertion point; preserve import name formatting; create symbol addition edit" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextEditsForAutoImportInsertions", - "name": "getTextEditsForAutoImportInsertions", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextEditsForAutoImportInsertions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_processImportFromNode", + "name": "_processImportFromNode", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_processImportFromNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getTextEditsForAutoImportInsertions", + "func_name": "_processImportFromNode", "line_range": [ - 343, - 372 + 698, + 748 ] }, - "description": "generate edits for inserting new imports; group import names by module for insertion" + "description": "record from import metadata; collect implicit imported names; index preferred import source" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextEditsForAutoImportInsertion", - "name": "getTextEditsForAutoImportInsertion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextEditsForAutoImportInsertion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_processImportNode", + "name": "_processImportNode", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_processImportNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getTextEditsForAutoImportInsertion", + "func_name": "_processImportNode", "line_range": [ - 374, - 392 + 666, + 696 ] }, - "description": "generate insertion edits for a specific module; return consolidated text edits for insertion" + "description": "record import statement metadata; index import by file path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_convertInsertionEditsToTextEdits", - "name": "_convertInsertionEditsToTextEdits", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_convertInsertionEditsToTextEdits", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::compareImportStatements", + "name": "compareImportStatements", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/compareImportStatements", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "_convertInsertionEditsToTextEdits", + "func_name": "compareImportStatements", "line_range": [ - 394, - 438 + 112, + 123 ] }, - "description": "convert insertion edits into combined text edits; merge edits at same insertion point; sort import statements within merged edits" + "description": "order import statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_getInsertionEditsForAutoImportInsertion", - "name": "_getInsertionEditsForAutoImportInsertion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_getInsertionEditsForAutoImportInsertion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::formatModuleName", + "name": "formatModuleName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/formatModuleName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "_getInsertionEditsForAutoImportInsertion", + "func_name": "formatModuleName", "line_range": [ - 440, - 501 + 750, + 759 ] }, - "description": "assemble insertion edits for import statements; sort and deduplicate import names for insertion; decide between import and from import forms" + "description": "format module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_getInsertionEditForAutoImportInsertion", - "name": "_getInsertionEditForAutoImportInsertion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_getInsertionEditForAutoImportInsertion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getAllImportNames", + "name": "getAllImportNames", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getAllImportNames", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "_getInsertionEditForAutoImportInsertion", + "func_name": "getAllImportNames", "line_range": [ - 503, - 643 + 775, + 783 ] }, - "description": "compute insertion position for auto import; order imports by group and module name; preserve surrounding whitespace and headers; insert blank line between import groups" + "description": "list imported names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_processImportNode", - "name": "_processImportNode", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_processImportNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getConsecutiveNumberPairs", + "name": "getConsecutiveNumberPairs", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getConsecutiveNumberPairs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "_processImportNode", + "func_name": "getConsecutiveNumberPairs", "line_range": [ - 645, - 675 + 865, + 896 ] }, - "description": "extract import metadata from node; record import placement order; associate resolved file path with import; avoid overwriting existing import associations" + "description": "group consecutive number ranges" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::_processImportFromNode", - "name": "_processImportFromNode", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/_processImportFromNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getContainingImportStatement", + "name": "getContainingImportStatement", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getContainingImportStatement", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "_processImportFromNode", + "func_name": "getContainingImportStatement", "line_range": [ - 677, - 727 + 761, + 773 ] }, - "description": "extract import from statement metadata; record implicit imports when available; associate or overwrite resolved file path for import; prefer shorter module names when overwriting" + "description": "find containing import statement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::formatModuleName", - "name": "formatModuleName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/formatModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getDirectoryLeadingDotsPointsTo", + "name": "getDirectoryLeadingDotsPointsTo", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getDirectoryLeadingDotsPointsTo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "formatModuleName", + "func_name": "getDirectoryLeadingDotsPointsTo", "line_range": [ - 729, - 738 + 965, + 976 ] }, - "description": "construct module name string from node" + "description": "resolve relative parent directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getContainingImportStatement", - "name": "getContainingImportStatement", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getContainingImportStatement", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getEditsPreservingFirstCommentAfterCommaIfExist", + "name": "getEditsPreservingFirstCommentAfterCommaIfExist", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getEditsPreservingFirstCommentAfterCommaIfExist", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getContainingImportStatement", + "func_name": "getEditsPreservingFirstCommentAfterCommaIfExist", "line_range": [ - 740, - 752 + 825, + 863 ] }, - "description": "find nearest import statement ancestor" + "description": "compute deletion edits preserving comments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getAllImportNames", - "name": "getAllImportNames", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getAllImportNames", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getImportGroup", + "name": "getImportGroup", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getImportGroup", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getAllImportNames", + "func_name": "getImportGroup", "line_range": [ - 754, - 762 + 85, + 109 ] }, - "description": "retrieve import names from statement" + "description": "classify import origin; infer unresolved import group" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getImportGroupFromModuleNameAndType", @@ -10798,116 +10798,116 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", "func_name": "getImportGroupFromModuleNameAndType", "line_range": [ - 764, - 773 + 785, + 794 ] }, - "description": "classify import group from module type" + "description": "classify module import group" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextRangeForImportNameDeletion", - "name": "getTextRangeForImportNameDeletion", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextRangeForImportNameDeletion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getRelativeModuleName", + "name": "getRelativeModuleName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getRelativeModuleName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getTextRangeForImportNameDeletion", + "func_name": "getRelativeModuleName", "line_range": [ - 775, - 802 + 898, + 963 ] }, - "description": "compute text ranges for deleting import names; merge consecutive deletions into ranges; preserve adjacent commas and comments" + "description": "compute relative module name; reject library relative imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getEditsPreservingFirstCommentAfterCommaIfExist", - "name": "getEditsPreservingFirstCommentAfterCommaIfExist", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getEditsPreservingFirstCommentAfterCommaIfExist", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getResolvedFilePath", + "name": "getResolvedFilePath", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getResolvedFilePath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getEditsPreservingFirstCommentAfterCommaIfExist", + "func_name": "getResolvedFilePath", "line_range": [ - 804, - 842 + 978, + 999 ] }, - "description": "compute edits preserving trailing comment; adjust deletion spans around commas" + "description": "resolve import file path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getConsecutiveNumberPairs", - "name": "getConsecutiveNumberPairs", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getConsecutiveNumberPairs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextEditsForAutoImportInsertion", + "name": "getTextEditsForAutoImportInsertion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextEditsForAutoImportInsertion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getConsecutiveNumberPairs", + "func_name": "getTextEditsForAutoImportInsertion", "line_range": [ - 844, - 875 + 374, + 392 ] }, - "description": "group consecutive indices into ranges; return singletons for isolated indices" + "description": "create auto import insertion edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getRelativeModuleName", - "name": "getRelativeModuleName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getRelativeModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextEditsForAutoImportInsertions", + "name": "getTextEditsForAutoImportInsertions", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextEditsForAutoImportInsertions", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getRelativeModuleName", + "func_name": "getTextEditsForAutoImportInsertions", "line_range": [ - 877, - 942 + 343, + 372 ] }, - "description": "compute relative module import path between files; prefer absolute imports for stub and typeshed; append filename symbol for file targets; ignore folder structure when requested" + "description": "group auto import requests; create auto import insertion edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getDirectoryLeadingDotsPointsTo", - "name": "getDirectoryLeadingDotsPointsTo", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getDirectoryLeadingDotsPointsTo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextEditsForAutoImportSymbolAddition", + "name": "getTextEditsForAutoImportSymbolAddition", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextEditsForAutoImportSymbolAddition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getDirectoryLeadingDotsPointsTo", + "func_name": "getTextEditsForAutoImportSymbolAddition", "line_range": [ - 944, - 955 + 176, + 234 ] }, - "description": "resolve directory referenced by leading dots; return undefined when root exceeded" + "description": "add symbols to import; avoid duplicate imported symbols; merge symbol addition edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getResolvedFilePath", - "name": "getResolvedFilePath", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getResolvedFilePath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTextRangeForImportNameDeletion", + "name": "getTextRangeForImportNameDeletion", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTextRangeForImportNameDeletion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "getResolvedFilePath", + "func_name": "getTextRangeForImportNameDeletion", "line_range": [ - 957, - 978 + 796, + 823 ] }, - "description": "derive resolved file path from import result; fallback to package directory or search path" + "description": "compute import name deletion ranges" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::haveSameParentModule", - "name": "haveSameParentModule", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/haveSameParentModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getTopLevelImports", + "name": "getTopLevelImports", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/getTopLevelImports", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", - "func_name": "haveSameParentModule", + "func_name": "getTopLevelImports", "line_range": [ - 980, - 993 + 127, + 162 ] }, - "description": "check if modules share same parent path" + "description": "collect top level imports; track import placement" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::getWildcardImportNames", @@ -10918,11 +10918,26 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", "func_name": "getWildcardImportNames", "line_range": [ - 996, - 1015 + 1017, + 1036 + ] + }, + "description": "resolve wildcard import names; filter private imported names" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::haveSameParentModule", + "name": "haveSameParentModule", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/importStatementUtils.ts/haveSameParentModule", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts", + "func_name": "haveSameParentModule", + "line_range": [ + 1001, + 1014 ] }, - "description": "collect names to import for wildcard imports; prefer dunder all names when present; exclude hidden and private symbols" + "description": "compare parent module names" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts::__file__", @@ -10954,21 +10969,6 @@ }, "description": "create namedtuple class type; validate namedtuple arguments; determine default argument count; synthesize constructor parameters from entries; add instance members for named fields; rename invalid entry names when allowed; synthesize match args tuple type; specialize tuple base types; compute class mro linearization; emit diagnostics for invalid names" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts::updateNamedTupleBaseClass", - "name": "updateNamedTupleBaseClass", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/namedTuples.ts/updateNamedTupleBaseClass", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts", - "func_name": "updateNamedTupleBaseClass", - "line_range": [ - 425, - 467 - ] - }, - "description": "clone and specialize namedtuple base; replace tuple base with specialized tuple; compute class mro linearization; report whether update occurred" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts::renameKeyword", "name": "renameKeyword", @@ -10999,6 +10999,21 @@ }, "description": "rename underscore prefixed field when allowed; report diagnostic for underscore name" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts::updateNamedTupleBaseClass", + "name": "updateNamedTupleBaseClass", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/namedTuples.ts/updateNamedTupleBaseClass", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts", + "func_name": "updateNamedTupleBaseClass", + "line_range": [ + 425, + 467 + ] + }, + "description": "clone and specialize namedtuple base; replace tuple base with specialized tuple; compute class mro linearization; report whether update occurred" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::__file__", "name": "operations", @@ -11015,199 +11030,199 @@ "description": "Evaluates types and validates semantics for unary, binary, augmented assignment, and ternary Python operators" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::validateBinaryOperation", - "name": "validateBinaryOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/validateBinaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::calcLiteralForBinaryOp", + "name": "calcLiteralForBinaryOp", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/calcLiteralForBinaryOp", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "validateBinaryOperation", + "func_name": "calcLiteralForBinaryOp", "line_range": [ - 108, - 246 + 967, + 1113 ] }, - "description": "validate boolean short circuit types; handle containment membership operations; validate arithmetic and binary operators; apply literal math optimizations; map and expand operand subtypes; return resolved result type; propagate magic method deprecation" + "description": "compute literal result for binary operation; compute string and bytes concatenation literal; compute integer literal arithmetic result; validate supported integer operators and numeric ranges; reject incompatible or conditional literal types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfBinaryOperation", - "name": "getTypeOfBinaryOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfBinaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::calcLiteralForUnaryOp", + "name": "calcLiteralForUnaryOp", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/calcLiteralForUnaryOp", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "getTypeOfBinaryOperation", + "func_name": "calcLiteralForUnaryOp", "line_range": [ - 248, - 488 + 918, + 964 ] }, - "description": "compute operand types with inference; support chained comparisons flattening; infer expected operand types heuristically; interpret bitwise or as union; normalize none for equality operators; construct diagnostic addendum details; delegate validation to binary operation validator; propagate incompleteness and errors" + "description": "compute literal result for unary operator; support int literal unary math; compute bitwise invert literal safely; support boolean literal negation; skip literal math for large unions; skip literal math for conditional types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfAugmentedAssignment", - "name": "getTypeOfAugmentedAssignment", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfAugmentedAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::convertFunctionToObject", + "name": "convertFunctionToObject", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/convertFunctionToObject", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "getTypeOfAugmentedAssignment", + "func_name": "convertFunctionToObject", "line_range": [ - 490, - 642 + 1151, + 1157 ] }, - "description": "evaluate augmented assignment type; resolve in-place magic method call; fall back to binary operation; apply literal math optimization; special-case tuple addition; record magic method deprecation; report unsupported operator issue; assign inferred type to destination; preserve unknown types during mapping; combine union subtypes to result type" + "description": "convert function type to object type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfUnaryOperation", - "name": "getTypeOfUnaryOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfUnaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::createUnionType", + "name": "createUnionType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/createUnionType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "getTypeOfUnaryOperation", + "func_name": "createUnionType", "line_range": [ - 644, - 766 + 818, + 915 ] }, - "description": "evaluate unary operation type; map operator to magic method; report optional operand usage; compute literal result for unary operation; invoke magic method for operator; enforce boolean result for not operator; report unsupported unary operator" + "description": "create union type from operands; validate union type arguments; report illegal union syntax; report missing type arguments; wrap union as class instance; preserve type form metadata; reject unsupported string forward references" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfTernaryOperation", - "name": "getTypeOfTernaryOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfTernaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::customMetaclassSupportsMethod", + "name": "customMetaclassSupportsMethod", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/customMetaclassSupportsMethod", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "getTypeOfTernaryOperation", + "func_name": "customMetaclassSupportsMethod", "line_range": [ - 768, - 816 + 1115, + 1146 ] }, - "description": "evaluate ternary expression types; evaluate test expression reachability; short-circuit using static test value; combine branch types into union; propagate incompleteness and type errors" + "description": "determine if custom metaclass supports method; verify instantiable class before metaclass check; ignore built in type metaclass methods; treat any or unknown metaclass members as unsupported" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::createUnionType", - "name": "createUnionType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/createUnionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfAugmentedAssignment", + "name": "getTypeOfAugmentedAssignment", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfAugmentedAssignment", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "createUnionType", + "func_name": "getTypeOfAugmentedAssignment", "line_range": [ - 818, - 915 + 490, + 642 ] }, - "description": "create union type from operands; validate union type arguments; report illegal union syntax; report missing type arguments; wrap union as class instance; preserve type form metadata; reject unsupported string forward references" + "description": "evaluate augmented assignment type; resolve in-place magic method call; fall back to binary operation; apply literal math optimization; special-case tuple addition; record magic method deprecation; report unsupported operator issue; assign inferred type to destination; preserve unknown types during mapping; combine union subtypes to result type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::calcLiteralForUnaryOp", - "name": "calcLiteralForUnaryOp", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/calcLiteralForUnaryOp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfBinaryOperation", + "name": "getTypeOfBinaryOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfBinaryOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "calcLiteralForUnaryOp", + "func_name": "getTypeOfBinaryOperation", "line_range": [ - 918, - 964 + 248, + 488 ] }, - "description": "compute literal result for unary operator; support int literal unary math; compute bitwise invert literal safely; support boolean literal negation; skip literal math for large unions; skip literal math for conditional types" + "description": "compute operand types with inference; support chained comparisons flattening; infer expected operand types heuristically; interpret bitwise or as union; normalize none for equality operators; construct diagnostic addendum details; delegate validation to binary operation validator; propagate incompleteness and errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::calcLiteralForBinaryOp", - "name": "calcLiteralForBinaryOp", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/calcLiteralForBinaryOp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfTernaryOperation", + "name": "getTypeOfTernaryOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfTernaryOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "calcLiteralForBinaryOp", + "func_name": "getTypeOfTernaryOperation", "line_range": [ - 967, - 1113 + 768, + 816 ] }, - "description": "compute literal result for binary operation; compute string and bytes concatenation literal; compute integer literal arithmetic result; validate supported integer operators and numeric ranges; reject incompatible or conditional literal types" + "description": "evaluate ternary expression types; evaluate test expression reachability; short-circuit using static test value; combine branch types into union; propagate incompleteness and type errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::customMetaclassSupportsMethod", - "name": "customMetaclassSupportsMethod", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/customMetaclassSupportsMethod", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::getTypeOfUnaryOperation", + "name": "getTypeOfUnaryOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/getTypeOfUnaryOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "customMetaclassSupportsMethod", + "func_name": "getTypeOfUnaryOperation", "line_range": [ - 1115, - 1146 + 644, + 766 ] }, - "description": "determine if custom metaclass supports method; verify instantiable class before metaclass check; ignore built in type metaclass methods; treat any or unknown metaclass members as unsupported" + "description": "evaluate unary operation type; map operator to magic method; report optional operand usage; compute literal result for unary operation; invoke magic method for operator; enforce boolean result for not operator; report unsupported unary operator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::convertFunctionToObject", - "name": "convertFunctionToObject", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/convertFunctionToObject", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::isExpressionLocalVariable", + "name": "isExpressionLocalVariable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/isExpressionLocalVariable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "convertFunctionToObject", + "func_name": "isExpressionLocalVariable", "line_range": [ - 1151, - 1157 + 1161, + 1173 ] }, - "description": "convert function type to object type" + "description": "detect local variable in expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::isExpressionLocalVariable", - "name": "isExpressionLocalVariable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/isExpressionLocalVariable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::validateArithmeticOperation", + "name": "validateArithmeticOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/validateArithmeticOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "isExpressionLocalVariable", + "func_name": "validateArithmeticOperation", "line_range": [ - 1161, - 1173 + 1244, + 1404 ] }, - "description": "detect local variable in expression" + "description": "infer result type for arithmetic operation; try operator methods on left and right operands; specialize tuple addition result when possible; emit diagnostics using inference context when available; capture and propagate deprecation information for operator methods; produce unknown result when unsupported" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::validateContainmentOperation", - "name": "validateContainmentOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/validateContainmentOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::validateBinaryOperation", + "name": "validateBinaryOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/validateBinaryOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "validateContainmentOperation", + "func_name": "validateBinaryOperation", "line_range": [ - 1175, - 1242 + 108, + 246 ] }, - "description": "infer boolean result for containment operation; apply containment protocol on container type; check iterable compatibility as fallback; emit diagnostic for unsupported containment; propagate deprecation information for containment methods" + "description": "validate boolean short circuit types; handle containment membership operations; validate arithmetic and binary operators; apply literal math optimizations; map and expand operand subtypes; return resolved result type; propagate magic method deprecation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::validateArithmeticOperation", - "name": "validateArithmeticOperation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/validateArithmeticOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts::validateContainmentOperation", + "name": "validateContainmentOperation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/operations.ts/validateContainmentOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/operations.ts", - "func_name": "validateArithmeticOperation", + "func_name": "validateContainmentOperation", "line_range": [ - 1244, - 1404 + 1175, + 1242 ] }, - "description": "infer result type for arithmetic operation; try operator methods on left and right operands; specialize tuple addition result when possible; emit diagnostics using inference context when available; capture and propagate deprecation information for operator methods; produce unknown result when unsupported" + "description": "infer boolean result for containment operation; apply containment protocol on container type; check iterable compatibility as fallback; emit diagnostic for unsupported containment; propagate deprecation information for containment methods" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts::__file__", @@ -11270,132 +11285,132 @@ "description": "initialize verification environment; configure import resolution; prepare program execution environment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier.verify", - "name": "PackageTypeVerifier.verify", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier.verify", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addAlternateSymbolName", + "name": "PackageTypeVerifier._addAlternateSymbolName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addAlternateSymbolName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "verify", + "func_name": "_addAlternateSymbolName", "line_range": [ - 114, - 212 + 358, + 372 ], "class_name": "PackageTypeVerifier" }, - "description": "verify package types; collect public package symbols; produce verification diagnostics report" + "description": "register alternate symbol name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier.getSymbolCategoryString", - "name": "PackageTypeVerifier.getSymbolCategoryString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier.getSymbolCategoryString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addPublicModulesRecursive", + "name": "PackageTypeVerifier._addPublicModulesRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addPublicModulesRecursive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "getSymbolCategoryString", + "func_name": "_addPublicModulesRecursive", "line_range": [ - 214, - 243 + 442, + 497 ], "class_name": "PackageTypeVerifier" }, - "description": "map symbol category to string" + "description": "recursively collect public modules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getDeepestPyTypedInfo", - "name": "PackageTypeVerifier._getDeepestPyTypedInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getDeepestPyTypedInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addSymbol", + "name": "PackageTypeVerifier._addSymbol", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getDeepestPyTypedInfo", + "func_name": "_addSymbol", "line_range": [ - 245, - 260 + 1558, + 1561 ], "class_name": "PackageTypeVerifier" }, - "description": "find deepest pytyped file" + "description": "add symbol to report" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._resolveImport", - "name": "PackageTypeVerifier._resolveImport", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._resolveImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addSymbolError", + "name": "PackageTypeVerifier._addSymbolError", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addSymbolError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_resolveImport", + "func_name": "_addSymbolError", "line_range": [ - 262, - 268 + 1563, + 1568 ], "class_name": "PackageTypeVerifier" }, - "description": "resolve module import" + "description": "attach error to symbol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getPublicSymbolsForModule", - "name": "PackageTypeVerifier._getPublicSymbolsForModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getPublicSymbolsForModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addSymbolWarning", + "name": "PackageTypeVerifier._addSymbolWarning", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addSymbolWarning", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getPublicSymbolsForModule", + "func_name": "_addSymbolWarning", "line_range": [ - 270, - 303 + 1570, + 1575 ], "class_name": "PackageTypeVerifier" }, - "description": "collect module public symbols" + "description": "attach warning to symbol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getPublicSymbolsInSymbolTable", - "name": "PackageTypeVerifier._getPublicSymbolsInSymbolTable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getPublicSymbolsInSymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getDeepestPyTypedInfo", + "name": "PackageTypeVerifier._getDeepestPyTypedInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getDeepestPyTypedInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getPublicSymbolsInSymbolTable", + "func_name": "_getDeepestPyTypedInfo", "line_range": [ - 305, - 356 + 245, + 260 ], "class_name": "PackageTypeVerifier" }, - "description": "extract public symbols from table" + "description": "find deepest pytyped file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addAlternateSymbolName", - "name": "PackageTypeVerifier._addAlternateSymbolName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addAlternateSymbolName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getDirectoryInfoForModule", + "name": "PackageTypeVerifier._getDirectoryInfoForModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getDirectoryInfoForModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_addAlternateSymbolName", + "func_name": "_getDirectoryInfoForModule", "line_range": [ - 358, - 372 + 1499, + 1526 ], "class_name": "PackageTypeVerifier" }, - "description": "register alternate symbol name" + "description": "resolve module directory information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._verifyTypesOfModule", - "name": "PackageTypeVerifier._verifyTypesOfModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._verifyTypesOfModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getFunctionTypeKnownStatus", + "name": "PackageTypeVerifier._getFunctionTypeKnownStatus", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getFunctionTypeKnownStatus", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_verifyTypesOfModule", + "func_name": "_getFunctionTypeKnownStatus", "line_range": [ - 374, - 419 + 984, + 1139 ], "class_name": "PackageTypeVerifier" }, - "description": "verify module types" + "description": "assess function type knownness" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getListOfPublicModules", @@ -11414,100 +11429,84 @@ "description": "list public modules in package" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addPublicModulesRecursive", - "name": "PackageTypeVerifier._addPublicModulesRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addPublicModulesRecursive", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_addPublicModulesRecursive", - "line_range": [ - 442, - 497 - ], - "class_name": "PackageTypeVerifier" - }, - "description": "recursively collect public modules" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._isLegalModulePartName", - "name": "PackageTypeVerifier._isLegalModulePartName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._isLegalModulePartName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getPublicSymbolsForModule", + "name": "PackageTypeVerifier._getPublicSymbolsForModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getPublicSymbolsForModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_isLegalModulePartName", + "func_name": "_getPublicSymbolsForModule", "line_range": [ - 499, - 504 + 270, + 303 ], "class_name": "PackageTypeVerifier" }, - "description": "validate module part name" + "description": "collect module public symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._shouldIgnoreType", - "name": "PackageTypeVerifier._shouldIgnoreType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._shouldIgnoreType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getPublicSymbolsInSymbolTable", + "name": "PackageTypeVerifier._getPublicSymbolsInSymbolTable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getPublicSymbolsInSymbolTable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_shouldIgnoreType", + "func_name": "_getPublicSymbolsInSymbolTable", "line_range": [ - 506, - 509 + 305, + 356 ], "class_name": "PackageTypeVerifier" }, - "description": "check if type should be ignored" + "description": "extract public symbols from table" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getTypeKnownStatusForSymbolTable", - "name": "PackageTypeVerifier._getTypeKnownStatusForSymbolTable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getTypeKnownStatusForSymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolCategory", + "name": "PackageTypeVerifier._getSymbolCategory", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getSymbolCategory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getTypeKnownStatusForSymbolTable", + "func_name": "_getSymbolCategory", "line_range": [ - 511, - 684 + 1442, + 1497 ], "class_name": "PackageTypeVerifier" }, - "description": "assess symbol table type knownness" + "description": "determine symbol category" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._reportMissingClassDocstring", - "name": "PackageTypeVerifier._reportMissingClassDocstring", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._reportMissingClassDocstring", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolForClass", + "name": "PackageTypeVerifier._getSymbolForClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getSymbolForClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_reportMissingClassDocstring", + "func_name": "_getSymbolForClass", "line_range": [ - 686, - 699 + 1141, + 1269 ], "class_name": "PackageTypeVerifier" }, - "description": "report missing class docstring" + "description": "gather class symbol information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._reportMissingFunctionDocstring", - "name": "PackageTypeVerifier._reportMissingFunctionDocstring", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._reportMissingFunctionDocstring", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolForModule", + "name": "PackageTypeVerifier._getSymbolForModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getSymbolForModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_reportMissingFunctionDocstring", + "func_name": "_getSymbolForModule", "line_range": [ - 701, - 750 + 1271, + 1314 ], "class_name": "PackageTypeVerifier" }, - "description": "report missing function docstring" + "description": "gather module symbol information" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolTypeKnownStatus", @@ -11525,54 +11524,6 @@ }, "description": "assess symbol type knownness" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getFunctionTypeKnownStatus", - "name": "PackageTypeVerifier._getFunctionTypeKnownStatus", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getFunctionTypeKnownStatus", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getFunctionTypeKnownStatus", - "line_range": [ - 984, - 1139 - ], - "class_name": "PackageTypeVerifier" - }, - "description": "assess function type knownness" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolForClass", - "name": "PackageTypeVerifier._getSymbolForClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getSymbolForClass", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getSymbolForClass", - "line_range": [ - 1141, - 1269 - ], - "class_name": "PackageTypeVerifier" - }, - "description": "gather class symbol information" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolForModule", - "name": "PackageTypeVerifier._getSymbolForModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getSymbolForModule", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getSymbolForModule", - "line_range": [ - 1271, - 1314 - ], - "class_name": "PackageTypeVerifier" - }, - "description": "gather module symbol information" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getTypeKnownStatus", "name": "PackageTypeVerifier._getTypeKnownStatus", @@ -11590,36 +11541,36 @@ "description": "determine type knownness status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getSymbolCategory", - "name": "PackageTypeVerifier._getSymbolCategory", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getSymbolCategory", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getTypeKnownStatusForSymbolTable", + "name": "PackageTypeVerifier._getTypeKnownStatusForSymbolTable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getTypeKnownStatusForSymbolTable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getSymbolCategory", + "func_name": "_getTypeKnownStatusForSymbolTable", "line_range": [ - 1442, - 1497 + 511, + 684 ], "class_name": "PackageTypeVerifier" }, - "description": "determine symbol category" + "description": "assess symbol table type knownness" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._getDirectoryInfoForModule", - "name": "PackageTypeVerifier._getDirectoryInfoForModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._getDirectoryInfoForModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._isLegalModulePartName", + "name": "PackageTypeVerifier._isLegalModulePartName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._isLegalModulePartName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_getDirectoryInfoForModule", + "func_name": "_isLegalModulePartName", "line_range": [ - 1499, - 1526 + 499, + 504 ], "class_name": "PackageTypeVerifier" }, - "description": "resolve module directory information" + "description": "validate module part name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._isSymbolTypeImplied", @@ -11638,52 +11589,68 @@ "description": "detect implied symbol names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addSymbol", - "name": "PackageTypeVerifier._addSymbol", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._reportMissingClassDocstring", + "name": "PackageTypeVerifier._reportMissingClassDocstring", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._reportMissingClassDocstring", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_addSymbol", + "func_name": "_reportMissingClassDocstring", "line_range": [ - 1558, - 1561 + 686, + 699 ], "class_name": "PackageTypeVerifier" }, - "description": "add symbol to report" + "description": "report missing class docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addSymbolError", - "name": "PackageTypeVerifier._addSymbolError", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addSymbolError", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._reportMissingFunctionDocstring", + "name": "PackageTypeVerifier._reportMissingFunctionDocstring", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._reportMissingFunctionDocstring", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_addSymbolError", + "func_name": "_reportMissingFunctionDocstring", "line_range": [ - 1563, - 1568 + 701, + 750 ], "class_name": "PackageTypeVerifier" }, - "description": "attach error to symbol" + "description": "report missing function docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._addSymbolWarning", - "name": "PackageTypeVerifier._addSymbolWarning", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._addSymbolWarning", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._resolveImport", + "name": "PackageTypeVerifier._resolveImport", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._resolveImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", - "func_name": "_addSymbolWarning", + "func_name": "_resolveImport", "line_range": [ - 1570, - 1575 + 262, + 268 ], "class_name": "PackageTypeVerifier" }, - "description": "attach warning to symbol" + "description": "resolve module import" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._shouldIgnoreType", + "name": "PackageTypeVerifier._shouldIgnoreType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._shouldIgnoreType", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", + "func_name": "_shouldIgnoreType", + "line_range": [ + 506, + 509 + ], + "class_name": "PackageTypeVerifier" + }, + "description": "check if type should be ignored" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._updateKnownStatusIfWorse", @@ -11701,6 +11668,54 @@ }, "description": "update known status if worse" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier._verifyTypesOfModule", + "name": "PackageTypeVerifier._verifyTypesOfModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier._verifyTypesOfModule", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", + "func_name": "_verifyTypesOfModule", + "line_range": [ + 374, + 419 + ], + "class_name": "PackageTypeVerifier" + }, + "description": "verify module types" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier.getSymbolCategoryString", + "name": "PackageTypeVerifier.getSymbolCategoryString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier.getSymbolCategoryString", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", + "func_name": "getSymbolCategoryString", + "line_range": [ + 214, + 243 + ], + "class_name": "PackageTypeVerifier" + }, + "description": "map symbol category to string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts::PackageTypeVerifier.verify", + "name": "PackageTypeVerifier.verify", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/packageTypeVerifier.ts/PackageTypeVerifier.verify", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts", + "func_name": "verify", + "line_range": [ + 114, + 212 + ], + "class_name": "PackageTypeVerifier" + }, + "description": "verify package types; collect public package symbols; produce verification diagnostics report" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::__file__", "name": "parameterUtils", @@ -11716,21 +11731,6 @@ }, "description": "Utilities for analyzing and handling function parameters, param lists, and related parameter typing in the analyzer" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::isTypedKwargs", - "name": "isTypedKwargs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/isTypedKwargs", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts", - "func_name": "isTypedKwargs", - "line_range": [ - 31, - 39 - ] - }, - "description": "detect unpacked typed dict kwargs" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::getParamListDetails", "name": "getParamListDetails", @@ -11776,6 +11776,21 @@ }, "description": "determine paramspec kwargs compatibility; compare paramspec types ignoring flags; accept dict string to any types; allow any or unknown arg types" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::isTypedKwargs", + "name": "isTypedKwargs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/isTypedKwargs", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts", + "func_name": "isTypedKwargs", + "line_range": [ + 31, + 39 + ] + }, + "description": "detect unpacked typed dict kwargs" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker", "name": "ParamAssignmentTracker", @@ -11808,20 +11823,20 @@ "description": "add virtual keyword parameter; detect duplicate keyword arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.lookupName", - "name": "ParamAssignmentTracker.lookupName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/ParamAssignmentTracker.lookupName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.getUnassignedParams", + "name": "ParamAssignmentTracker.getUnassignedParams", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/ParamAssignmentTracker.getUnassignedParams", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts", - "func_name": "lookupName", + "func_name": "getUnassignedParams", "line_range": [ - 451, - 462 + 477, + 492 ], "class_name": "ParamAssignmentTracker" }, - "description": "lookup parameter by keyword name; skip positional parameters during lookup" + "description": "list parameters missing required arguments; exclude unnamed parameters from results" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.lookupDetails", @@ -11840,36 +11855,36 @@ "description": "find param assignment info by details" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.markArgReceived", - "name": "ParamAssignmentTracker.markArgReceived", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/ParamAssignmentTracker.markArgReceived", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.lookupName", + "name": "ParamAssignmentTracker.lookupName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/ParamAssignmentTracker.lookupName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts", - "func_name": "markArgReceived", + "func_name": "lookupName", "line_range": [ - 470, - 473 + 451, + 462 ], "class_name": "ParamAssignmentTracker" }, - "description": "increment received argument count for param" + "description": "lookup parameter by keyword name; skip positional parameters during lookup" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.getUnassignedParams", - "name": "ParamAssignmentTracker.getUnassignedParams", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/ParamAssignmentTracker.getUnassignedParams", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts::ParamAssignmentTracker.markArgReceived", + "name": "ParamAssignmentTracker.markArgReceived", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parameterUtils.ts/ParamAssignmentTracker.markArgReceived", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts", - "func_name": "getUnassignedParams", + "func_name": "markArgReceived", "line_range": [ - 477, - 492 + 470, + 473 ], "class_name": "ParamAssignmentTracker" }, - "description": "list parameters missing required arguments; exclude unnamed parameters from results" + "description": "increment received argument count for param" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::__file__", @@ -11902,68 +11917,68 @@ "description": "store import root getter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.getImportResult", - "name": "ParentDirectoryCache.getImportResult", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.getImportResult", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.add", + "name": "ParentDirectoryCache.add", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.add", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts", - "func_name": "getImportResult", + "func_name": "add", "line_range": [ - 29, - 47 + 75, + 80 ], "class_name": "ParentDirectoryCache" }, - "description": "retrieve cached import result" + "description": "store import result in cache" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.checkValidPath", - "name": "ParentDirectoryCache.checkValidPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.checkValidPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.checked", + "name": "ParentDirectoryCache.checked", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.checked", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts", - "func_name": "checkValidPath", + "func_name": "checked", "line_range": [ - 49, - 69 + 71, + 73 ], "class_name": "ParentDirectoryCache" }, - "description": "validate path for parent directory search" + "description": "record checked import path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.checked", - "name": "ParentDirectoryCache.checked", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.checked", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.checkValidPath", + "name": "ParentDirectoryCache.checkValidPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.checkValidPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts", - "func_name": "checked", + "func_name": "checkValidPath", "line_range": [ - 71, - 73 + 49, + 69 ], "class_name": "ParentDirectoryCache" }, - "description": "record checked import path" + "description": "validate path for parent directory search" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.add", - "name": "ParentDirectoryCache.add", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.add", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.getImportResult", + "name": "ParentDirectoryCache.getImportResult", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/parentDirectoryCache.ts/ParentDirectoryCache.getImportResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts", - "func_name": "add", + "func_name": "getImportResult", "line_range": [ - 75, - 80 + 29, + 47 ], "class_name": "ParentDirectoryCache" }, - "description": "store import result in cache" + "description": "retrieve cached import result" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts::ParentDirectoryCache.reset", @@ -12053,40 +12068,101 @@ "func_name": "parseTreeUtils", "line_range": [ 1, - 2748 + 2776 ] }, - "description": "Utilities for traversing, querying, and printing Python parse tree nodes and their evaluation ranges" + "description": "Provides utilities for querying, matching, and inspecting Pyright parse tree nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getNodeDepth", - "name": "getNodeDepth", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getNodeDepth", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::_getEndPositionIfMultipleStatementsAreOnSameLine", + "name": "_getEndPositionIfMultipleStatementsAreOnSameLine", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/_getEndPositionIfMultipleStatementsAreOnSameLine", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getNodeDepth", + "func_name": "_getEndPositionIfMultipleStatementsAreOnSameLine", "line_range": [ - 74, - 84 + 2536, + 2576 ] }, - "description": "compute parse node depth" + "description": "resolve statement end position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::findNodeByPosition", - "name": "findNodeByPosition", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/findNodeByPosition", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::_getStartPositionIfMultipleStatementsAreOnSameLine", + "name": "_getStartPositionIfMultipleStatementsAreOnSameLine", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/_getStartPositionIfMultipleStatementsAreOnSameLine", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "findNodeByPosition", + "func_name": "_getStartPositionIfMultipleStatementsAreOnSameLine", "line_range": [ - 87, - 98 + 2491, + 2530 + ] + }, + "description": "resolve statement start position" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::CallNodeWalker", + "name": "CallNodeWalker", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/CallNodeWalker", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "CallNodeWalker", + "line_range": [ + 1709, + 1718 + ] + }, + "description": "configure call node reporting" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::CallNodeWalker.visitCall", + "name": "CallNodeWalker.visitCall", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/CallNodeWalker.visitCall", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "visitCall", + "line_range": [ + 1714, + 1717 + ], + "class_name": "CallNodeWalker" + }, + "description": "report encountered call nodes" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::checkDecorator", + "name": "checkDecorator", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/checkDecorator", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "checkDecorator", + "line_range": [ + 2709, + 2711 + ] + }, + "description": "match decorator name" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::containsAwaitNode", + "name": "containsAwaitNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/containsAwaitNode", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "containsAwaitNode", + "line_range": [ + 1259, + 1272 ] }, - "description": "find node by position" + "description": "detect await expression" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::findNodeByOffset", @@ -12101,112 +12177,112 @@ 156 ] }, - "description": "find node by offset; use binary search among children; prefer dest expression in augmented assignment" + "description": "resolve node by offset; select augmented assignment target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isCompliantWithNodeRangeRules", - "name": "isCompliantWithNodeRangeRules", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isCompliantWithNodeRangeRules", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::findNodeByPosition", + "name": "findNodeByPosition", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/findNodeByPosition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isCompliantWithNodeRangeRules", + "func_name": "findNodeByPosition", "line_range": [ - 158, - 164 + 87, + 98 ] }, - "description": "determine node range rule compliance" + "description": "resolve node by position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getClassFullName", - "name": "getClassFullName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getClassFullName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getAncestorsIncludingSelf", + "name": "getAncestorsIncludingSelf", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getAncestorsIncludingSelf", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getClassFullName", + "func_name": "getAncestorsIncludingSelf", "line_range": [ - 166, - 182 + 2184, + 2189 ] }, - "description": "compute nested class full name including module" + "description": "enumerate node ancestors" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeSourceId", - "name": "getTypeSourceId", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeSourceId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getArgsByRuntimeOrder", + "name": "getArgsByRuntimeOrder", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getArgsByRuntimeOrder", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTypeSourceId", + "func_name": "getArgsByRuntimeOrder", "line_range": [ - 188, - 190 + 1100, + 1108 ] }, - "description": "return node start as type source id" + "description": "order call arguments by runtime" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printArg", - "name": "printArg", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printArg", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getCallForName", + "name": "getCallForName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getCallForName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "printArg", + "func_name": "getCallForName", "line_range": [ - 192, - 204 + 577, + 592 ] }, - "description": "format call argument node to string" + "description": "resolve call for name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printExpression", - "name": "printExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getCallNodeAndActiveParamIndex", + "name": "getCallNodeAndActiveParamIndex", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getCallNodeAndActiveParamIndex", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "printExpression", + "func_name": "getCallNodeAndActiveParamIndex", "line_range": [ - 206, - 564 + 1738, + 1863 ] }, - "description": "render expression node to string; format name member call and index expressions; render unary and binary operations; format numeric and string literals; format dict list tuple and set expressions; format comprehensions slices and lambda expressions; include parentheses when node requires them" + "description": "identify enclosing call expression; resolve active call argument" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printOperator", - "name": "printOperator", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printOperator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getClassFullName", + "name": "getClassFullName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getClassFullName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "printOperator", + "func_name": "getClassFullName", "line_range": [ - 566, - 573 + 166, + 182 ] }, - "description": "map operator type to string" + "description": "build class full name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getCallForName", - "name": "getCallForName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getCallForName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getCommentsAtTokenIndex", + "name": "getCommentsAtTokenIndex", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getCommentsAtTokenIndex", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getCallForName", + "func_name": "getCommentsAtTokenIndex", "line_range": [ - 577, - 592 + 1965, + 1985 ] }, - "description": "find call node for name" + "description": "retrieve token comments" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDecoratorForName", @@ -12221,22 +12297,67 @@ 609 ] }, - "description": "find decorator node for name" + "description": "resolve decorator for name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingSuite", - "name": "getEnclosingSuite", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingSuite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDecoratorName", + "name": "getDecoratorName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDecoratorName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getEnclosingSuite", + "func_name": "getDecoratorName", "line_range": [ - 611, - 622 + 2240, + 2255 + ] + }, + "description": "resolve decorator name" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDocString", + "name": "getDocString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDocString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "getDocString", + "line_range": [ + 1547, + 1568 + ] + }, + "description": "extract suite doc string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDottedName", + "name": "getDottedName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDottedName", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "getDottedName", + "line_range": [ + 2257, + 2289 + ] + }, + "description": "resolve dotted name parts" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDottedNameWithGivenNodeAsLastName", + "name": "getDottedNameWithGivenNodeAsLastName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDottedNameWithGivenNodeAsLastName", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "getDottedNameWithGivenNodeAsLastName", + "line_range": [ + 2213, + 2230 ] }, - "description": "find enclosing suite node" + "description": "resolve containing dotted name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingClass", @@ -12251,22 +12372,37 @@ 645 ] }, - "description": "find enclosing class node; stop search at functions when requested" + "description": "find enclosing class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingModule", - "name": "getEnclosingModule", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingClassOrFunction", + "name": "getEnclosingClassOrFunction", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingClassOrFunction", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getEnclosingModule", + "func_name": "getEnclosingClassOrFunction", "line_range": [ - 647, - 659 + 747, + 762 + ] + }, + "description": "resolve enclosing class or function" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingClassOrFunctionSuite", + "name": "getEnclosingClassOrFunctionSuite", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingClassOrFunctionSuite", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "getEnclosingClassOrFunctionSuite", + "line_range": [ + 764, + 780 ] }, - "description": "find enclosing module node; assert module node existence" + "description": "resolve enclosing class or function suite" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingClassOrModule", @@ -12281,7 +12417,7 @@ 682 ] }, - "description": "find enclosing class or module; stop search at functions when requested" + "description": "find enclosing class or module" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingFunction", @@ -12296,7 +12432,7 @@ 705 ] }, - "description": "get enclosing function node; exclude decorator nodes; stop at class boundary" + "description": "resolve enclosing function" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingFunctionEvaluationScope", @@ -12311,7 +12447,7 @@ 728 ] }, - "description": "find enclosing function evaluation scope; stop at class boundary" + "description": "resolve enclosing function scope" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingLambda", @@ -12326,37 +12462,67 @@ 745 ] }, - "description": "get enclosing lambda node; stop at suite boundary" + "description": "resolve enclosing lambda" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingClassOrFunction", - "name": "getEnclosingClassOrFunction", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingClassOrFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingMemberAccessNode", + "name": "getEnclosingMemberAccessNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingMemberAccessNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getEnclosingClassOrFunction", + "func_name": "getEnclosingMemberAccessNode", "line_range": [ - 747, - 762 + 2307, + 2321 ] }, - "description": "find enclosing class or function node" + "description": "resolve enclosing member access" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingClassOrFunctionSuite", - "name": "getEnclosingClassOrFunctionSuite", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingClassOrFunctionSuite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingModule", + "name": "getEnclosingModule", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingModule", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getEnclosingClassOrFunctionSuite", + "func_name": "getEnclosingModule", "line_range": [ - 764, - 780 + 647, + 659 + ] + }, + "description": "find enclosing module" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingParam", + "name": "getEnclosingParam", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingParam", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "getEnclosingParam", + "line_range": [ + 1720, + 1736 + ] + }, + "description": "find enclosing parameter" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingSuite", + "name": "getEnclosingSuite", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingSuite", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", + "func_name": "getEnclosingSuite", + "line_range": [ + 611, + 622 ] }, - "description": "get enclosing class or function suite" + "description": "find enclosing suite" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingSuiteOrModule", @@ -12371,7 +12537,7 @@ 813 ] }, - "description": "get enclosing suite or module node; optionally abort search at function or lambda" + "description": "resolve enclosing suite or module" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEvaluationNodeForAssignmentExpression", @@ -12386,7 +12552,7 @@ 845 ] }, - "description": "get evaluation node for assignment expression; handle comprehension contexts specially; disallow class scope for comprehension targets" + "description": "resolve assignment expression evaluation scope" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEvaluationScopeNode", @@ -12401,22 +12567,7 @@ 1018 ] }, - "description": "get evaluation scope node; determine proxy scope usage; determine chained module level scopes; treat decorators and parameter defaults externally" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeVarScopeNode", - "name": "getTypeVarScopeNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeVarScopeNode", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTypeVarScopeNode", - "line_range": [ - 1022, - 1052 - ] - }, - "description": "get type variable scope node; exclude decorator nodes" + "description": "resolve evaluation scope; select type parameter scope; enable chained module lookup" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getExecutionScopeNode", @@ -12431,625 +12582,592 @@ 1073 ] }, - "description": "get execution scope node; skip type parameter class and comprehension scopes" + "description": "resolve execution scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeAnnotationNode", - "name": "getTypeAnnotationNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeAnnotationNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFileInfoFromNode", + "name": "getFileInfoFromNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFileInfoFromNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTypeAnnotationNode", + "func_name": "getFileInfoFromNode", "line_range": [ - 1077, - 1095 + 2091, + 2094 ] }, - "description": "find enclosing type annotation node" + "description": "retrieve containing file info" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getArgsByRuntimeOrder", - "name": "getArgsByRuntimeOrder", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getArgsByRuntimeOrder", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFirstAncestorOrSelf", + "name": "getFirstAncestorOrSelf", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFirstAncestorOrSelf", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getArgsByRuntimeOrder", + "func_name": "getFirstAncestorOrSelf", "line_range": [ - 1100, - 1108 + 2200, + 2211 ] }, - "description": "get call arguments by runtime order" + "description": "find matching ancestor" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFinalAllowedForAssignmentTarget", - "name": "isFinalAllowedForAssignmentTarget", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFinalAllowedForAssignmentTarget", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFirstAncestorOrSelfOfKind", + "name": "getFirstAncestorOrSelfOfKind", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFirstAncestorOrSelfOfKind", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isFinalAllowedForAssignmentTarget", + "func_name": "getFirstAncestorOrSelfOfKind", "line_range": [ - 1113, - 1144 + 2193, + 2198 ] }, - "description": "determine if final allowed for assignment target; allow attribute final only in initializer methods" + "description": "find ancestor by kind" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isRequiredAllowedForAssignmentTarget", - "name": "isRequiredAllowedForAssignmentTarget", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isRequiredAllowedForAssignmentTarget", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFirstNameOfDottedName", + "name": "getFirstNameOfDottedName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFirstNameOfDottedName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isRequiredAllowedForAssignmentTarget", + "func_name": "getFirstNameOfDottedName", "line_range": [ - 1146, - 1153 + 2291, + 2302 ] }, - "description": "determine if required allowed for assignment target" + "description": "resolve first dotted name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isNodeContainedWithin", - "name": "isNodeContainedWithin", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isNodeContainedWithin", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFullStatementRange", + "name": "getFullStatementRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFullStatementRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isNodeContainedWithin", + "func_name": "getFullStatementRange", "line_range": [ - 1155, - 1166 + 2366, + 2411 ] }, - "description": "determine if node is contained within container" + "description": "resolve full statement range" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getParentNodeOfType", - "name": "getParentNodeOfType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getParentNodeOfType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getIndexOfTokenOverlapping", + "name": "getIndexOfTokenOverlapping", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getIndexOfTokenOverlapping", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getParentNodeOfType", + "func_name": "getIndexOfTokenOverlapping", "line_range": [ - 1168, - 1180 + 1954, + 1963 ] }, - "description": "find nearest parent node of specified type" + "description": "find overlapping token index" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getParentAnnotationNode", - "name": "getParentAnnotationNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getParentAnnotationNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getMatchingDescendants", + "name": "getMatchingDescendants", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getMatchingDescendants", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getParentAnnotationNode", + "func_name": "getMatchingDescendants", "line_range": [ - 1184, - 1230 + 2068, + 2080 ] }, - "description": "find parent annotation expression for node" + "description": "collect matching descendants" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isNodeContainedWithinNodeType", - "name": "isNodeContainedWithinNodeType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isNodeContainedWithinNodeType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getModuleNode", + "name": "getModuleNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getModuleNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isNodeContainedWithinNodeType", + "func_name": "getModuleNode", "line_range": [ - 1232, - 1234 + 2082, + 2089 ] }, - "description": "determine if node contained within node type" + "description": "resolve containing module" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isSuiteEmpty", - "name": "isSuiteEmpty", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isSuiteEmpty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getNextMatchingToken", + "name": "getNextMatchingToken", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getNextMatchingToken", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isSuiteEmpty", + "func_name": "getNextMatchingToken", "line_range": [ - 1236, - 1257 + 2756, + 2775 ] }, - "description": "determine if suite is empty or stubbed; treat docstring and ellipsis as empty" + "description": "find matching token" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::containsAwaitNode", - "name": "containsAwaitNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/containsAwaitNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getNextNonWhitespaceToken", + "name": "getNextNonWhitespaceToken", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getNextNonWhitespaceToken", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "containsAwaitNode", + "func_name": "getNextNonWhitespaceToken", "line_range": [ - 1259, - 1272 + 2752, + 2754 ] }, - "description": "detect await nodes within node subtree" + "description": "find next token" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isMatchingExpression", - "name": "isMatchingExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isMatchingExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getNodeDepth", + "name": "getNodeDepth", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getNodeDepth", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isMatchingExpression", + "func_name": "getNodeDepth", "line_range": [ - 1279, - 1379 + 74, + 84 ] }, - "description": "match simple name nodes; invoke custom name comparator; match member access expressions recursively; match index expressions with numeric subscripts; match index expressions with string subscripts" + "description": "measure node depth" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isPartialMatchingExpression", - "name": "isPartialMatchingExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isPartialMatchingExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getParentAnnotationNode", + "name": "getParentAnnotationNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getParentAnnotationNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isPartialMatchingExpression", + "func_name": "getParentAnnotationNode", "line_range": [ - 1381, - 1395 + 1184, + 1230 ] }, - "description": "detect partial match in member access; detect partial match in index expressions" + "description": "resolve parent annotation expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinDefaultParamInitializer", - "name": "isWithinDefaultParamInitializer", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinDefaultParamInitializer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getParentNodeOfType", + "name": "getParentNodeOfType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getParentNodeOfType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isWithinDefaultParamInitializer", + "func_name": "getParentNodeOfType", "line_range": [ - 1397, - 1420 + 1168, + 1180 ] }, - "description": "determine if node within parameter default initializer" + "description": "resolve parent node by type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinTypeAnnotation", - "name": "isWithinTypeAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getPreviousNonWhitespaceToken", + "name": "getPreviousNonWhitespaceToken", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getPreviousNonWhitespaceToken", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isWithinTypeAnnotation", + "func_name": "getPreviousNonWhitespaceToken", "line_range": [ - 1422, - 1473 + 2737, + 2750 ] }, - "description": "determine if node within type annotation; distinguish quoted versus unquoted annotations; treat annotation comments as forward declarations" + "description": "find previous token" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinAnnotationComment", - "name": "isWithinAnnotationComment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinAnnotationComment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getScopeIdForNode", + "name": "getScopeIdForNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getScopeIdForNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isWithinAnnotationComment", + "func_name": "getScopeIdForNode", "line_range": [ - 1475, - 1506 + 2678, + 2688 ] }, - "description": "determine if node within annotation comment; treat type comments as forward declarations" + "description": "create scope identifier" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinLoop", - "name": "isWithinLoop", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinLoop", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getStringNodeValueRange", + "name": "getStringNodeValueRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getStringNodeValueRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isWithinLoop", + "func_name": "getStringNodeValueRange", "line_range": [ - 1508, - 1527 + 2356, + 2358 ] }, - "description": "determine if node enclosed by loop" + "description": "resolve string value range" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinAssertExpression", - "name": "isWithinAssertExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinAssertExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getStringValueRange", + "name": "getStringValueRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getStringValueRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isWithinAssertExpression", + "func_name": "getStringValueRange", "line_range": [ - 1529, - 1545 + 2360, + 2364 ] }, - "description": "determine if node within assert test expression" + "description": "resolve string value range" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDocString", - "name": "getDocString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAfter", + "name": "getTokenAfter", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAfter", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getDocString", + "func_name": "getTokenAfter", "line_range": [ - 1547, - 1568 + 1928, + 1935 ] }, - "description": "retrieve docstring from statement list; concatenate joined string literal parts" + "description": "find token after position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isDocString", - "name": "isDocString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAt", + "name": "getTokenAt", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAt", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isDocString", + "func_name": "getTokenAt", "line_range": [ - 1570, - 1593 + 1945, + 1947 ] }, - "description": "detect docstring at suite start; invalidate docstring if f-strings present" + "description": "find token at position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isAssignmentToDefaultsFollowingNamedTuple", - "name": "isAssignmentToDefaultsFollowingNamedTuple", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isAssignmentToDefaultsFollowingNamedTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAtIndex", + "name": "getTokenAtIndex", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAtIndex", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isAssignmentToDefaultsFollowingNamedTuple", + "func_name": "getTokenAtIndex", "line_range": [ - 1600, - 1667 + 1937, + 1943 ] }, - "description": "detect assignment pattern following namedtuple declaration; identify defaults assignment targeting namedtuple internals" + "description": "resolve token by index" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::NameNodeWalker", - "name": "NameNodeWalker", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/NameNodeWalker", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAtLeft", + "name": "getTokenAtLeft", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAtLeft", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "NameNodeWalker", + "func_name": "getTokenAtLeft", "line_range": [ - 1671, - 1707 + 1894, + 1906 ] }, - "description": "store name visit callback" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::NameNodeWalker.visitName", - "name": "NameNodeWalker.visitName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/NameNodeWalker.visitName", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "visitName", - "line_range": [ - 1685, - 1688 - ], - "class_name": "NameNodeWalker" - }, - "description": "call name callback with context" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::NameNodeWalker.visitIndex", - "name": "NameNodeWalker.visitIndex", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/NameNodeWalker.visitIndex", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "visitIndex", - "line_range": [ - 1690, - 1706 - ], - "class_name": "NameNodeWalker" - }, - "description": "traverse base expression; set base expression for children; walk each subscript item; track subscript index per item; restore previous walker context" + "description": "find token before position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::CallNodeWalker", - "name": "CallNodeWalker", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/CallNodeWalker", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenIndexAfter", + "name": "getTokenIndexAfter", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenIndexAfter", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "CallNodeWalker", + "func_name": "getTokenIndexAfter", "line_range": [ - 1709, - 1718 + 1908, + 1926 ] }, - "description": "store call node callback" + "description": "find token index after position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::CallNodeWalker.visitCall", - "name": "CallNodeWalker.visitCall", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/CallNodeWalker.visitCall", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenIndexAtLeft", + "name": "getTokenIndexAtLeft", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenIndexAtLeft", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "visitCall", + "func_name": "getTokenIndexAtLeft", "line_range": [ - 1714, - 1717 - ], - "class_name": "CallNodeWalker" + 1865, + 1892 + ] }, - "description": "invoke callback for call node; permit traversal to continue" + "description": "find token index before position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingParam", - "name": "getEnclosingParam", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getEnclosingParam", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenOverlapping", + "name": "getTokenOverlapping", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenOverlapping", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getEnclosingParam", + "func_name": "getTokenOverlapping", "line_range": [ - 1720, - 1736 + 1949, + 1952 ] }, - "description": "locate enclosing parameter node" + "description": "find token overlapping position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getCallNodeAndActiveParamIndex", - "name": "getCallNodeAndActiveParamIndex", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getCallNodeAndActiveParamIndex", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeAnnotationForParam", + "name": "getTypeAnnotationForParam", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeAnnotationForParam", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getCallNodeAndActiveParamIndex", + "func_name": "getTypeAnnotationForParam", "line_range": [ - 1738, - 1863 + 2121, + 2149 ] }, - "description": "find enclosing call node at cursor; compute active argument index; classify active parameter as real or fake; respect lexical token boundaries when locating arguments" + "description": "resolve parameter type annotation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenIndexAtLeft", - "name": "getTokenIndexAtLeft", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenIndexAtLeft", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeAnnotationNode", + "name": "getTypeAnnotationNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeAnnotationNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenIndexAtLeft", + "func_name": "getTypeAnnotationNode", "line_range": [ - 1865, - 1892 + 1077, + 1095 ] }, - "description": "find token index at or left of position; optionally ignore whitespace and zero-length tokens" + "description": "resolve type annotation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAtLeft", - "name": "getTokenAtLeft", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAtLeft", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeSourceId", + "name": "getTypeSourceId", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeSourceId", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenAtLeft", + "func_name": "getTypeSourceId", "line_range": [ - 1894, - 1906 + 188, + 190 ] }, - "description": "retrieve token at or left of position" + "description": "derive type source identifier" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenIndexAfter", - "name": "getTokenIndexAfter", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenIndexAfter", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeVarScopeNode", + "name": "getTypeVarScopeNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeVarScopeNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenIndexAfter", + "func_name": "getTypeVarScopeNode", "line_range": [ - 1908, - 1926 + 1022, + 1052 ] }, - "description": "find next token matching predicate after position" + "description": "resolve type variable scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAfter", - "name": "getTokenAfter", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAfter", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeVarScopesForNode", + "name": "getTypeVarScopesForNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeVarScopesForNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenAfter", + "func_name": "getTypeVarScopesForNode", "line_range": [ - 1928, - 1935 + 2692, + 2707 ] }, - "description": "retrieve next token matching predicate after position" + "description": "collect type variable scopes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAtIndex", - "name": "getTokenAtIndex", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAtIndex", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getVariableDocStringNode", + "name": "getVariableDocStringNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getVariableDocStringNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenAtIndex", + "func_name": "getVariableDocStringNode", "line_range": [ - 1937, - 1943 + 2578, + 2673 ] }, - "description": "get token by index if valid" + "description": "resolve variable docstring; validate attribute docstring context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenAt", - "name": "getTokenAt", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenAt", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isAssignmentToDefaultsFollowingNamedTuple", + "name": "isAssignmentToDefaultsFollowingNamedTuple", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isAssignmentToDefaultsFollowingNamedTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenAt", + "func_name": "isAssignmentToDefaultsFollowingNamedTuple", "line_range": [ - 1945, - 1947 + 1600, + 1667 ] }, - "description": "get token covering position" + "description": "detect named tuple defaults assignment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTokenOverlapping", - "name": "getTokenOverlapping", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTokenOverlapping", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isBlankLine", + "name": "isBlankLine", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isBlankLine", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTokenOverlapping", + "func_name": "isBlankLine", "line_range": [ - 1949, - 1952 + 2413, + 2416 ] }, - "description": "get token overlapping position" + "description": "detect blank line" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getIndexOfTokenOverlapping", - "name": "getIndexOfTokenOverlapping", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getIndexOfTokenOverlapping", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isCompliantWithNodeRangeRules", + "name": "isCompliantWithNodeRangeRules", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isCompliantWithNodeRangeRules", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getIndexOfTokenOverlapping", + "func_name": "isCompliantWithNodeRangeRules", "line_range": [ - 1954, - 1963 + 158, + 164 ] }, - "description": "compute index of token overlapping position" + "description": "validate node range rules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getCommentsAtTokenIndex", - "name": "getCommentsAtTokenIndex", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getCommentsAtTokenIndex", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isDocString", + "name": "isDocString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isDocString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getCommentsAtTokenIndex", + "func_name": "isDocString", "line_range": [ - 1965, - 1985 + 1570, + 1593 ] }, - "description": "get comments at token index" + "description": "validate doc string statement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printParseNodeType", - "name": "printParseNodeType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printParseNodeType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFinalAllowedForAssignmentTarget", + "name": "isFinalAllowedForAssignmentTarget", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFinalAllowedForAssignmentTarget", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "printParseNodeType", + "func_name": "isFinalAllowedForAssignmentTarget", "line_range": [ - 1987, - 1989 + 1113, + 1144 ] }, - "description": "get parse node type name" + "description": "validate final assignment target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWriteAccess", - "name": "isWriteAccess", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWriteAccess", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFirstNameOfDottedName", + "name": "isFirstNameOfDottedName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFirstNameOfDottedName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isWriteAccess", + "func_name": "isFirstNameOfDottedName", "line_range": [ - 1991, - 2066 + 2323, + 2334 ] }, - "description": "determine write access for name" + "description": "identify first dotted name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getMatchingDescendants", - "name": "getMatchingDescendants", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getMatchingDescendants", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFromImportAlias", + "name": "isFromImportAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFromImportAlias", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getMatchingDescendants", + "func_name": "isFromImportAlias", "line_range": [ - 2068, - 2080 + 2167, + 2169 ] }, - "description": "find matching descendant nodes" + "description": "identify from import alias" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getModuleNode", - "name": "getModuleNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getModuleNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFromImportModuleName", + "name": "isFromImportModuleName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFromImportModuleName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getModuleNode", + "func_name": "isFromImportModuleName", "line_range": [ - 2082, - 2089 + 2159, + 2161 ] }, - "description": "find enclosing module node" + "description": "identify from import module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFileInfoFromNode", - "name": "getFileInfoFromNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFileInfoFromNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFromImportName", + "name": "isFromImportName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFromImportName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getFileInfoFromNode", + "func_name": "isFromImportName", "line_range": [ - 2091, - 2094 + 2163, + 2165 ] }, - "description": "get file info from node" + "description": "identify from import name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFunctionSuiteEmpty", @@ -13064,22 +13182,22 @@ 2119 ] }, - "description": "check if function suite is empty" + "description": "detect empty function body" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeAnnotationForParam", - "name": "getTypeAnnotationForParam", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeAnnotationForParam", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isImportAlias", + "name": "isImportAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isImportAlias", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTypeAnnotationForParam", + "func_name": "isImportAlias", "line_range": [ - 2121, - 2149 + 2155, + 2157 ] }, - "description": "get type annotation for parameter" + "description": "identify import alias" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isImportModuleName", @@ -13097,304 +13215,306 @@ "description": "identify import module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isImportAlias", - "name": "isImportAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isImportAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isLastNameOfDottedName", + "name": "isLastNameOfDottedName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isLastNameOfDottedName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isImportAlias", + "func_name": "isLastNameOfDottedName", "line_range": [ - 2155, - 2157 + 2336, + 2354 ] }, - "description": "identify import alias" + "description": "identify final dotted name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFromImportModuleName", - "name": "isFromImportModuleName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFromImportModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isLastNameOfModuleName", + "name": "isLastNameOfModuleName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isLastNameOfModuleName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isFromImportModuleName", + "func_name": "isLastNameOfModuleName", "line_range": [ - 2159, - 2161 + 2171, + 2182 ] }, - "description": "identify from-import module name" + "description": "identify final module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFromImportName", - "name": "isFromImportName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFromImportName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isMatchingExpression", + "name": "isMatchingExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isMatchingExpression", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isFromImportName", + "func_name": "isMatchingExpression", "line_range": [ - 2163, - 2165 + 1279, + 1379 ] }, - "description": "identify from-import name" + "description": "compare expression identity; compare member expression identity; compare indexed expression identity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFromImportAlias", - "name": "isFromImportAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFromImportAlias", - "meta": { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isNodeContainedWithin", + "name": "isNodeContainedWithin", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isNodeContainedWithin", + "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isFromImportAlias", + "func_name": "isNodeContainedWithin", "line_range": [ - 2167, - 2169 + 1155, + 1166 ] }, - "description": "identify from-import alias" + "description": "detect node containment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isLastNameOfModuleName", - "name": "isLastNameOfModuleName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isLastNameOfModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isNodeContainedWithinNodeType", + "name": "isNodeContainedWithinNodeType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isNodeContainedWithinNodeType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isLastNameOfModuleName", + "func_name": "isNodeContainedWithinNodeType", "line_range": [ - 2171, - 2182 + 1232, + 1234 ] }, - "description": "determine last name of module" + "description": "detect containment by node type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getAncestorsIncludingSelf", - "name": "getAncestorsIncludingSelf", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getAncestorsIncludingSelf", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isPartialMatchingExpression", + "name": "isPartialMatchingExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isPartialMatchingExpression", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getAncestorsIncludingSelf", + "func_name": "isPartialMatchingExpression", "line_range": [ - 2184, - 2189 + 1381, + 1395 ] }, - "description": "iterate ancestors including self" + "description": "match expression prefix" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFirstAncestorOrSelfOfKind", - "name": "getFirstAncestorOrSelfOfKind", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFirstAncestorOrSelfOfKind", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isRequiredAllowedForAssignmentTarget", + "name": "isRequiredAllowedForAssignmentTarget", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isRequiredAllowedForAssignmentTarget", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getFirstAncestorOrSelfOfKind", + "func_name": "isRequiredAllowedForAssignmentTarget", "line_range": [ - 2193, - 2198 + 1146, + 1153 ] }, - "description": "get first ancestor of kind" + "description": "validate required assignment target" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFirstAncestorOrSelf", - "name": "getFirstAncestorOrSelf", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFirstAncestorOrSelf", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isSimpleDefault", + "name": "isSimpleDefault", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isSimpleDefault", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getFirstAncestorOrSelf", + "func_name": "isSimpleDefault", "line_range": [ - 2200, - 2211 + 2713, + 2735 ] }, - "description": "get first ancestor matching predicate" + "description": "classify default expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDottedNameWithGivenNodeAsLastName", - "name": "getDottedNameWithGivenNodeAsLastName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDottedNameWithGivenNodeAsLastName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isSuiteEmpty", + "name": "isSuiteEmpty", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isSuiteEmpty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getDottedNameWithGivenNodeAsLastName", + "func_name": "isSuiteEmpty", "line_range": [ - 2213, - 2230 + 1236, + 1257 ] }, - "description": "get dotted name with node as last" + "description": "detect empty suite" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDecoratorName", - "name": "getDecoratorName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDecoratorName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isUnannotatedFunction", + "name": "isUnannotatedFunction", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isUnannotatedFunction", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getDecoratorName", + "func_name": "isUnannotatedFunction", "line_range": [ - 2240, - 2255 + 2418, + 2423 ] }, - "description": "get decorator name string" + "description": "detect unannotated function" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getDottedName", - "name": "getDottedName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getDottedName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isValidLocationForFutureImport", + "name": "isValidLocationForFutureImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isValidLocationForFutureImport", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getDottedName", + "func_name": "isValidLocationForFutureImport", "line_range": [ - 2257, - 2289 + 2428, + 2464 ] }, - "description": "get name nodes of dotted expression" + "description": "validate future import location" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFirstNameOfDottedName", - "name": "getFirstNameOfDottedName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFirstNameOfDottedName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinAnnotationComment", + "name": "isWithinAnnotationComment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinAnnotationComment", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getFirstNameOfDottedName", + "func_name": "isWithinAnnotationComment", "line_range": [ - 2291, - 2302 + 1475, + 1506 ] }, - "description": "get first name of dotted name" + "description": "detect annotation comment context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isFirstNameOfDottedName", - "name": "isFirstNameOfDottedName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isFirstNameOfDottedName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinAssertExpression", + "name": "isWithinAssertExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinAssertExpression", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isFirstNameOfDottedName", + "func_name": "isWithinAssertExpression", "line_range": [ - 2304, - 2315 + 1529, + 1545 ] }, - "description": "determine if name is first in dotted" + "description": "detect assert test expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isLastNameOfDottedName", - "name": "isLastNameOfDottedName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isLastNameOfDottedName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinDefaultParamInitializer", + "name": "isWithinDefaultParamInitializer", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinDefaultParamInitializer", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isLastNameOfDottedName", + "func_name": "isWithinDefaultParamInitializer", "line_range": [ - 2317, - 2335 + 1397, + 1420 ] }, - "description": "determine if name is last in dotted" + "description": "detect default parameter initializer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getStringNodeValueRange", - "name": "getStringNodeValueRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getStringNodeValueRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinLoop", + "name": "isWithinLoop", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinLoop", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getStringNodeValueRange", + "func_name": "isWithinLoop", "line_range": [ - 2337, - 2339 + 1508, + 1527 ] }, - "description": "get string node value range" + "description": "detect enclosing loop context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getStringValueRange", - "name": "getStringValueRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getStringValueRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWithinTypeAnnotation", + "name": "isWithinTypeAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWithinTypeAnnotation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getStringValueRange", + "func_name": "isWithinTypeAnnotation", "line_range": [ - 2341, - 2345 + 1422, + 1473 ] }, - "description": "get string token value range" + "description": "detect type annotation context; detect quoted annotation context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getFullStatementRange", - "name": "getFullStatementRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getFullStatementRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isWriteAccess", + "name": "isWriteAccess", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isWriteAccess", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getFullStatementRange", + "func_name": "isWriteAccess", "line_range": [ - 2347, - 2392 + 1991, + 2066 ] }, - "description": "compute full statement range" + "description": "identify name write access" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isBlankLine", - "name": "isBlankLine", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isBlankLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::NameNodeWalker", + "name": "NameNodeWalker", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/NameNodeWalker", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isBlankLine", + "func_name": "NameNodeWalker", "line_range": [ - 2394, - 2397 + 1671, + 1707 ] }, - "description": "check if line is blank" + "description": "configure name notifications" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isUnannotatedFunction", - "name": "isUnannotatedFunction", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isUnannotatedFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::NameNodeWalker.visitIndex", + "name": "NameNodeWalker.visitIndex", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/NameNodeWalker.visitIndex", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isUnannotatedFunction", + "func_name": "visitIndex", "line_range": [ - 2399, - 2404 - ] + 1690, + 1706 + ], + "class_name": "NameNodeWalker" }, - "description": "check if function is unannotated" + "description": "scan indexed expression names; track subscript positions; track base expression context; preserve nested index context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isValidLocationForFutureImport", - "name": "isValidLocationForFutureImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isValidLocationForFutureImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::NameNodeWalker.visitName", + "name": "NameNodeWalker.visitName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/NameNodeWalker.visitName", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isValidLocationForFutureImport", + "func_name": "visitName", "line_range": [ - 2409, - 2445 - ] + 1685, + 1688 + ], + "class_name": "NameNodeWalker" }, - "description": "validate location for future import" + "description": "report name occurrence; include index context" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::operatorSupportsChaining", @@ -13405,161 +13525,71 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", "func_name": "operatorSupportsChaining", "line_range": [ - 2450, - 2466 - ] - }, - "description": "determine if operator supports chaining" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::_getStartPositionIfMultipleStatementsAreOnSameLine", - "name": "_getStartPositionIfMultipleStatementsAreOnSameLine", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/_getStartPositionIfMultipleStatementsAreOnSameLine", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "_getStartPositionIfMultipleStatementsAreOnSameLine", - "line_range": [ - 2472, - 2511 - ] - }, - "description": "compute start position for same-line statements" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::_getEndPositionIfMultipleStatementsAreOnSameLine", - "name": "_getEndPositionIfMultipleStatementsAreOnSameLine", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/_getEndPositionIfMultipleStatementsAreOnSameLine", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "_getEndPositionIfMultipleStatementsAreOnSameLine", - "line_range": [ - 2517, - 2557 - ] - }, - "description": "compute end position for same-line statements" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getVariableDocStringNode", - "name": "getVariableDocStringNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getVariableDocStringNode", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getVariableDocStringNode", - "line_range": [ - 2559, - 2645 - ] - }, - "description": "locate enclosing assignment or type alias; allow annotation only docstring; verify docstring follows assignment statement; validate attribute docstring context; return joined string list node" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getScopeIdForNode", - "name": "getScopeIdForNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getScopeIdForNode", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getScopeIdForNode", - "line_range": [ - 2650, - 2660 - ] - }, - "description": "derive name for class or function; generate unique scope identifier" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getTypeVarScopesForNode", - "name": "getTypeVarScopesForNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getTypeVarScopesForNode", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getTypeVarScopesForNode", - "line_range": [ - 2664, - 2679 + 2469, + 2485 ] }, - "description": "traverse ancestors to find typevar scopes; collect scope identifiers for ancestors" + "description": "detect chainable operator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::checkDecorator", - "name": "checkDecorator", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/checkDecorator", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "checkDecorator", - "line_range": [ - 2681, - 2683 - ] - }, - "description": "match decorator name against value" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::isSimpleDefault", - "name": "isSimpleDefault", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/isSimpleDefault", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printArg", + "name": "printArg", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printArg", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "isSimpleDefault", + "func_name": "printArg", "line_range": [ - 2685, - 2707 + 192, + 204 ] }, - "description": "identify simple default expressions; handle nonformatted string lists recursively; validate unary and binary expressions recursively" + "description": "render argument expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getPreviousNonWhitespaceToken", - "name": "getPreviousNonWhitespaceToken", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getPreviousNonWhitespaceToken", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printExpression", + "name": "printExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printExpression", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getPreviousNonWhitespaceToken", + "func_name": "printExpression", "line_range": [ - 2709, - 2722 + 206, + 564 ] }, - "description": "locate previous non whitespace token" + "description": "render expression text; preserve expression grouping; limit string representation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getNextNonWhitespaceToken", - "name": "getNextNonWhitespaceToken", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getNextNonWhitespaceToken", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printOperator", + "name": "printOperator", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printOperator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getNextNonWhitespaceToken", + "func_name": "printOperator", "line_range": [ - 2724, - 2726 + 566, + 573 ] }, - "description": "locate next non whitespace token" + "description": "render operator text" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getNextMatchingToken", - "name": "getNextMatchingToken", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/getNextMatchingToken", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::printParseNodeType", + "name": "printParseNodeType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeUtils.ts/printParseNodeType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts", - "func_name": "getNextMatchingToken", + "func_name": "printParseNodeType", "line_range": [ - 2728, - 2747 + 1987, + 1989 ] }, - "description": "locate next token matching predicate; abort search when exit predicate true" + "description": "format node type name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::__file__", @@ -13847,36 +13877,36 @@ "description": "visit comprehension if clause" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitContinue", - "name": "ParseTreeVisitor.visitContinue", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitContinue", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitConstant", + "name": "ParseTreeVisitor.visitConstant", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitConstant", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitContinue", + "func_name": "visitConstant", "line_range": [ - 650, - 652 + 654, + 656 ], "class_name": "ParseTreeVisitor" }, - "description": "visit continue statement node" + "description": "visit constant node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitConstant", - "name": "ParseTreeVisitor.visitConstant", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitConstant", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitContinue", + "name": "ParseTreeVisitor.visitContinue", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitContinue", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitConstant", + "func_name": "visitContinue", "line_range": [ - 654, - 656 + 650, + 652 ], "class_name": "ParseTreeVisitor" }, - "description": "visit constant node" + "description": "visit continue statement node" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitDecorator", @@ -13926,22 +13956,6 @@ }, "description": "visit dictionary literal node" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitDictionaryKeyEntry", - "name": "ParseTreeVisitor.visitDictionaryKeyEntry", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitDictionaryKeyEntry", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitDictionaryKeyEntry", - "line_range": [ - 670, - 672 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit dictionary key entry" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitDictionaryExpandEntry", "name": "ParseTreeVisitor.visitDictionaryExpandEntry", @@ -13959,20 +13973,20 @@ "description": "visit dictionary expand entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitError", - "name": "ParseTreeVisitor.visitError", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitError", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitDictionaryKeyEntry", + "name": "ParseTreeVisitor.visitDictionaryKeyEntry", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitDictionaryKeyEntry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitError", + "func_name": "visitDictionaryKeyEntry", "line_range": [ - 678, - 680 + 670, + 672 ], "class_name": "ParseTreeVisitor" }, - "description": "visit error node" + "description": "visit dictionary key entry" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitEllipsis", @@ -13991,100 +14005,20 @@ "description": "visit ellipsis node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitIf", - "name": "ParseTreeVisitor.visitIf", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitIf", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitIf", - "line_range": [ - 686, - 688 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit if statement node" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImport", - "name": "ParseTreeVisitor.visitImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImport", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitImport", - "line_range": [ - 690, - 692 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit import statement node" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImportAs", - "name": "ParseTreeVisitor.visitImportAs", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImportAs", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitImportAs", - "line_range": [ - 694, - 696 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit import as statement" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImportFrom", - "name": "ParseTreeVisitor.visitImportFrom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImportFrom", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitImportFrom", - "line_range": [ - 698, - 700 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit import from statement" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImportFromAs", - "name": "ParseTreeVisitor.visitImportFromAs", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImportFromAs", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitImportFromAs", - "line_range": [ - 702, - 704 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit import from as statement" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitIndex", - "name": "ParseTreeVisitor.visitIndex", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitIndex", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitError", + "name": "ParseTreeVisitor.visitError", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitIndex", + "func_name": "visitError", "line_range": [ - 706, - 708 + 678, + 680 ], "class_name": "ParseTreeVisitor" }, - "description": "visit index expression node" + "description": "visit error node" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitExcept", @@ -14183,61 +14117,157 @@ "description": "visit global statement node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitLambda", - "name": "ParseTreeVisitor.visitLambda", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitLambda", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitIf", + "name": "ParseTreeVisitor.visitIf", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitIf", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitLambda", + "func_name": "visitIf", "line_range": [ - 734, - 736 + 686, + 688 ], "class_name": "ParseTreeVisitor" }, - "description": "visit lambda expression node" + "description": "visit if statement node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitList", - "name": "ParseTreeVisitor.visitList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImport", + "name": "ParseTreeVisitor.visitImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitList", + "func_name": "visitImport", "line_range": [ - 738, - 740 + 690, + 692 ], "class_name": "ParseTreeVisitor" }, - "description": "visit list literal node" + "description": "visit import statement node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitMatch", - "name": "ParseTreeVisitor.visitMatch", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImportAs", + "name": "ParseTreeVisitor.visitImportAs", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImportAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitMatch", + "func_name": "visitImportAs", "line_range": [ - 742, - 744 + 694, + 696 ], "class_name": "ParseTreeVisitor" }, - "description": "visit match statement node" + "description": "visit import as statement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitMemberAccess", - "name": "ParseTreeVisitor.visitMemberAccess", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitMemberAccess", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImportFrom", + "name": "ParseTreeVisitor.visitImportFrom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImportFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitMemberAccess", + "func_name": "visitImportFrom", + "line_range": [ + 698, + 700 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit import from statement" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitImportFromAs", + "name": "ParseTreeVisitor.visitImportFromAs", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitImportFromAs", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitImportFromAs", + "line_range": [ + 702, + 704 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit import from as statement" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitIndex", + "name": "ParseTreeVisitor.visitIndex", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitIndex", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitIndex", + "line_range": [ + 706, + 708 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit index expression node" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitLambda", + "name": "ParseTreeVisitor.visitLambda", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitLambda", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitLambda", + "line_range": [ + 734, + 736 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit lambda expression node" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitList", + "name": "ParseTreeVisitor.visitList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitList", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitList", + "line_range": [ + 738, + 740 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit list literal node" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitMatch", + "name": "ParseTreeVisitor.visitMatch", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitMatch", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitMatch", + "line_range": [ + 742, + 744 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit match statement node" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitMemberAccess", + "name": "ParseTreeVisitor.visitMemberAccess", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitMemberAccess", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitMemberAccess", "line_range": [ 746, 748 @@ -14358,6 +14388,22 @@ }, "description": "visit pass statement node" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitPatternAs", + "name": "ParseTreeVisitor.visitPatternAs", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitPatternAs", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitPatternAs", + "line_range": [ + 790, + 792 + ], + "class_name": "ParseTreeVisitor" + }, + "description": "visit pattern as node" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitPatternCapture", "name": "ParseTreeVisitor.visitPatternCapture", @@ -14406,22 +14452,6 @@ }, "description": "visit pattern class argument" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitPatternAs", - "name": "ParseTreeVisitor.visitPatternAs", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitPatternAs", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitPatternAs", - "line_range": [ - 790, - 792 - ], - "class_name": "ParseTreeVisitor" - }, - "description": "visit pattern as node" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitPatternLiteral", "name": "ParseTreeVisitor.visitPatternLiteral", @@ -14663,36 +14693,36 @@ "description": "visit ternary expression node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitTuple", - "name": "ParseTreeVisitor.visitTuple", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitTry", + "name": "ParseTreeVisitor.visitTry", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitTry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitTuple", + "func_name": "visitTry", "line_range": [ - 854, - 856 + 858, + 860 ], "class_name": "ParseTreeVisitor" }, - "description": "visit tuple literal node" + "description": "visit try statement node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitTry", - "name": "ParseTreeVisitor.visitTry", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitTry", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitTuple", + "name": "ParseTreeVisitor.visitTuple", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeVisitor.visitTuple", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitTry", + "func_name": "visitTuple", "line_range": [ - 858, - 860 + 854, + 856 ], "class_name": "ParseTreeVisitor" }, - "description": "visit try statement node" + "description": "visit tuple literal node" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeVisitor.visitTypeAlias", @@ -14885,6 +14915,22 @@ }, "description": "initialize parse tree walker" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeWalker.visitNode", + "name": "ParseTreeWalker.visitNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeWalker.visitNode", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", + "func_name": "visitNode", + "line_range": [ + 932, + 934 + ], + "class_name": "ParseTreeWalker" + }, + "description": "invoke node visitor; return child nodes when visited" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeWalker.walk", "name": "ParseTreeWalker.walk", @@ -14917,22 +14963,6 @@ }, "description": "iterate over nodes; recurse into each node" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts::ParseTreeWalker.visitNode", - "name": "ParseTreeWalker.visitNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseTreeWalker.ts/ParseTreeWalker.visitNode", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts", - "func_name": "visitNode", - "line_range": [ - 932, - 934 - ], - "class_name": "ParseTreeWalker" - }, - "description": "invoke node visitor; return child nodes when visited" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::__file__", "name": "patternMatching", @@ -14943,25 +14973,25 @@ "func_name": "patternMatching", "line_range": [ 1, - 2254 + 2316 ] }, - "description": "Type evaluation and narrowing utilities for Python structural pattern matching (PEP 634) in Pyright" + "description": "Narrows and validates Python match-case pattern types for Pyright analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnPattern", - "name": "narrowTypeBasedOnPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnPattern", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::assignTypeToPatternTargets", + "name": "assignTypeToPatternTargets", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/assignTypeToPatternTargets", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnPattern", + "func_name": "assignTypeToPatternTargets", "line_range": [ - 137, - 177 + 1804, + 2043 ] }, - "description": "narrow type based on pattern; dispatch to pattern handlers; treat capture as universal match" + "description": "narrow pattern subject type; assign sequence target types; assign alias target type; assign capture target type; report unknown wildcard type; infer mapping entry types; assign mapping expansion type; infer class pattern argument types" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::checkForUnusedPattern", @@ -14972,56 +15002,41 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", "func_name": "checkForUnusedPattern", "line_range": [ - 181, - 207 - ] - }, - "description": "report unnecessary patterns; evaluate or pattern branches for redundancy; narrow subject type per or branch" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnSequencePattern", - "name": "narrowTypeBasedOnSequencePattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnSequencePattern", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnSequencePattern", - "line_range": [ - 209, - 422 + 183, + 209 ] }, - "description": "narrow sequence type based on pattern; narrow sequence element types via subpatterns; identify plausible versus definite matches; expand tuple types for narrowed dimensions; eliminate impossible subtypes in negative tests; convert sequence to sequence type" + "description": "report unused pattern; validate alternative pattern reachability" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnAsPattern", - "name": "narrowTypeBasedOnAsPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnAsPattern", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getMappingPatternInfo", + "name": "getMappingPatternInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/getMappingPatternInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnAsPattern", + "func_name": "getMappingPatternInfo", "line_range": [ - 424, - 450 + 1336, + 1416 ] }, - "description": "narrow type for as or patterns; combine narrowed types from or branches; exclude matched branches in negative tests" + "description": "classify mapping pattern subjects; identify typed dictionary matches; infer mapping key value types; preserve ambiguous mapping candidates; reject non mapping subjects" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnMappingPattern", - "name": "narrowTypeBasedOnMappingPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnMappingPattern", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getPatternSubtypeNarrowingCallback", + "name": "getPatternSubtypeNarrowingCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/getPatternSubtypeNarrowingCallback", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnMappingPattern", + "func_name": "getPatternSubtypeNarrowingCallback", "line_range": [ - 452, - 637 + 2149, + 2297 ] }, - "description": "narrow type by mapping pattern; retain non mapping subtypes for expand only pattern; eliminate typed dicts with matching key literal values; filter mapping subtypes by entry plausibility; narrow typed dict member value types; mark not required typed dict entries provided; narrow dict generics by key and value patterns" + "description": "narrow discriminated mapping entry; narrow discriminated tuple entry; narrow tuple pattern entry; narrow literal attribute field" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getPositionalMatchArgNames", @@ -15032,101 +15047,11 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", "func_name": "getPositionalMatchArgNames", "line_range": [ - 641, - 666 - ] - }, - "description": "retrieve positional match argument names; ensure positional names are string literals" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnLiteralPattern", - "name": "narrowTypeBasedOnLiteralPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnLiteralPattern", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnLiteralPattern", - "line_range": [ - 668, - 744 - ] - }, - "description": "narrow type by literal pattern; exclude matching literal subtypes on negative test; narrow non literal bool to opposite literal; narrow subtype to literal when assignable; preserve supertypes when literal narrowing unsafe" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnClassPattern", - "name": "narrowTypeBasedOnClassPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnClassPattern", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnClassPattern", - "line_range": [ - 746, - 1067 - ] - }, - "description": "narrow type based on class pattern; filter subject subtypes by pattern compatibility; resolve positional match argument names; narrow using class pattern arguments; handle callable none and metaclass cases; report non class type in pattern" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::isClassSpecialCaseForClassPattern", - "name": "isClassSpecialCaseForClassPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/isClassSpecialCaseForClassPattern", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "isClassSpecialCaseForClassPattern", - "line_range": [ - 1071, - 1090 - ] - }, - "description": "identify class pattern special cases; exclude classes supplying explicit match arguments; consider base classes for special case detection" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeOfClassPatternArg", - "name": "narrowTypeOfClassPatternArg", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeOfClassPatternArg", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeOfClassPatternArg", - "line_range": [ - 1093, - 1171 - ] - }, - "description": "resolve argument name for class pattern; determine argument type from subject class; use class itself for first positional argument; fallback to unknown for unresolved arguments; narrow argument type using nested pattern" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnValuePattern", - "name": "narrowTypeBasedOnValuePattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnValuePattern", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "narrowTypeBasedOnValuePattern", - "line_range": [ - 1173, - 1270 - ] - }, - "description": "narrow subject type by value pattern; exclude matching literal value from type; preserve unknown over any types; compare literal values for matching; test compatibility using equality method; combine narrowed subtypes into union" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getMappingPatternInfo", - "name": "getMappingPatternInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/getMappingPatternInfo", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "getMappingPatternInfo", - "line_range": [ - 1274, - 1354 + 643, + 668 ] }, - "description": "determine mapping compatibility for type; recognize typed dict as mapping; infer mapping key and value types; treat any or unknown as ambiguous; classify subtype mapping certainty; handle mapping subclass and superclass; return mapping info per subtype" + "description": "resolve positional match names; validate positional match names" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getSequencePatternInfo", @@ -15137,11 +15062,11 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", "func_name": "getSequencePatternInfo", "line_range": [ - 1359, - 1681 + 1421, + 1743 ] }, - "description": "compute sequence pattern info; specialize sequence subtype classes; infer tuple entry types; expand indeterminate tuple entries; collapse tuple entries into star; assess match possibility flags; detect definite no match; detect potential no match; handle non-tuple sequence types; resolve sequence type arguments" + "description": "evaluate sequence pattern compatibility; infer sequence entry types; detect definite pattern mismatches; mark uncertain length matches; narrow entries by subpatterns" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getTypeOfPatternSequenceEntry", @@ -15152,71 +15077,146 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", "func_name": "getTypeOfPatternSequenceEntry", "line_range": [ - 1683, - 1738 + 1745, + 1800 ] }, - "description": "compute type for sequence entry; use single entry type for indeterminate sequences; wrap star entries in list; combine types for star range; strip literal types before combining; treat typevar tuples as unknown; index post-star entries from end" + "description": "resolve sequence entry type; combine starred entry types; wrap captured entry type; resolve trailing entry position" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::assignTypeToPatternTargets", - "name": "assignTypeToPatternTargets", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/assignTypeToPatternTargets", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::isClassSpecialCaseForClassPattern", + "name": "isClassSpecialCaseForClassPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/isClassSpecialCaseForClassPattern", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "assignTypeToPatternTargets", + "func_name": "isClassSpecialCaseForClassPattern", "line_range": [ - 1742, - 1981 + 1133, + 1152 ] }, - "description": "narrow type based on pattern; assign types to sequence entries; assign types for as pattern targets; assign types to capture targets; report wildcard pattern type diagnostics; derive and assign mapping key types; derive and assign mapping value types; assign types to class pattern arguments" + "description": "identify special class pattern cases; respect explicit positional pattern fields; detect inherited special pattern behavior" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::wrapTypeInList", - "name": "wrapTypeInList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/wrapTypeInList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnAsPattern", + "name": "narrowTypeBasedOnAsPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnAsPattern", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "wrapTypeInList", + "func_name": "narrowTypeBasedOnAsPattern", "line_range": [ - 1983, - 1998 + 426, + 452 ] }, - "description": "propagate never type unchanged; prefer any or unknown element when present; produce list type from element type" + "description": "narrow type by alternative patterns; exclude matched alternative types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::validateClassPattern", - "name": "validateClassPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/validateClassPattern", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnClassPattern", + "name": "narrowTypeBasedOnClassPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnClassPattern", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "validateClassPattern", + "func_name": "narrowTypeBasedOnClassPattern", "line_range": [ - 2000, - 2082 + 786, + 1129 ] }, - "description": "resolve expression type for class pattern; recognize special form types; report errors for invalid type alias usage; report non instantiable type usage; report newtype class usage in pattern; enforce positional args for builtin classes; validate positional argument count against expectation" + "description": "narrow subject by class pattern; validate class pattern target; resolve positional pattern arguments; exclude unmatched class alternatives; preserve generic match arguments; narrow nested class arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::getPatternSubtypeNarrowingCallback", - "name": "getPatternSubtypeNarrowingCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/getPatternSubtypeNarrowingCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnLiteralPattern", + "name": "narrowTypeBasedOnLiteralPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnLiteralPattern", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", - "func_name": "getPatternSubtypeNarrowingCallback", + "func_name": "narrowTypeBasedOnLiteralPattern", "line_range": [ - 2087, - 2235 + 670, + 746 + ] + }, + "description": "narrow type by literal pattern; exclude matched literal alternatives; refine boolean literal alternatives" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnMappingPattern", + "name": "narrowTypeBasedOnMappingPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnMappingPattern", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "narrowTypeBasedOnMappingPattern", + "line_range": [ + 454, + 639 + ] + }, + "description": "narrow type by mapping pattern; exclude unmatched mapping alternatives; narrow field values by patterns; record provided optional fields" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnPattern", + "name": "narrowTypeBasedOnPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnPattern", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "narrowTypeBasedOnPattern", + "line_range": [ + 139, + 179 + ] + }, + "description": "narrow type by pattern" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnSequencePattern", + "name": "narrowTypeBasedOnSequencePattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnSequencePattern", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "narrowTypeBasedOnSequencePattern", + "line_range": [ + 211, + 424 + ] + }, + "description": "narrow type by sequence pattern; refine matched sequence entries; exclude definite sequence matches" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeBasedOnValuePattern", + "name": "narrowTypeBasedOnValuePattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeBasedOnValuePattern", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "narrowTypeBasedOnValuePattern", + "line_range": [ + 1235, + 1332 + ] + }, + "description": "narrow subject type by value; exclude matching literal alternatives; propagate uncertain match types; validate equality match compatibility" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::narrowTypeOfClassPatternArg", + "name": "narrowTypeOfClassPatternArg", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/narrowTypeOfClassPatternArg", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "narrowTypeOfClassPatternArg", + "line_range": [ + 1155, + 1233 ] }, - "description": "create subtype narrowing callback; detect index based discriminant usage; narrow typed dict by literal key; narrow tuple element by index; narrow member access by literal attribute; combine narrowed subtype results; return undefined when narrowing fails; preserve incomplete type information" + "description": "resolve class pattern argument; infer class pattern argument type; apply self matching pattern; narrow nested argument pattern" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::reportUnnecessaryPattern", @@ -15227,41 +15227,71 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", "func_name": "reportUnnecessaryPattern", "line_range": [ - 2237, - 2253 + 2299, + 2315 ] }, - "description": "report unnecessary pattern diagnostic; exempt simple wildcard capture from diagnostic; format diagnostic with subject type" + "description": "exempt wildcard pattern; report impossible pattern match" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::__file__", - "name": "program", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::specializeBoundedMatchTypeParams", + "name": "specializeBoundedMatchTypeParams", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/specializeBoundedMatchTypeParams", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "program", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "specializeBoundedMatchTypeParams", "line_range": [ - 1, - 2302 + 754, + 784 ] }, - "description": "Tracks and manages the project's source files, imports, and analysis state for Pyright's type checker" + "description": "specialize bounded match parameters; preserve solved type arguments; substitute bounds for unknown arguments; attach match type condition" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::isTaggedHintDiagnostic", - "name": "isTaggedHintDiagnostic", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/isTaggedHintDiagnostic", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::validateClassPattern", + "name": "validateClassPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/validateClassPattern", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "validateClassPattern", + "line_range": [ + 2062, + 2144 + ] + }, + "description": "validate class pattern target; reject generic type alias pattern; reject nonclass pattern target; reject newtype class pattern; validate builtin positional arguments; validate positional pattern count" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::wrapTypeInList", + "name": "wrapTypeInList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/patternMatching.ts/wrapTypeInList", "meta": { "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts", + "func_name": "wrapTypeInList", + "line_range": [ + 2045, + 2060 + ] + }, + "description": "preserve never type; normalize unknown element type; create list element type" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::__file__", + "name": "program", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts", + "meta": { + "type": "file", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "isTaggedHintDiagnostic", + "func_name": "program", "line_range": [ - 59, - 65 + 1, + 2335 ] }, - "description": "classify diagnostic as hint" + "description": "Manages Pyright source files, imports, analysis state, diagnostics, and type evaluator access" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::EditModeTracker", @@ -15275,8 +15305,7 @@ 102, 127 ] - }, - "description": "initialize edit mode tracker" + } }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::EditModeTracker.addMutatedFiles", @@ -15292,7 +15321,23 @@ ], "class_name": "EditModeTracker" }, - "description": "record mutated file" + "description": "record edited file" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::EditModeTracker.disable", + "name": "EditModeTracker.disable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/EditModeTracker.disable", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", + "func_name": "disable", + "line_range": [ + 119, + 126 + ], + "class_name": "EditModeTracker" + }, + "description": "leave edit mode; report edited files" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::EditModeTracker.enable", @@ -15311,20 +15356,19 @@ "description": "enter edit mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::EditModeTracker.disable", - "name": "EditModeTracker.disable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/EditModeTracker.disable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::isTaggedHintDiagnostic", + "name": "isTaggedHintDiagnostic", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/isTaggedHintDiagnostic", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "disable", + "func_name": "isTaggedHintDiagnostic", "line_range": [ - 119, - 126 - ], - "class_name": "EditModeTracker" + 59, + 65 + ] }, - "description": "exit edit mode; return mutated files list" + "description": "identify tagged hint diagnostic" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program", @@ -15336,554 +15380,522 @@ "func_name": "Program", "line_range": [ 135, - 2301 + 2334 ] }, - "description": "initialize program state; register cache owner; create initial evaluator" + "description": "initialize analysis program" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.dispose", - "name": "Program.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.dispose", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._addShadowedFile", + "name": "Program._addShadowedFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._addShadowedFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "dispose", + "func_name": "_addShadowedFile", "line_range": [ - 222, - 227 + 1679, + 1695 ], "class_name": "Program" }, - "description": "release program resources; unregister cache owner" + "description": "add shadowed file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.enterEditMode", - "name": "Program.enterEditMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.enterEditMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._addToSourceFileListAndMap", + "name": "Program._addToSourceFileListAndMap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._addToSourceFileListAndMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "enterEditMode", + "func_name": "_addToSourceFileListAndMap", "line_range": [ - 229, - 231 + 1640, + 1651 ], "class_name": "Program" }, - "description": "enable edit mode tracking" + "description": "add file record" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.exitEditMode", - "name": "Program.exitEditMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.exitEditMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._bindFile", + "name": "Program._bindFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._bindFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "exitEditMode", + "func_name": "_bindFile", "line_range": [ - 233, - 284 + 1832, + 1903 ], "class_name": "Program" }, - "description": "disable edit mode tracking; collect edit mode changes; remove transient edit files" + "description": "bind source file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setConfigOptions", - "name": "Program.setConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._bindImplicitImports", + "name": "Program._bindImplicitImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._bindImplicitImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setConfigOptions", + "func_name": "_bindImplicitImports", "line_range": [ - 286, - 292 + 1792, + 1828 ], "class_name": "Program" }, - "description": "apply new configuration options; recreate evaluator with config" + "description": "bind implicit imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setImportResolver", - "name": "Program.setImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._checkDependentFiles", + "name": "Program._checkDependentFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._checkDependentFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setImportResolver", + "func_name": "_checkDependentFiles", "line_range": [ - 294, - 301 + 2110, + 2168 ], "class_name": "Program" }, - "description": "update import resolver; recreate evaluator for resolver" + "description": "check dependent files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setTrackedFiles", - "name": "Program.setTrackedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setTrackedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._checkTypes", + "name": "Program._checkTypes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._checkTypes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setTrackedFiles", + "func_name": "_checkTypes", "line_range": [ - 304, - 327 + 2017, + 2108 ], "class_name": "Program" }, - "description": "update tracked file list; untrack removed nonvirtual files; prune unneeded files" + "description": "check file types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setPreCheckCallback", - "name": "Program.setPreCheckCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setPreCheckCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._createInterimFileInfo", + "name": "Program._createInterimFileInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._createInterimFileInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setPreCheckCallback", + "func_name": "_createInterimFileInfo", "line_range": [ - 331, - 333 + 1697, + 1718 ], "class_name": "Program" }, - "description": "register pre check callback" + "description": "create interim file record" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setAllowedThirdPartyImports", - "name": "Program.setAllowedThirdPartyImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setAllowedThirdPartyImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._createNewEvaluator", + "name": "Program._createNewEvaluator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._createNewEvaluator", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setAllowedThirdPartyImports", + "func_name": "_createNewEvaluator", "line_range": [ - 340, - 342 + 1720, + 1750 ], "class_name": "Program" }, - "description": "allow specific third party imports" + "description": "create type evaluator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.addTrackedFiles", - "name": "Program.addTrackedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.addTrackedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._createSourceMapper", + "name": "Program._createSourceMapper", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._createSourceMapper", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "addTrackedFiles", + "func_name": "_createSourceMapper", "line_range": [ - 344, - 348 + 1318, + 1355 ], "class_name": "Program" }, - "description": "add multiple tracked files" + "description": "create source mapper" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.addInterimFile", - "name": "Program.addInterimFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.addInterimFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._detectAndReportImportCycles", + "name": "Program._detectAndReportImportCycles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._detectAndReportImportCycles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "addInterimFile", + "func_name": "_detectAndReportImportCycles", "line_range": [ - 350, - 358 + 2210, + 2274 ], "class_name": "Program" }, - "description": "create or return interim file" + "description": "detect import cycles; report import cycles" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.addTrackedFile", - "name": "Program.addTrackedFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.addTrackedFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._discardCachedParseResults", + "name": "Program._discardCachedParseResults", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._discardCachedParseResults", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "addTrackedFile", + "func_name": "_discardCachedParseResults", "line_range": [ - 360, - 410 + 1146, + 1150 ], "class_name": "Program" }, - "description": "add single tracked file; initialize file diagnostics and metadata" + "description": "discard parse caches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setFileOpened", - "name": "Program.setFileOpened", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setFileOpened", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getEffectiveFutureImports", + "name": "Program._getEffectiveFutureImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getEffectiveFutureImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setFileOpened", + "func_name": "_getEffectiveFutureImports", "line_range": [ - 412, - 460 + 1905, + 1913 ], "class_name": "Program" }, - "description": "mark file as opened; associate virtual document with owner" + "description": "get effective future imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getChainedUri", - "name": "Program.getChainedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getChainedUri", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getImplicitImports", + "name": "Program._getImplicitImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getImplicitImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getChainedUri", + "func_name": "_getImplicitImports", "line_range": [ - 462, - 465 + 1779, + 1790 ], "class_name": "Program" }, - "description": "compute chained uri for file" + "description": "get implicit imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.updateChainedUri", - "name": "Program.updateChainedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.updateChainedUri", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getImportsRecursive", + "name": "Program._getImportsRecursive", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getImportsRecursive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "updateChainedUri", + "func_name": "_getImportsRecursive", "line_range": [ - 467, - 479 + 2174, + 2208 ], "class_name": "Program" }, - "description": "update chained uri mapping" + "description": "collect recursive imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setFileClosed", - "name": "Program.setFileClosed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setFileClosed", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getModuleImportInfoForFile", + "name": "Program._getModuleImportInfoForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getModuleImportInfoForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "setFileClosed", + "func_name": "_getModuleImportInfoForFile", "line_range": [ - 481, - 510 + 1658, + 1673 ], "class_name": "Program" }, - "description": "mark file as closed; cleanup transient file state" + "description": "get module import information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.markAllFilesDirty", - "name": "Program.markAllFilesDirty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.markAllFilesDirty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getModuleName", + "name": "Program._getModuleName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "markAllFilesDirty", + "func_name": "_getModuleName", "line_range": [ - 512, - 530 + 1653, + 1656 ], "class_name": "Program" }, - "description": "mark all files for reanalysis" + "description": "get module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.markFilesDirty", - "name": "Program.markFilesDirty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.markFilesDirty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getSourceFileInfoFromKey", + "name": "Program._getSourceFileInfoFromKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getSourceFileInfoFromKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "markFilesDirty", + "func_name": "_getSourceFileInfoFromKey", "line_range": [ - 532, - 565 + 1427, + 1429 ], "class_name": "Program" }, - "description": "mark specified files for reanalysis" + "description": "get file record" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getFileCount", - "name": "Program.getFileCount", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getFileCount", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._handleMemoryHighUsage", + "name": "Program._handleMemoryHighUsage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._handleMemoryHighUsage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getFileCount", + "func_name": "_handleMemoryHighUsage", "line_range": [ - 567, - 573 + 1119, + 1142 ], "class_name": "Program" }, - "description": "report total file count" + "description": "reduce memory usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getUserFileCount", - "name": "Program.getUserFileCount", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getUserFileCount", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._isFileNeeded", + "name": "Program._isFileNeeded", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._isFileNeeded", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getUserFileCount", + "func_name": "_isFileNeeded", "line_range": [ - 577, - 579 + 1271, + 1293 ], "class_name": "Program" }, - "description": "report user file count" + "description": "test file necessity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getUserFiles", - "name": "Program.getUserFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getUserFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._isImportAllowed", + "name": "Program._isImportAllowed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._isImportAllowed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getUserFiles", + "func_name": "_isImportAllowed", "line_range": [ - 581, - 583 + 1357, + 1425 ], "class_name": "Program" }, - "description": "retrieve user file infos" + "description": "validate import permission" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getOpened", - "name": "Program.getOpened", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getOpened", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._isImportNeededRecursive", + "name": "Program._isImportNeededRecursive", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._isImportNeededRecursive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getOpened", + "func_name": "_isImportNeededRecursive", "line_range": [ - 585, - 587 + 1295, + 1316 ], "class_name": "Program" }, - "description": "list opened files" + "description": "test import necessity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getOwnedFiles", - "name": "Program.getOwnedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getOwnedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._logImportCycle", + "name": "Program._logImportCycle", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._logImportCycle", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getOwnedFiles", + "func_name": "_logImportCycle", "line_range": [ - 589, - 591 + 2276, + 2287 ], "class_name": "Program" }, - "description": "list files owned by program" + "description": "record import cycle" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getCheckingRequiredFiles", - "name": "Program.getCheckingRequiredFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getCheckingRequiredFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._markFileDirtyRecursive", + "name": "Program._markFileDirtyRecursive", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._markFileDirtyRecursive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getCheckingRequiredFiles", + "func_name": "_markFileDirtyRecursive", "line_range": [ - 593, - 597 + 2289, + 2333 ], "class_name": "Program" }, - "description": "list files requiring checking" + "description": "mark dependent files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getFilesToAnalyzeCount", - "name": "Program.getFilesToAnalyzeCount", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getFilesToAnalyzeCount", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._parseFile", + "name": "Program._parseFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._parseFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getFilesToAnalyzeCount", + "func_name": "_parseFile", "line_range": [ - 599, - 622 + 1752, + 1777 ], "class_name": "Program" }, - "description": "count files pending analysis" + "description": "parse source file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.isCheckingOnlyOpenFiles", - "name": "Program.isCheckingOnlyOpenFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.isCheckingOnlyOpenFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._removeSourceFileFromListAndMap", + "name": "Program._removeSourceFileFromListAndMap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._removeSourceFileFromListAndMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "isCheckingOnlyOpenFiles", + "func_name": "_removeSourceFileFromListAndMap", "line_range": [ - 624, - 626 + 1635, + 1638 ], "class_name": "Program" }, - "description": "report checking only open files" + "description": "remove file record" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.functionSignatureDisplay", - "name": "Program.functionSignatureDisplay", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.functionSignatureDisplay", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._removeUnneededFiles", + "name": "Program._removeUnneededFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._removeUnneededFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "functionSignatureDisplay", + "func_name": "_removeUnneededFiles", "line_range": [ - 628, - 630 + 1195, + 1269 ], "class_name": "Program" }, - "description": "retrieve function signature display setting" + "description": "remove unused files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.containsSourceFileIn", - "name": "Program.containsSourceFileIn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.containsSourceFileIn", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._runEvaluatorWithCancellationToken", + "name": "Program._runEvaluatorWithCancellationToken", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._runEvaluatorWithCancellationToken", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "containsSourceFileIn", + "func_name": "_runEvaluatorWithCancellationToken", "line_range": [ - 632, - 640 + 1160, + 1190 ], "class_name": "Program" }, - "description": "determine presence of source file in directory" + "description": "run cancellable evaluation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.owns", - "name": "Program.owns", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.owns", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._shouldCheckFile", + "name": "Program._shouldCheckFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._shouldCheckFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "owns", + "func_name": "_shouldCheckFile", "line_range": [ - 642, - 651 + 2002, + 2015 ], "class_name": "Program" }, - "description": "check file ownership by program" + "description": "decide file checking" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceFile", - "name": "Program.getSourceFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._updateSourceFileImports", + "name": "Program._updateSourceFileImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._updateSourceFileImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getSourceFile", + "func_name": "_updateSourceFileImports", "line_range": [ - 653, - 660 + 1431, + 1633 ], "class_name": "Program" }, - "description": "retrieve source file by uri" + "description": "update file imports; discover imported files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getBoundSourceFile", - "name": "Program.getBoundSourceFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getBoundSourceFile", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getBoundSourceFile", - "line_range": [ - 662, - 664 - ], - "class_name": "Program" - }, - "description": "retrieve bound source file if available" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceFileInfoList", - "name": "Program.getSourceFileInfoList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceFileInfoList", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getSourceFileInfoList", - "line_range": [ - 666, - 668 - ], - "class_name": "Program" - }, - "description": "return source file info list" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceFileInfo", - "name": "Program.getSourceFileInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceFileInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.addInterimFile", + "name": "Program.addInterimFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.addInterimFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getSourceFileInfo", + "func_name": "addInterimFile", "line_range": [ - 670, - 675 + 350, + 358 ], "class_name": "Program" }, - "description": "lookup source file info by uri" + "description": "add interim file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getModuleSymbolTable", - "name": "Program.getModuleSymbolTable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getModuleSymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.addTrackedFile", + "name": "Program.addTrackedFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.addTrackedFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getModuleSymbolTable", + "func_name": "addTrackedFile", "line_range": [ - 677, - 683 + 360, + 410 ], "class_name": "Program" }, - "description": "retrieve module symbol table for uri" + "description": "add tracked file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getBoundSourceFileInfo", - "name": "Program.getBoundSourceFileInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getBoundSourceFileInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.addTrackedFiles", + "name": "Program.addTrackedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.addTrackedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getBoundSourceFileInfo", + "func_name": "addTrackedFiles", "line_range": [ - 685, - 693 + 344, + 348 ], "class_name": "Program" }, - "description": "return bound source file info" + "description": "add tracked files" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.analyze", @@ -15899,7 +15911,7 @@ ], "class_name": "Program" }, - "description": "perform incremental program analysis" + "description": "analyze program files" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.analyzeFile", @@ -15915,7 +15927,7 @@ ], "class_name": "Program" }, - "description": "analyze a single source file" + "description": "analyze single file" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.analyzeFileAndGetDiagnostics", @@ -15931,791 +15943,839 @@ ], "class_name": "Program" }, - "description": "analyze file and return diagnostics" + "description": "analyze file diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.run", - "name": "Program.run", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.run", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.bindShadowFile", + "name": "Program.bindShadowFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.bindShadowFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "run", + "func_name": "bindShadowFile", "line_range": [ - 775, - 777 + 1094, + 1109 ], "class_name": "Program" }, - "description": "execute operation within program context" + "description": "bind shadow file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.runEditMode", - "name": "Program.runEditMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.runEditMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.clone", + "name": "Program.clone", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.clone", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "runEditMode", + "func_name": "clone", "line_range": [ - 783, - 790 + 1042, + 1071 ], "class_name": "Program" }, - "description": "execute operation under edit mode" + "description": "clone analysis program" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceMapper", - "name": "Program.getSourceMapper", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceMapper", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.containsSourceFileIn", + "name": "Program.containsSourceFileIn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.containsSourceFileIn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getSourceMapper", + "func_name": "containsSourceFileIn", "line_range": [ - 792, - 801 + 632, + 640 ], "class_name": "Program" }, - "description": "retrieve source mapper for uri" + "description": "test file containment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getParserOutput", - "name": "Program.getParserOutput", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getParserOutput", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.createNewEvaluatorInternal", + "name": "Program.createNewEvaluatorInternal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.createNewEvaluatorInternal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getParserOutput", + "func_name": "createNewEvaluatorInternal", "line_range": [ - 803, - 809 + 1115, + 1117 ], "class_name": "Program" }, - "description": "get parser output for file" + "description": "create type evaluator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getParseResults", - "name": "Program.getParseResults", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getParseResults", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.dispose", + "name": "Program.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.dispose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getParseResults", + "func_name": "dispose", "line_range": [ - 811, - 817 + 222, + 227 ], "class_name": "Program" }, - "description": "return parse results for file" + "description": "dispose analysis program" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getParseDiagnostics", - "name": "Program.getParseDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getParseDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.disposeInternal", + "name": "Program.disposeInternal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.disposeInternal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getParseDiagnostics", + "func_name": "disposeInternal", "line_range": [ - 819, - 825 + 1111, + 1113 ], "class_name": "Program" }, - "description": "fetch parse diagnostics for file" + "description": "dispose internal resources" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.handleMemoryHighUsage", - "name": "Program.handleMemoryHighUsage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.handleMemoryHighUsage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.emptyCache", + "name": "Program.emptyCache", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.emptyCache", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "handleMemoryHighUsage", + "func_name": "emptyCache", "line_range": [ - 827, - 829 + 1086, + 1092 ], "class_name": "Program" }, - "description": "respond to high memory usage" + "description": "clear analysis caches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.printDetailedAnalysisTimes", - "name": "Program.printDetailedAnalysisTimes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.printDetailedAnalysisTimes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.enterEditMode", + "name": "Program.enterEditMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.enterEditMode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "printDetailedAnalysisTimes", + "func_name": "enterEditMode", "line_range": [ - 833, - 847 + 229, + 231 ], "class_name": "Program" }, - "description": "log detailed analysis timing" + "description": "enable edit mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.printDependencies", - "name": "Program.printDependencies", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.printDependencies", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.exitEditMode", + "name": "Program.exitEditMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.exitEditMode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "printDependencies", + "func_name": "exitEditMode", "line_range": [ - 851, - 904 + 233, + 284 ], "class_name": "Program" }, - "description": "output module dependency information" + "description": "restore edited files; remove temporary files; return pending edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getTypeOfSymbol", - "name": "Program.getTypeOfSymbol", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getTypeOfSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.functionSignatureDisplay", + "name": "Program.functionSignatureDisplay", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.functionSignatureDisplay", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getTypeOfSymbol", + "func_name": "functionSignatureDisplay", "line_range": [ - 906, - 911 + 628, + 630 ], "class_name": "Program" }, - "description": "retrieve type of symbol in file" + "description": "format function signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.printType", - "name": "Program.printType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.printType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getBoundSourceFile", + "name": "Program.getBoundSourceFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getBoundSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "printType", + "func_name": "getBoundSourceFile", "line_range": [ - 913, - 918 + 662, + 664 ], "class_name": "Program" }, - "description": "format and print type information" + "description": "get bound source file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getTextOnRange", - "name": "Program.getTextOnRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getTextOnRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getBoundSourceFileInfo", + "name": "Program.getBoundSourceFileInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getBoundSourceFileInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getTextOnRange", + "func_name": "getBoundSourceFileInfo", "line_range": [ - 920, - 944 + 685, + 693 ], "class_name": "Program" }, - "description": "extract text from file range" + "description": "get bound file record" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnostics", - "name": "Program.getDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getCacheUsage", + "name": "Program.getCacheUsage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getCacheUsage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getDiagnostics", + "func_name": "getCacheUsage", "line_range": [ - 946, - 989 + 1077, + 1083 ], "class_name": "Program" }, - "description": "collect diagnostics for file set" + "description": "report cache usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnosticsForRange", - "name": "Program.getDiagnosticsForRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getDiagnosticsForRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getChainedUri", + "name": "Program.getChainedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getChainedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getDiagnosticsForRange", + "func_name": "getChainedUri", "line_range": [ - 991, - 1014 + 462, + 465 ], "class_name": "Program" }, - "description": "collect diagnostics intersecting range" + "description": "get chained file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.clone", - "name": "Program.clone", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.clone", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getCheckingRequiredFiles", + "name": "Program.getCheckingRequiredFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getCheckingRequiredFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "clone", + "func_name": "getCheckingRequiredFiles", "line_range": [ - 1016, - 1045 + 593, + 597 ], "class_name": "Program" }, - "description": "create program snapshot clone" + "description": "list files needing checks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getCacheUsage", - "name": "Program.getCacheUsage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getCacheUsage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnostics", + "name": "Program.getDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "getCacheUsage", + "func_name": "getDiagnostics", "line_range": [ - 1051, - 1057 + 946, + 989 ], "class_name": "Program" }, - "description": "report cache usage statistics" + "description": "get file diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.emptyCache", - "name": "Program.emptyCache", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.emptyCache", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnosticsForRange", + "name": "Program.getDiagnosticsForRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getDiagnosticsForRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "emptyCache", + "func_name": "getDiagnosticsForRange", "line_range": [ - 1060, - 1066 + 991, + 1014 ], "class_name": "Program" }, - "description": "clear program caches" + "description": "get range diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.bindShadowFile", - "name": "Program.bindShadowFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.bindShadowFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnosticsForRangeWithoutFileIgnore", + "name": "Program.getDiagnosticsForRangeWithoutFileIgnore", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getDiagnosticsForRangeWithoutFileIgnore", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "bindShadowFile", + "func_name": "getDiagnosticsForRangeWithoutFileIgnore", "line_range": [ - 1068, - 1083 + 1016, + 1040 ], "class_name": "Program" }, - "description": "bind shadowed file for analysis" + "description": "get unfiltered range diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.disposeInternal", - "name": "Program.disposeInternal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.disposeInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getFileCount", + "name": "Program.getFileCount", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getFileCount", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "disposeInternal", + "func_name": "getFileCount", "line_range": [ - 1085, - 1087 + 567, + 573 ], "class_name": "Program" }, - "description": "perform internal cleanup operations" + "description": "count program files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.createNewEvaluatorInternal", - "name": "Program.createNewEvaluatorInternal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.createNewEvaluatorInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getFilesToAnalyzeCount", + "name": "Program.getFilesToAnalyzeCount", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getFilesToAnalyzeCount", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "createNewEvaluatorInternal", + "func_name": "getFilesToAnalyzeCount", "line_range": [ - 1089, - 1091 + 599, + 622 ], "class_name": "Program" }, - "description": "instantiate new type evaluator" + "description": "count files needing analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._handleMemoryHighUsage", - "name": "Program._handleMemoryHighUsage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._handleMemoryHighUsage", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getModuleSymbolTable", + "name": "Program.getModuleSymbolTable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getModuleSymbolTable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_handleMemoryHighUsage", + "func_name": "getModuleSymbolTable", "line_range": [ - 1093, - 1116 + 677, + 683 ], "class_name": "Program" }, - "description": "evict resources under memory pressure" + "description": "get module symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._discardCachedParseResults", - "name": "Program._discardCachedParseResults", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._discardCachedParseResults", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getOpened", + "name": "Program.getOpened", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getOpened", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_discardCachedParseResults", + "func_name": "getOpened", "line_range": [ - 1120, - 1124 + 585, + 587 ], "class_name": "Program" }, - "description": "drop cached parse results" + "description": "list opened files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._runEvaluatorWithCancellationToken", - "name": "Program._runEvaluatorWithCancellationToken", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._runEvaluatorWithCancellationToken", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getOwnedFiles", + "name": "Program.getOwnedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getOwnedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_runEvaluatorWithCancellationToken", + "func_name": "getOwnedFiles", "line_range": [ - 1134, - 1164 + 589, + 591 ], "class_name": "Program" }, - "description": "run evaluator operation with cancellation" + "description": "list owned files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._removeUnneededFiles", - "name": "Program._removeUnneededFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._removeUnneededFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getParseDiagnostics", + "name": "Program.getParseDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getParseDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_removeUnneededFiles", + "func_name": "getParseDiagnostics", "line_range": [ - 1169, - 1243 + 819, + 825 ], "class_name": "Program" }, - "description": "prune unneeded files and report diagnostics" + "description": "get parse diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._isFileNeeded", - "name": "Program._isFileNeeded", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._isFileNeeded", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getParseResults", + "name": "Program.getParseResults", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getParseResults", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_isFileNeeded", + "func_name": "getParseResults", "line_range": [ - 1245, - 1267 + 811, + 817 ], "class_name": "Program" }, - "description": "determine if file is needed for analysis" + "description": "get parse results" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._isImportNeededRecursive", - "name": "Program._isImportNeededRecursive", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._isImportNeededRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getParserOutput", + "name": "Program.getParserOutput", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getParserOutput", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_isImportNeededRecursive", + "func_name": "getParserOutput", "line_range": [ - 1269, - 1290 + 803, + 809 ], "class_name": "Program" }, - "description": "check recursive import necessity" + "description": "get parser output" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._createSourceMapper", - "name": "Program._createSourceMapper", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._createSourceMapper", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceFile", + "name": "Program.getSourceFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_createSourceMapper", + "func_name": "getSourceFile", "line_range": [ - 1292, - 1329 + 653, + 660 ], "class_name": "Program" }, - "description": "build source mapper for file" + "description": "get source file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._isImportAllowed", - "name": "Program._isImportAllowed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._isImportAllowed", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceFileInfo", + "name": "Program.getSourceFileInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceFileInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_isImportAllowed", + "func_name": "getSourceFileInfo", "line_range": [ - 1331, - 1399 + 670, + 675 ], "class_name": "Program" }, - "description": "determine import allowance per policy" + "description": "get source file record" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getSourceFileInfoFromKey", - "name": "Program._getSourceFileInfoFromKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getSourceFileInfoFromKey", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceFileInfoList", + "name": "Program.getSourceFileInfoList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceFileInfoList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_getSourceFileInfoFromKey", + "func_name": "getSourceFileInfoList", "line_range": [ - 1401, - 1403 + 666, + 668 ], "class_name": "Program" }, - "description": "lookup source file info by key" + "description": "list source file records" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._updateSourceFileImports", - "name": "Program._updateSourceFileImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._updateSourceFileImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getSourceMapper", + "name": "Program.getSourceMapper", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getSourceMapper", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_updateSourceFileImports", + "func_name": "getSourceMapper", "line_range": [ - 1405, - 1600 + 792, + 801 ], "class_name": "Program" }, - "description": "recompute import relationships for file" + "description": "get source mapper" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._removeSourceFileFromListAndMap", - "name": "Program._removeSourceFileFromListAndMap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._removeSourceFileFromListAndMap", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getTextOnRange", + "name": "Program.getTextOnRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getTextOnRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_removeSourceFileFromListAndMap", + "func_name": "getTextOnRange", "line_range": [ - 1602, - 1605 + 920, + 944 ], "class_name": "Program" }, - "description": "remove source file from internal maps" + "description": "get ranged text" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._addToSourceFileListAndMap", - "name": "Program._addToSourceFileListAndMap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._addToSourceFileListAndMap", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getTypeOfSymbol", + "name": "Program.getTypeOfSymbol", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getTypeOfSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_addToSourceFileListAndMap", + "func_name": "getTypeOfSymbol", "line_range": [ - 1607, - 1618 + 906, + 911 ], "class_name": "Program" }, - "description": "add source file to internal lists" + "description": "get symbol type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getModuleName", - "name": "Program._getModuleName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getUserFileCount", + "name": "Program.getUserFileCount", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getUserFileCount", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_getModuleName", + "func_name": "getUserFileCount", "line_range": [ - 1620, - 1623 + 577, + 579 ], "class_name": "Program" }, - "description": "derive module name for uri" + "description": "count user files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getModuleImportInfoForFile", - "name": "Program._getModuleImportInfoForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getModuleImportInfoForFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getUserFiles", + "name": "Program.getUserFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.getUserFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_getModuleImportInfoForFile", + "func_name": "getUserFiles", "line_range": [ - 1625, - 1640 + 581, + 583 ], "class_name": "Program" }, - "description": "gather module import metadata for file" + "description": "list user files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._addShadowedFile", - "name": "Program._addShadowedFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._addShadowedFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.handleMemoryHighUsage", + "name": "Program.handleMemoryHighUsage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.handleMemoryHighUsage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_addShadowedFile", + "func_name": "handleMemoryHighUsage", "line_range": [ - 1646, - 1662 + 827, + 829 ], "class_name": "Program" }, - "description": "add shadowed overlay file entry" + "description": "reduce memory usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._createInterimFileInfo", - "name": "Program._createInterimFileInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._createInterimFileInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.isCheckingOnlyOpenFiles", + "name": "Program.isCheckingOnlyOpenFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.isCheckingOnlyOpenFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_createInterimFileInfo", + "func_name": "isCheckingOnlyOpenFiles", "line_range": [ - 1664, - 1685 + 624, + 626 ], "class_name": "Program" }, - "description": "construct interim source file info" + "description": "report checking scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._createNewEvaluator", - "name": "Program._createNewEvaluator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._createNewEvaluator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.markAllFilesDirty", + "name": "Program.markAllFilesDirty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.markAllFilesDirty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_createNewEvaluator", + "func_name": "markAllFilesDirty", "line_range": [ - 1687, - 1717 + 512, + 530 ], "class_name": "Program" }, - "description": "create and register evaluator instance" + "description": "mark all files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._parseFile", - "name": "Program._parseFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._parseFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.markFilesDirty", + "name": "Program.markFilesDirty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.markFilesDirty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_parseFile", + "func_name": "markFilesDirty", "line_range": [ - 1719, - 1744 + 532, + 565 ], "class_name": "Program" }, - "description": "parse file and discover imports" + "description": "mark selected files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getImplicitImports", - "name": "Program._getImplicitImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getImplicitImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.owns", + "name": "Program.owns", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.owns", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_getImplicitImports", + "func_name": "owns", "line_range": [ - 1746, - 1757 + 642, + 651 ], "class_name": "Program" }, - "description": "identify implicit imports for file" + "description": "test file ownership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._bindImplicitImports", - "name": "Program._bindImplicitImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._bindImplicitImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.printDependencies", + "name": "Program.printDependencies", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.printDependencies", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_bindImplicitImports", + "func_name": "printDependencies", "line_range": [ - 1759, - 1795 + 851, + 904 ], "class_name": "Program" }, - "description": "bind discovered implicit imports" + "description": "report file dependencies" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._bindFile", - "name": "Program._bindFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._bindFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.printDetailedAnalysisTimes", + "name": "Program.printDetailedAnalysisTimes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.printDetailedAnalysisTimes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_bindFile", + "func_name": "printDetailedAnalysisTimes", "line_range": [ - 1799, - 1870 + 833, + 847 ], "class_name": "Program" }, - "description": "bind file ast to symbol table" + "description": "report analysis timings" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getEffectiveFutureImports", - "name": "Program._getEffectiveFutureImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getEffectiveFutureImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.printType", + "name": "Program.printType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.printType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_getEffectiveFutureImports", + "func_name": "printType", "line_range": [ - 1872, - 1880 + 913, + 918 ], "class_name": "Program" }, - "description": "determine effective future imports" + "description": "format type text" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._shouldCheckFile", - "name": "Program._shouldCheckFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._shouldCheckFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.run", + "name": "Program.run", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.run", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_shouldCheckFile", + "func_name": "run", "line_range": [ - 1969, - 1982 + 775, + 777 ], "class_name": "Program" }, - "description": "decide whether to run type checking" + "description": "run program action" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._checkTypes", - "name": "Program._checkTypes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._checkTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.runEditMode", + "name": "Program.runEditMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.runEditMode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_checkTypes", + "func_name": "runEditMode", "line_range": [ - 1984, - 2075 + 783, + 790 ], "class_name": "Program" }, - "description": "perform type checking for file" + "description": "run edit action" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._checkDependentFiles", - "name": "Program._checkDependentFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._checkDependentFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setAllowedThirdPartyImports", + "name": "Program.setAllowedThirdPartyImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setAllowedThirdPartyImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_checkDependentFiles", + "func_name": "setAllowedThirdPartyImports", "line_range": [ - 2077, - 2135 + 340, + 342 ], "class_name": "Program" }, - "description": "check dependent files for changes" + "description": "allow third party imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._getImportsRecursive", - "name": "Program._getImportsRecursive", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._getImportsRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setConfigOptions", + "name": "Program.setConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_getImportsRecursive", + "func_name": "setConfigOptions", "line_range": [ - 2141, - 2175 + 286, + 292 ], "class_name": "Program" }, - "description": "collect recursive import closure for file" + "description": "update configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._detectAndReportImportCycles", - "name": "Program._detectAndReportImportCycles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._detectAndReportImportCycles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setFileClosed", + "name": "Program.setFileClosed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setFileClosed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_detectAndReportImportCycles", + "func_name": "setFileClosed", "line_range": [ - 2177, - 2241 + 481, + 510 ], "class_name": "Program" }, - "description": "detect and report import cycles" + "description": "mark file closed" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._logImportCycle", - "name": "Program._logImportCycle", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._logImportCycle", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setFileOpened", + "name": "Program.setFileOpened", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setFileOpened", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_logImportCycle", + "func_name": "setFileOpened", "line_range": [ - 2243, - 2254 + 412, + 460 ], "class_name": "Program" }, - "description": "record import cycle for diagnostics" + "description": "mark file opened; update file contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program._markFileDirtyRecursive", - "name": "Program._markFileDirtyRecursive", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program._markFileDirtyRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setImportResolver", + "name": "Program.setImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", - "func_name": "_markFileDirtyRecursive", + "func_name": "setImportResolver", + "line_range": [ + 294, + 301 + ], + "class_name": "Program" + }, + "description": "update import resolver" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setPreCheckCallback", + "name": "Program.setPreCheckCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setPreCheckCallback", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", + "func_name": "setPreCheckCallback", + "line_range": [ + 331, + 333 + ], + "class_name": "Program" + }, + "description": "set precheck callback" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.setTrackedFiles", + "name": "Program.setTrackedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.setTrackedFiles", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", + "func_name": "setTrackedFiles", + "line_range": [ + 304, + 327 + ], + "class_name": "Program" + }, + "description": "replace tracked files; remove unused files" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.updateChainedUri", + "name": "Program.updateChainedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/program.ts/Program.updateChainedUri", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts", + "func_name": "updateChainedUri", "line_range": [ - 2256, - 2300 + 467, + 479 ], "class_name": "Program" }, - "description": "mark file and dependents dirty" + "description": "update chained file" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts::__file__", @@ -16748,154 +16808,154 @@ "description": "Evaluates and constructs Python property types and manages getter/setter/deleter method typing and symbol table entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::validatePropertyMethod", - "name": "validatePropertyMethod", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/validatePropertyMethod", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addDecoratorMethodsToPropertySymbolTable", + "name": "addDecoratorMethodsToPropertySymbolTable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addDecoratorMethodsToPropertySymbolTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "validatePropertyMethod", + "func_name": "addDecoratorMethodsToPropertySymbolTable", "line_range": [ - 43, - 47 + 447, + 465 ] }, - "description": "report static property method" + "description": "add decorator getter setter deleter methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::createProperty", - "name": "createProperty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/createProperty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addDelMethodToPropertySymbolTable", + "name": "addDelMethodToPropertySymbolTable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addDelMethodToPropertySymbolTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "createProperty", + "func_name": "addDelMethodToPropertySymbolTable", "line_range": [ - 49, - 113 + 395, + 428 ] }, - "description": "create property class instance; clone property symbol table; store getter method information; mark property as class property when applicable; add descriptor get overloads; add decorator accessor methods" + "description": "synthesize delete method for descriptor; derive obj parameter type from deleter; adopt deleter type variable scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::clonePropertyWithSetter", - "name": "clonePropertyWithSetter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/clonePropertyWithSetter", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addGetMethodToPropertySymbolTable", + "name": "addGetMethodToPropertySymbolTable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addGetMethodToPropertySymbolTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "clonePropertyWithSetter", + "func_name": "addGetMethodToPropertySymbolTable", "line_range": [ - 115, - 208 + 269, + 344 ] }, - "description": "verify setter parameter type consistency; mark asymmetric descriptor for type mismatch; clone property class instance with setter; clone property symbol table; add set method to property symbol table; add decorator accessor methods" + "description": "synthesize get overloads for descriptor; derive get return types from getter; set type variable scope from getter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::clonePropertyWithDeleter", - "name": "clonePropertyWithDeleter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/clonePropertyWithDeleter", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addSetMethodToPropertySymbolTable", + "name": "addSetMethodToPropertySymbolTable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addSetMethodToPropertySymbolTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "clonePropertyWithDeleter", + "func_name": "addSetMethodToPropertySymbolTable", "line_range": [ - 210, - 267 + 346, + 393 ] }, - "description": "clone property class instance with deleter; preserve existing getter and setter information; clone property symbol table; add delete method to property symbol table; add decorator accessor methods" + "description": "synthesize set method for descriptor; derive obj parameter type from setter; include value parameter matching setter; adopt setter type variable scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addGetMethodToPropertySymbolTable", - "name": "addGetMethodToPropertySymbolTable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addGetMethodToPropertySymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::assignProperty", + "name": "assignProperty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/assignProperty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "addGetMethodToPropertySymbolTable", + "func_name": "assignProperty", "line_range": [ - 269, - 344 + 467, + 562 ] }, - "description": "synthesize get overloads for descriptor; derive get return types from getter; set type variable scope from getter" + "description": "validate property accessor compatibility; report missing accessor diagnostics; infer accessor return types; apply self type variable solution; bind accessor functions to instances; check accessor type assignability" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addSetMethodToPropertySymbolTable", - "name": "addSetMethodToPropertySymbolTable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addSetMethodToPropertySymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::clonePropertyWithDeleter", + "name": "clonePropertyWithDeleter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/clonePropertyWithDeleter", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "addSetMethodToPropertySymbolTable", + "func_name": "clonePropertyWithDeleter", "line_range": [ - 346, - 393 + 210, + 267 ] }, - "description": "synthesize set method for descriptor; derive obj parameter type from setter; include value parameter matching setter; adopt setter type variable scope" + "description": "clone property class instance with deleter; preserve existing getter and setter information; clone property symbol table; add delete method to property symbol table; add decorator accessor methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addDelMethodToPropertySymbolTable", - "name": "addDelMethodToPropertySymbolTable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addDelMethodToPropertySymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::clonePropertyWithSetter", + "name": "clonePropertyWithSetter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/clonePropertyWithSetter", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "addDelMethodToPropertySymbolTable", + "func_name": "clonePropertyWithSetter", "line_range": [ - 395, - 428 + 115, + 208 ] }, - "description": "synthesize delete method for descriptor; derive obj parameter type from deleter; adopt deleter type variable scope" + "description": "verify setter parameter type consistency; mark asymmetric descriptor for type mismatch; clone property class instance with setter; clone property symbol table; add set method to property symbol table; add decorator accessor methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::updateGetSetDelMethodForClonedProperty", - "name": "updateGetSetDelMethodForClonedProperty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/updateGetSetDelMethodForClonedProperty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::createProperty", + "name": "createProperty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/createProperty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "updateGetSetDelMethodForClonedProperty", + "func_name": "createProperty", "line_range": [ - 430, - 445 + 49, + 113 ] }, - "description": "recreate descriptor get set delete methods from stored infos" + "description": "create property class instance; clone property symbol table; store getter method information; mark property as class property when applicable; add descriptor get overloads; add decorator accessor methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::addDecoratorMethodsToPropertySymbolTable", - "name": "addDecoratorMethodsToPropertySymbolTable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/addDecoratorMethodsToPropertySymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::updateGetSetDelMethodForClonedProperty", + "name": "updateGetSetDelMethodForClonedProperty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/updateGetSetDelMethodForClonedProperty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "addDecoratorMethodsToPropertySymbolTable", + "func_name": "updateGetSetDelMethodForClonedProperty", "line_range": [ - 447, - 465 + 430, + 445 ] }, - "description": "add decorator getter setter deleter methods" + "description": "recreate descriptor get set delete methods from stored infos" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::assignProperty", - "name": "assignProperty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/assignProperty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts::validatePropertyMethod", + "name": "validatePropertyMethod", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/properties.ts/validatePropertyMethod", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/properties.ts", - "func_name": "assignProperty", + "func_name": "validatePropertyMethod", "line_range": [ - 467, - 562 + 43, + 47 ] }, - "description": "validate property accessor compatibility; report missing accessor diagnostics; infer accessor return types; apply self type variable solution; bind accessor functions to instances; check accessor type assignability" + "description": "report static property method" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::__file__", @@ -16943,124 +17003,124 @@ "description": "determine module protocol compatibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::isMethodOnlyProtocol", - "name": "isMethodOnlyProtocol", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/isMethodOnlyProtocol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::assignToProtocolInternal", + "name": "assignToProtocolInternal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/assignToProtocolInternal", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "isMethodOnlyProtocol", + "func_name": "assignToProtocolInternal", "line_range": [ - 175, - 198 + 360, + 832 ] }, - "description": "check protocol for method only status; detect data members in protocol bases" + "description": "verify invariant type equality; infer variance for class; synthesize and bind self type; substitute typed dict placeholder; ignore special-case protocol members; track checked symbols to avoid duplicates; iterate and validate protocol members; verify protocol member presence; specialize member types per mro; bind source methods to class; bind destination methods to class; infer function return types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::isProtocolUnsafeOverlap", - "name": "isProtocolUnsafeOverlap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/isProtocolUnsafeOverlap", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::createProtocolConstraints", + "name": "createProtocolConstraints", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/createProtocolConstraints", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "isProtocolUnsafeOverlap", + "func_name": "createProtocolConstraints", "line_range": [ - 203, - 230 + 837, + 880 ] }, - "description": "detect unsafe member overlap between class and protocol" + "description": "create protocol constraints; copy existing typevar bounds; resolve unsolved type arguments; assign resolved type arguments to typevars; apply variance aware assignment flags" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::makeProtocolCompatibilityCacheClassKey", - "name": "makeProtocolCompatibilityCacheClassKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/makeProtocolCompatibilityCacheClassKey", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::getProtocolCompatibility", + "name": "getProtocolCompatibility", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/getProtocolCompatibility", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "makeProtocolCompatibilityCacheClassKey", + "func_name": "getProtocolCompatibility", "line_range": [ - 232, - 236 + 240, + 280 ] }, - "description": "generate unique cache key for class" + "description": "retrieve cached protocol compatibility entry; match compatibility by flags types and constraints" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::getProtocolCompatibility", - "name": "getProtocolCompatibility", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/getProtocolCompatibility", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::isConstraintTrackerSame", + "name": "isConstraintTrackerSame", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/isConstraintTrackerSame", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "getProtocolCompatibility", + "func_name": "isConstraintTrackerSame", "line_range": [ - 240, - 280 + 352, + 358 ] }, - "description": "retrieve cached protocol compatibility entry; match compatibility by flags types and constraints" + "description": "compare constraint trackers for equivalence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::setProtocolCompatibility", - "name": "setProtocolCompatibility", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/setProtocolCompatibility", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::isMethodOnlyProtocol", + "name": "isMethodOnlyProtocol", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/isMethodOnlyProtocol", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "setProtocolCompatibility", + "func_name": "isMethodOnlyProtocol", "line_range": [ - 282, - 350 + 175, + 198 ] }, - "description": "store protocol compatibility result for source class; detect always incompatible generic specializations; limit cache size to prevent growth" + "description": "check protocol for method only status; detect data members in protocol bases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::isConstraintTrackerSame", - "name": "isConstraintTrackerSame", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/isConstraintTrackerSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::isProtocolUnsafeOverlap", + "name": "isProtocolUnsafeOverlap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/isProtocolUnsafeOverlap", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "isConstraintTrackerSame", + "func_name": "isProtocolUnsafeOverlap", "line_range": [ - 352, - 358 + 203, + 230 ] }, - "description": "compare constraint trackers for equivalence" + "description": "detect unsafe member overlap between class and protocol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::assignToProtocolInternal", - "name": "assignToProtocolInternal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/assignToProtocolInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::makeProtocolCompatibilityCacheClassKey", + "name": "makeProtocolCompatibilityCacheClassKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/makeProtocolCompatibilityCacheClassKey", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "assignToProtocolInternal", + "func_name": "makeProtocolCompatibilityCacheClassKey", "line_range": [ - 360, - 832 + 232, + 236 ] }, - "description": "verify invariant type equality; infer variance for class; synthesize and bind self type; substitute typed dict placeholder; ignore special-case protocol members; track checked symbols to avoid duplicates; iterate and validate protocol members; verify protocol member presence; specialize member types per mro; bind source methods to class; bind destination methods to class; infer function return types" + "description": "generate unique cache key for class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::createProtocolConstraints", - "name": "createProtocolConstraints", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/createProtocolConstraints", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts::setProtocolCompatibility", + "name": "setProtocolCompatibility", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/protocols.ts/setProtocolCompatibility", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts", - "func_name": "createProtocolConstraints", + "func_name": "setProtocolCompatibility", "line_range": [ - 837, - 880 + 282, + 350 ] }, - "description": "create protocol constraints; copy existing typevar bounds; resolve unsolved type arguments; assign resolved type arguments to typevars; apply variance aware assignment flags" + "description": "store protocol compatibility result for source class; detect always incompatible generic specializations; limit cache size to prevent growth" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::__file__", @@ -17072,130 +17132,130 @@ "func_name": "pythonPathUtils", "line_range": [ 1, - 251 + 255 ] }, - "description": "Resolves Python interpreter and typeshed search paths, site-packages locations, and .pth-derived paths" + "description": "Resolves Python import search paths, typeshed locations, site-packages, and .pth entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::getTypeShedFallbackPath", - "name": "getTypeShedFallbackPath", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/getTypeShedFallbackPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::addPathIfUnique", + "name": "addPathIfUnique", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/addPathIfUnique", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "getTypeShedFallbackPath", + "func_name": "addPathIfUnique", "line_range": [ - 28, - 47 + 247, + 254 ] }, - "description": "find typeshed fallback path; check parent directory for typeshed; return real case path when exists" + "description": "add unique path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::getTypeshedSubdirectory", - "name": "getTypeshedSubdirectory", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/getTypeshedSubdirectory", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::findPythonSearchPaths", + "name": "findPythonSearchPaths", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/findPythonSearchPaths", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "getTypeshedSubdirectory", + "func_name": "findPythonSearchPaths", "line_range": [ - 49, - 51 + 53, + 139 ] }, - "description": "select typeshed subdirectory by library type" + "description": "discover python import paths; include package extension paths; preserve interpreter library roots; filter workspace watch paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::findPythonSearchPaths", - "name": "findPythonSearchPaths", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/findPythonSearchPaths", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::findSitePackagesPath", + "name": "findSitePackagesPath", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/findSitePackagesPath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "findPythonSearchPaths", + "func_name": "findSitePackagesPath", "line_range": [ - 53, - 135 + 146, + 203 ] }, - "description": "discover virtualenv site packages paths; include additional paths from site package files; preserve interpreter stdlib roots with venv; fallback to interpreter search paths; filter paths when watch mode requested; normalize path casing before returning" + "description": "locate package directory; prefer matching python version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::isPythonBinary", - "name": "isPythonBinary", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/isPythonBinary", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::getPathsFromPthFiles", + "name": "getPathsFromPthFiles", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/getPathsFromPthFiles", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "isPythonBinary", + "func_name": "getPathsFromPthFiles", "line_range": [ - 137, - 140 + 225, + 245 ] }, - "description": "recognize common python executable names" + "description": "collect package extension paths; filter oversized path files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::findSitePackagesPath", - "name": "findSitePackagesPath", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/findSitePackagesPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::getTypeShedFallbackPath", + "name": "getTypeShedFallbackPath", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/getTypeShedFallbackPath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "findSitePackagesPath", + "func_name": "getTypeShedFallbackPath", "line_range": [ - 142, - 199 + 28, + 47 ] }, - "description": "find site packages directory under lib path; prefer subdirectory matching configured python version; fallback to first python subdirectory with site packages" + "description": "resolve typeshed fallback path" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::readPthSearchPaths", - "name": "readPthSearchPaths", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/readPthSearchPaths", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::getTypeshedSubdirectory", + "name": "getTypeshedSubdirectory", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/getTypeshedSubdirectory", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "readPthSearchPaths", + "func_name": "getTypeshedSubdirectory", "line_range": [ - 201, - 219 + 49, + 51 ] }, - "description": "extract search paths from path file; ignore commented and import lines; resolve relative entries to absolute paths; validate entries exist as directories" + "description": "resolve typeshed subdirectory" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::getPathsFromPthFiles", - "name": "getPathsFromPthFiles", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/getPathsFromPthFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::isPythonBinary", + "name": "isPythonBinary", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/isPythonBinary", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "getPathsFromPthFiles", + "func_name": "isPythonBinary", "line_range": [ - 221, - 241 + 141, + 144 ] }, - "description": "list package path files in directory; process files in name sorted order; skip files outside expected size range; aggregate search paths from valid files" + "description": "identify python executable name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::addPathIfUnique", - "name": "addPathIfUnique", - "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/addPathIfUnique", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::readPthSearchPaths", + "name": "readPthSearchPaths", + "feature_path": "pyright-whole-repo/ImportResolution/Manage analyzer runtime/source file state/pythonPathUtils.ts/readPthSearchPaths", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts", - "func_name": "addPathIfUnique", + "func_name": "readPthSearchPaths", "line_range": [ - 243, - 250 + 205, + 223 ] }, - "description": "add path to list if unique; report whether addition occurred" + "description": "load package search paths; validate package search paths" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts::__file__", @@ -17273,100 +17333,116 @@ "description": "initialize scope metadata; set parent and proxy relationships" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.getGlobalScope", - "name": "Scope.getGlobalScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.getGlobalScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.addSymbol", + "name": "Scope.addSymbol", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.addSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "getGlobalScope", + "func_name": "addSymbol", "line_range": [ - 136, - 154 + 246, + 250 ], "class_name": "Scope" }, - "description": "find enclosing module scope; determine execution boundary" + "description": "create and register new symbol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.isIndependentlyExecutable", - "name": "Scope.isIndependentlyExecutable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.isIndependentlyExecutable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.getBindingType", + "name": "Scope.getBindingType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.getBindingType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "isIndependentlyExecutable", + "func_name": "getBindingType", "line_range": [ - 159, - 161 + 252, + 254 ], "class_name": "Scope" }, - "description": "determine if scope executes independently" + "description": "retrieve binding type for name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.lookUpSymbol", - "name": "Scope.lookUpSymbol", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.lookUpSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.getGlobalScope", + "name": "Scope.getGlobalScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.getGlobalScope", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "lookUpSymbol", + "func_name": "getGlobalScope", "line_range": [ - 163, - 165 + 136, + 154 ], "class_name": "Scope" }, - "description": "retrieve symbol in current scope" + "description": "find enclosing module scope; determine execution boundary" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.lookUpSymbolRecursive", - "name": "Scope.lookUpSymbolRecursive", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.lookUpSymbolRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.getSlotsNames", + "name": "Scope.getSlotsNames", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.getSlotsNames", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "lookUpSymbolRecursive", + "func_name": "getSlotsNames", "line_range": [ - 167, - 244 + 264, + 266 ], "class_name": "Scope" }, - "description": "resolve symbol across nested scopes; respect nonlocal and global bindings; enforce external visibility rules; consult chained module level fallbacks; indicate execution scope crossing; exclude symbols defined only by member access" + "description": "retrieve slots names from scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.addSymbol", - "name": "Scope.addSymbol", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.addSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.isIndependentlyExecutable", + "name": "Scope.isIndependentlyExecutable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.isIndependentlyExecutable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "addSymbol", + "func_name": "isIndependentlyExecutable", "line_range": [ - 246, - 250 + 159, + 161 ], "class_name": "Scope" }, - "description": "create and register new symbol" + "description": "determine if scope executes independently" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.getBindingType", - "name": "Scope.getBindingType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.getBindingType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.lookUpSymbol", + "name": "Scope.lookUpSymbol", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.lookUpSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "getBindingType", + "func_name": "lookUpSymbol", "line_range": [ - 252, - 254 + 163, + 165 ], "class_name": "Scope" }, - "description": "retrieve binding type for name" + "description": "retrieve symbol in current scope" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.lookUpSymbolRecursive", + "name": "Scope.lookUpSymbolRecursive", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.lookUpSymbolRecursive", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", + "func_name": "lookUpSymbolRecursive", + "line_range": [ + 167, + 244 + ], + "class_name": "Scope" + }, + "description": "resolve symbol across nested scopes; respect nonlocal and global bindings; enforce external visibility rules; consult chained module level fallbacks; indicate execution scope crossing; exclude symbols defined only by member access" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.setBindingType", @@ -17400,22 +17476,6 @@ }, "description": "store slots names in scope" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts::Scope.getSlotsNames", - "name": "Scope.getSlotsNames", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scope.ts/Scope.getSlotsNames", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/scope.ts", - "func_name": "getSlotsNames", - "line_range": [ - 264, - 266 - ], - "class_name": "Scope" - }, - "description": "retrieve slots names from scope" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts::__file__", "name": "scopeUtils", @@ -17431,6 +17491,21 @@ }, "description": "Utilities for locating and inspecting analysis scopes and scope hierarchies for parse tree nodes" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts::findTopNodeInScope", + "name": "findTopNodeInScope", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scopeUtils.ts/findTopNodeInScope", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts", + "func_name": "findTopNodeInScope", + "line_range": [ + 65, + 82 + ] + }, + "description": "locate topmost node within scope" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts::getBuiltInScope", "name": "getBuiltInScope", @@ -17476,21 +17551,6 @@ }, "description": "compute scope chain for node; stop at specified stop scope; report missing scope" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts::findTopNodeInScope", - "name": "findTopNodeInScope", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/scopeUtils.ts/findTopNodeInScope", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts", - "func_name": "findTopNodeInScope", - "line_range": [ - 65, - 82 - ] - }, - "description": "locate topmost node within scope" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts::isScopeContainedWithin", "name": "isScopeContainedWithin", @@ -17546,25 +17606,10 @@ "func_name": "service", "line_range": [ 1, - 1946 - ] - }, - "description": "Analyzes Python files and manages background analysis, programs, configuration, and import resolution" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::getNextServiceId", - "name": "getNextServiceId", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/getNextServiceId", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getNextServiceId", - "line_range": [ - 114, - 116 + 1969 ] }, - "description": "generate unique service id" + "description": "Provides AnalyzerService to configure, watch, and analyze Python projects for Pyright" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService", @@ -17575,427 +17620,411 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", "func_name": "AnalyzerService", "line_range": [ - 118, - 1945 + 124, + 1968 ] }, - "description": "initialize service options and provider; create background analysis program; configure import resolver and host" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setServiceName", - "name": "AnalyzerService.setServiceName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setServiceName", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "setServiceName", - "line_range": [ - 230, - 232 - ], - "class_name": "AnalyzerService" - }, - "description": "set service instance name" + "description": "initialize analysis service; configure analysis dependencies" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.clone", - "name": "AnalyzerService.clone", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.clone", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._applyCommandLineOverrides", + "name": "AnalyzerService._applyCommandLineOverrides", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._applyCommandLineOverrides", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "clone", + "func_name": "_applyCommandLineOverrides", "line_range": [ - 234, - 268 + 1104, + 1233 ], "class_name": "AnalyzerService" }, - "description": "create cloned analyzer service; preserve tracked user files; preserve open file contents" + "description": "apply command line overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.runEditMode", - "name": "AnalyzerService.runEditMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.runEditMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._applyLanguageServerOptions", + "name": "AnalyzerService._applyLanguageServerOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._applyLanguageServerOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "runEditMode", + "func_name": "_applyLanguageServerOptions", "line_range": [ - 272, - 299 + 1065, + 1102 ], "class_name": "AnalyzerService" }, - "description": "execute program edit operations; return file edit actions" + "description": "apply language server options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.dispose", - "name": "AnalyzerService.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.dispose", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._attemptParseFile", + "name": "AnalyzerService._attemptParseFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._attemptParseFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "dispose", + "func_name": "_attemptParseFile", "line_range": [ - 301, - 315 + 1344, + 1386 ], "class_name": "AnalyzerService" }, - "description": "dispose analyzer service resources; remove file watchers and timers" + "description": "parse configuration file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.createImportResolver", - "name": "AnalyzerService.createImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.createImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._clearLibraryReanalysisTimer", + "name": "AnalyzerService._clearLibraryReanalysisTimer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._clearLibraryReanalysisTimer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "createImportResolver", + "func_name": "_clearLibraryReanalysisTimer", "line_range": [ - 317, - 319 + 1804, + 1812 ], "class_name": "AnalyzerService" }, - "description": "create import resolver instance" + "description": "cancel library reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setCompletionCallback", - "name": "AnalyzerService.setCompletionCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setCompletionCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._clearReanalysisTimer", + "name": "AnalyzerService._clearReanalysisTimer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._clearReanalysisTimer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "setCompletionCallback", + "func_name": "_clearReanalysisTimer", "line_range": [ - 321, - 324 + 1947, + 1952 ], "class_name": "AnalyzerService" }, - "description": "register analysis completion callback" + "description": "cancel source reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setOptions", - "name": "AnalyzerService.setOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._clearReloadConfigTimer", + "name": "AnalyzerService._clearReloadConfigTimer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._clearReloadConfigTimer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "setOptions", + "func_name": "_clearReloadConfigTimer", "line_range": [ - 326, - 336 + 1910, + 1915 ], "class_name": "AnalyzerService" }, - "description": "apply command line options; update program configuration and host" + "description": "cancel configuration reload" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.hasSourceFile", - "name": "AnalyzerService.hasSourceFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.hasSourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._ensureDefaultOptions", + "name": "AnalyzerService._ensureDefaultOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._ensureDefaultOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "hasSourceFile", + "func_name": "_ensureDefaultOptions", "line_range": [ - 338, - 340 + 922, + 1063 ], "class_name": "AnalyzerService" }, - "description": "check for existing source file" + "description": "ensure default configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.isTracked", - "name": "AnalyzerService.isTracked", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.isTracked", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._getConfigOptions", + "name": "AnalyzerService._getConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._getConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "isTracked", + "func_name": "_getConfigOptions", "line_range": [ - 342, - 344 + 782, + 920 ], "class_name": "AnalyzerService" }, - "description": "determine if file is tracked" + "description": "build configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getUserFiles", - "name": "AnalyzerService.getUserFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getUserFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._getExtendedConfigurations", + "name": "AnalyzerService._getExtendedConfigurations", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._getExtendedConfigurations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getUserFiles", + "func_name": "_getExtendedConfigurations", "line_range": [ - 346, - 348 + 1239, + 1311 ], "class_name": "AnalyzerService" }, - "description": "list user file uris" + "description": "load inherited configurations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getOpenFiles", - "name": "AnalyzerService.getOpenFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getOpenFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._parseJsonConfigFile", + "name": "AnalyzerService._parseJsonConfigFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._parseJsonConfigFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getOpenFiles", + "func_name": "_parseJsonConfigFile", "line_range": [ - 350, - 352 + 1313, + 1323 ], "class_name": "AnalyzerService" }, - "description": "list open file uris" + "description": "parse project configuration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getOwnedFiles", - "name": "AnalyzerService.getOwnedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getOwnedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._parsePyprojectTomlFile", + "name": "AnalyzerService._parsePyprojectTomlFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._parsePyprojectTomlFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getOwnedFiles", + "func_name": "_parsePyprojectTomlFile", "line_range": [ - 354, - 356 + 1325, + 1342 ], "class_name": "AnalyzerService" }, - "description": "list owned file uris" + "description": "parse project configuration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setFileOpened", - "name": "AnalyzerService.setFileOpened", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setFileOpened", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._reloadConfigFile", + "name": "AnalyzerService._reloadConfigFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._reloadConfigFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "setFileOpened", + "func_name": "_reloadConfigFile", "line_range": [ - 358, - 370 + 1930, + 1945 ], "class_name": "AnalyzerService" }, - "description": "register opened file with contents; schedule reanalysis for opened file" + "description": "reload configuration file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getChainedUri", - "name": "AnalyzerService.getChainedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getChainedUri", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._removeConfigFileWatcher", + "name": "AnalyzerService._removeConfigFileWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._removeConfigFileWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getChainedUri", + "func_name": "_removeConfigFileWatcher", "line_range": [ - 372, - 374 + 1868, + 1873 ], "class_name": "AnalyzerService" }, - "description": "retrieve chained source file uri" + "description": "remove configuration file watcher" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.updateChainedUri", - "name": "AnalyzerService.updateChainedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.updateChainedUri", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._removeLibraryFileWatcher", + "name": "AnalyzerService._removeLibraryFileWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._removeLibraryFileWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "updateChainedUri", + "func_name": "_removeLibraryFileWatcher", "line_range": [ - 376, - 379 + 1700, + 1705 ], "class_name": "AnalyzerService" }, - "description": "update chained source file uri; schedule reanalysis after update" + "description": "remove library file watcher" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.updateOpenFileContents", - "name": "AnalyzerService.updateOpenFileContents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.updateOpenFileContents", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._removeSourceFileWatchers", + "name": "AnalyzerService._removeSourceFileWatchers", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._removeSourceFileWatchers", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "updateOpenFileContents", + "func_name": "_removeSourceFileWatchers", "line_range": [ - 381, - 394 + 1477, + 1482 ], "class_name": "AnalyzerService" }, - "description": "update open file contents; schedule reanalysis after edit" + "description": "remove source file watchers" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setFileClosed", - "name": "AnalyzerService.setFileClosed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setFileClosed", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._reportConfigParseError", + "name": "AnalyzerService._reportConfigParseError", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._reportConfigParseError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "setFileClosed", + "func_name": "_reportConfigParseError", "line_range": [ - 396, - 399 + 1954, + 1967 ], "class_name": "AnalyzerService" }, - "description": "close opened file and clear state; schedule reanalysis after close" + "description": "report configuration parse error" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.addInterimFile", - "name": "AnalyzerService.addInterimFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.addInterimFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._scheduleLibraryAnalysis", + "name": "AnalyzerService._scheduleLibraryAnalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._scheduleLibraryAnalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "addInterimFile", + "func_name": "_scheduleLibraryAnalysis", "line_range": [ - 401, - 403 + 1814, + 1866 ], "class_name": "AnalyzerService" }, - "description": "add interim virtual file" + "description": "schedule library analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getParserOutput", - "name": "AnalyzerService.getParserOutput", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getParserOutput", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._scheduleReloadConfigFile", + "name": "AnalyzerService._scheduleReloadConfigFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._scheduleReloadConfigFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getParserOutput", + "func_name": "_scheduleReloadConfigFile", "line_range": [ - 405, - 407 + 1917, + 1928 ], "class_name": "AnalyzerService" }, - "description": "retrieve parser output for file" + "description": "schedule configuration reload" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getParseResults", - "name": "AnalyzerService.getParseResults", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getParseResults", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._shouldHandleLibraryFileWatchChanges", + "name": "AnalyzerService._shouldHandleLibraryFileWatchChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._shouldHandleLibraryFileWatchChanges", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getParseResults", + "func_name": "_shouldHandleLibraryFileWatchChanges", "line_range": [ - 409, - 411 + 1772, + 1802 ], "class_name": "AnalyzerService" }, - "description": "retrieve parse results for file" + "description": "filter library file changes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getSourceFile", - "name": "AnalyzerService.getSourceFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getSourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._shouldHandleSourceFileWatchChanges", + "name": "AnalyzerService._shouldHandleSourceFileWatchChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._shouldHandleSourceFileWatchChanges", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getSourceFile", + "func_name": "_shouldHandleSourceFileWatchChanges", "line_range": [ - 413, - 415 + 1612, + 1698 ], "class_name": "AnalyzerService" }, - "description": "get source file object" + "description": "filter source file changes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getTextOnRange", - "name": "AnalyzerService.getTextOnRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getTextOnRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateConfigFileWatcher", + "name": "AnalyzerService._updateConfigFileWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateConfigFileWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getTextOnRange", + "func_name": "_updateConfigFileWatcher", "line_range": [ - 417, - 419 + 1875, + 1908 ], "class_name": "AnalyzerService" }, - "description": "extract text for given range" + "description": "update configuration file watcher" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.run", - "name": "AnalyzerService.run", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.run", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateLibraryFileWatcher", + "name": "AnalyzerService._updateLibraryFileWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateLibraryFileWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "run", + "func_name": "_updateLibraryFileWatcher", "line_range": [ - 421, - 423 + 1707, + 1770 ], "class_name": "AnalyzerService" }, - "description": "trigger immediate analysis execution" + "description": "update library file watcher" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.printStats", - "name": "AnalyzerService.printStats", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.printStats", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateSourceFileWatchers", + "name": "AnalyzerService._updateSourceFileWatchers", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateSourceFileWatchers", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "printStats", + "func_name": "_updateSourceFileWatchers", "line_range": [ - 425, - 434 + 1484, + 1610 ], "class_name": "AnalyzerService" }, - "description": "print analysis statistics to console" + "description": "update source file watchers" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.printDetailedAnalysisTimes", - "name": "AnalyzerService.printDetailedAnalysisTimes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.printDetailedAnalysisTimes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateTrackedFileList", + "name": "AnalyzerService._updateTrackedFileList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateTrackedFileList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "printDetailedAnalysisTimes", + "func_name": "_updateTrackedFileList", "line_range": [ - 436, - 438 + 1393, + 1475 ], "class_name": "AnalyzerService" }, - "description": "print detailed analysis timings" + "description": "update tracked files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.printDependencies", - "name": "AnalyzerService.printDependencies", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.printDependencies", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.addInterimFile", + "name": "AnalyzerService.addInterimFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.addInterimFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "printDependencies", + "func_name": "addInterimFile", "line_range": [ - 440, - 442 + 407, + 409 ], "class_name": "AnalyzerService" }, - "description": "print dependency information" + "description": "add interim file" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.analyzeFile", @@ -18006,12 +18035,12 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", "func_name": "analyzeFile", "line_range": [ - 444, - 446 + 450, + 452 ], "class_name": "AnalyzerService" }, - "description": "analyze file for diagnostics" + "description": "analyze source file" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.analyzeFileAndGetDiagnostics", @@ -18022,668 +18051,699 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", "func_name": "analyzeFileAndGetDiagnostics", "line_range": [ - 448, - 450 + 454, + 456 ], "class_name": "AnalyzerService" }, - "description": "analyze file and return diagnostics" + "description": "analyze file diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getDiagnosticsForRange", - "name": "AnalyzerService.getDiagnosticsForRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getDiagnosticsForRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.applyConfigOptions", + "name": "AnalyzerService.applyConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.applyConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getDiagnosticsForRange", + "func_name": "applyConfigOptions", "line_range": [ - 452, - 454 + 685, + 731 ], "class_name": "AnalyzerService" }, - "description": "get diagnostics for range" + "description": "apply configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getConfigOptions", - "name": "AnalyzerService.getConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.clone", + "name": "AnalyzerService.clone", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.clone", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getConfigOptions", + "func_name": "clone", "line_range": [ - 456, - 458 + 240, + 274 ], "class_name": "AnalyzerService" }, - "description": "retrieve current configuration options" + "description": "clone analysis service; preserve open files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getImportResolver", - "name": "AnalyzerService.getImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.createImportResolver", + "name": "AnalyzerService.createImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.createImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getImportResolver", + "func_name": "createImportResolver", "line_range": [ - 460, - 462 + 323, + 325 ], "class_name": "AnalyzerService" }, - "description": "get import resolver instance" + "description": "create import resolver" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.recordUserInteractionTime", - "name": "AnalyzerService.recordUserInteractionTime", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.recordUserInteractionTime", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.dispose", + "name": "AnalyzerService.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.dispose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "recordUserInteractionTime", + "func_name": "dispose", "line_range": [ - 464, - 472 + 307, + 321 ], "class_name": "AnalyzerService" }, - "description": "record last user interaction time" + "description": "release analysis resources" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_getConfigOptions", - "name": "AnalyzerService.test_getConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_getConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.enumerateSourceFiles", + "name": "AnalyzerService.enumerateSourceFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.enumerateSourceFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "test_getConfigOptions", + "func_name": "enumerateSourceFiles", "line_range": [ - 474, - 476 + 558, + 610 ], "class_name": "AnalyzerService" }, - "description": "expose config options for testing" + "description": "enumerate source files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_getFileNamesFromFileSpecs", - "name": "AnalyzerService.test_getFileNamesFromFileSpecs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_getFileNamesFromFileSpecs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getChainedUri", + "name": "AnalyzerService.getChainedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getChainedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "test_getFileNamesFromFileSpecs", + "func_name": "getChainedUri", "line_range": [ - 478, - 489 + 378, + 380 ], "class_name": "AnalyzerService" }, - "description": "derive file names from specs" + "description": "return chained file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_shouldHandleSourceFileWatchChanges", - "name": "AnalyzerService.test_shouldHandleSourceFileWatchChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_shouldHandleSourceFileWatchChanges", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getConfigOptions", + "name": "AnalyzerService.getConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "test_shouldHandleSourceFileWatchChanges", + "func_name": "getConfigOptions", "line_range": [ - 491, - 493 + 462, + 464 ], "class_name": "AnalyzerService" }, - "description": "evaluate source file watch handling" + "description": "return configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_setOnInvalidatedCallback", - "name": "AnalyzerService.test_setOnInvalidatedCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_setOnInvalidatedCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getDiagnosticsForRange", + "name": "AnalyzerService.getDiagnosticsForRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getDiagnosticsForRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "test_setOnInvalidatedCallback", + "func_name": "getDiagnosticsForRange", "line_range": [ - 495, - 497 + 458, + 460 ], "class_name": "AnalyzerService" }, - "description": "set invalidated callback for testing" + "description": "return range diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_shouldHandleLibraryFileWatchChanges", - "name": "AnalyzerService.test_shouldHandleLibraryFileWatchChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_shouldHandleLibraryFileWatchChanges", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getImportResolver", + "name": "AnalyzerService.getImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "test_shouldHandleLibraryFileWatchChanges", + "func_name": "getImportResolver", "line_range": [ - 499, - 501 + 466, + 468 ], "class_name": "AnalyzerService" }, - "description": "evaluate library file watch handling" + "description": "return import resolver" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getTypeStubTargetInfo", - "name": "AnalyzerService.getTypeStubTargetInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getTypeStubTargetInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getOpenFiles", + "name": "AnalyzerService.getOpenFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getOpenFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "getTypeStubTargetInfo", + "func_name": "getOpenFiles", "line_range": [ - 503, - 527 + 356, + 358 ], "class_name": "AnalyzerService" }, - "description": "determine type stub target info" + "description": "return open files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.invalidateAndScheduleReanalysis", - "name": "AnalyzerService.invalidateAndScheduleReanalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.invalidateAndScheduleReanalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getOwnedFiles", + "name": "AnalyzerService.getOwnedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getOwnedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "invalidateAndScheduleReanalysis", + "func_name": "getOwnedFiles", "line_range": [ - 529, - 532 + 360, + 362 ], "class_name": "AnalyzerService" }, - "description": "invalidate imports and schedule reanalysis" + "description": "return owned files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.invalidateAndForceReanalysis", - "name": "AnalyzerService.invalidateAndForceReanalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.invalidateAndForceReanalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getParseResults", + "name": "AnalyzerService.getParseResults", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getParseResults", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "invalidateAndForceReanalysis", + "func_name": "getParseResults", "line_range": [ - 534, - 540 + 415, + 417 ], "class_name": "AnalyzerService" }, - "description": "invalidate and force immediate reanalysis" + "description": "return parse results" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.restart", - "name": "AnalyzerService.restart", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.restart", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getParserOutput", + "name": "AnalyzerService.getParserOutput", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getParserOutput", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "restart", + "func_name": "getParserOutput", "line_range": [ - 544, - 548 + 411, + 413 ], "class_name": "AnalyzerService" }, - "description": "restart analyzer service state" + "description": "return parser output" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.enumerateSourceFiles", - "name": "AnalyzerService.enumerateSourceFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.enumerateSourceFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getSourceFile", + "name": "AnalyzerService.getSourceFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "enumerateSourceFiles", + "func_name": "getSourceFile", "line_range": [ - 552, - 604 + 419, + 421 ], "class_name": "AnalyzerService" }, - "description": "enumerate source files and metadata; invoke callback for each file" + "description": "return source file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.runAnalysis", - "name": "AnalyzerService.runAnalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.runAnalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getTextOnRange", + "name": "AnalyzerService.getTextOnRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getTextOnRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "runAnalysis", + "func_name": "getTextOnRange", "line_range": [ - 606, - 619 + 423, + 425 ], "class_name": "AnalyzerService" }, - "description": "run background analysis pass; update diagnostics and analysis state" + "description": "return text range contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.scheduleReanalysis", - "name": "AnalyzerService.scheduleReanalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.scheduleReanalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getTypeStubTargetInfo", + "name": "AnalyzerService.getTypeStubTargetInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getTypeStubTargetInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "scheduleReanalysis", + "func_name": "getTypeStubTargetInfo", "line_range": [ - 621, - 677 + 509, + 533 ], "class_name": "AnalyzerService" }, - "description": "schedule program reanalysis with delay; debounce repeated reanalysis requests" + "description": "return stub target information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.applyConfigOptions", - "name": "AnalyzerService.applyConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.applyConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.getUserFiles", + "name": "AnalyzerService.getUserFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.getUserFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "applyConfigOptions", + "func_name": "getUserFiles", "line_range": [ - 679, - 725 + 352, + 354 ], "class_name": "AnalyzerService" }, - "description": "apply configuration options to program; update watchers and execution root" + "description": "return user files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._getConfigOptions", - "name": "AnalyzerService._getConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._getConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.hasSourceFile", + "name": "AnalyzerService.hasSourceFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.hasSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_getConfigOptions", + "func_name": "hasSourceFile", "line_range": [ - 776, - 914 + 344, + 346 ], "class_name": "AnalyzerService" }, - "description": "compute effective configuration options" + "description": "check source file membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._ensureDefaultOptions", - "name": "AnalyzerService._ensureDefaultOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._ensureDefaultOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.invalidateAndForceReanalysis", + "name": "AnalyzerService.invalidateAndForceReanalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.invalidateAndForceReanalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_ensureDefaultOptions", + "func_name": "invalidateAndForceReanalysis", "line_range": [ - 916, - 1057 + 540, + 546 ], "class_name": "AnalyzerService" }, - "description": "ensure default analyzer option values" + "description": "invalidate analysis state; force source reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._applyLanguageServerOptions", - "name": "AnalyzerService._applyLanguageServerOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._applyLanguageServerOptions", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.invalidateAndScheduleReanalysis", + "name": "AnalyzerService.invalidateAndScheduleReanalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.invalidateAndScheduleReanalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_applyLanguageServerOptions", + "func_name": "invalidateAndScheduleReanalysis", "line_range": [ - 1059, - 1096 + 535, + 538 ], "class_name": "AnalyzerService" }, - "description": "apply language server configuration overrides" + "description": "invalidate analysis state; schedule source analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._applyCommandLineOverrides", - "name": "AnalyzerService._applyCommandLineOverrides", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._applyCommandLineOverrides", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.isTracked", + "name": "AnalyzerService.isTracked", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.isTracked", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_applyCommandLineOverrides", + "func_name": "isTracked", "line_range": [ - 1098, - 1210 + 348, + 350 ], "class_name": "AnalyzerService" }, - "description": "apply command line configuration overrides" + "description": "check tracked file ownership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._getExtendedConfigurations", - "name": "AnalyzerService._getExtendedConfigurations", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._getExtendedConfigurations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.printDependencies", + "name": "AnalyzerService.printDependencies", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.printDependencies", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_getExtendedConfigurations", + "func_name": "printDependencies", "line_range": [ - 1216, - 1288 + 446, + 448 ], "class_name": "AnalyzerService" }, - "description": "load and merge extended configurations" + "description": "print file dependencies" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._parseJsonConfigFile", - "name": "AnalyzerService._parseJsonConfigFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._parseJsonConfigFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.printDetailedAnalysisTimes", + "name": "AnalyzerService.printDetailedAnalysisTimes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.printDetailedAnalysisTimes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_parseJsonConfigFile", + "func_name": "printDetailedAnalysisTimes", "line_range": [ - 1290, - 1300 + 442, + 444 ], "class_name": "AnalyzerService" }, - "description": "parse json configuration file" + "description": "print analysis timing details" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._parsePyprojectTomlFile", - "name": "AnalyzerService._parsePyprojectTomlFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._parsePyprojectTomlFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.printStats", + "name": "AnalyzerService.printStats", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.printStats", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_parsePyprojectTomlFile", + "func_name": "printStats", "line_range": [ - 1302, - 1319 + 431, + 440 ], "class_name": "AnalyzerService" }, - "description": "parse pyproject toml configuration" + "description": "print analysis statistics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._attemptParseFile", - "name": "AnalyzerService._attemptParseFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._attemptParseFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.recordUserInteractionTime", + "name": "AnalyzerService.recordUserInteractionTime", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.recordUserInteractionTime", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_attemptParseFile", + "func_name": "recordUserInteractionTime", "line_range": [ - 1321, - 1363 + 470, + 478 ], "class_name": "AnalyzerService" }, - "description": "attempt parsing of configuration file" + "description": "record user activity time" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateTrackedFileList", - "name": "AnalyzerService._updateTrackedFileList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateTrackedFileList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.restart", + "name": "AnalyzerService.restart", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.restart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_updateTrackedFileList", + "func_name": "restart", "line_range": [ - 1370, - 1452 + 550, + 554 ], "class_name": "AnalyzerService" }, - "description": "update tracked file list from specs; apply include and exclude filters" + "description": "restart analysis service" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._removeSourceFileWatchers", - "name": "AnalyzerService._removeSourceFileWatchers", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._removeSourceFileWatchers", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.run", + "name": "AnalyzerService.run", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.run", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_removeSourceFileWatchers", + "func_name": "run", "line_range": [ - 1454, - 1459 + 427, + 429 ], "class_name": "AnalyzerService" }, - "description": "remove all source file watchers" + "description": "run program action" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateSourceFileWatchers", - "name": "AnalyzerService._updateSourceFileWatchers", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateSourceFileWatchers", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.runAnalysis", + "name": "AnalyzerService.runAnalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.runAnalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_updateSourceFileWatchers", + "func_name": "runAnalysis", "line_range": [ - 1461, - 1587 + 612, + 625 ], "class_name": "AnalyzerService" }, - "description": "update source file system watchers; install watchers for user files" + "description": "run pending analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._shouldHandleSourceFileWatchChanges", - "name": "AnalyzerService._shouldHandleSourceFileWatchChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._shouldHandleSourceFileWatchChanges", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.runEditMode", + "name": "AnalyzerService.runEditMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.runEditMode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_shouldHandleSourceFileWatchChanges", + "func_name": "runEditMode", "line_range": [ - 1589, - 1675 + 278, + 305 ], "class_name": "AnalyzerService" }, - "description": "determine source watch change relevance" + "description": "apply program edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._removeLibraryFileWatcher", - "name": "AnalyzerService._removeLibraryFileWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._removeLibraryFileWatcher", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.scheduleReanalysis", + "name": "AnalyzerService.scheduleReanalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.scheduleReanalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_removeLibraryFileWatcher", + "func_name": "scheduleReanalysis", "line_range": [ - 1677, - 1682 + 627, + 683 ], "class_name": "AnalyzerService" }, - "description": "remove library file watcher" + "description": "schedule source analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateLibraryFileWatcher", - "name": "AnalyzerService._updateLibraryFileWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateLibraryFileWatcher", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setCompletionCallback", + "name": "AnalyzerService.setCompletionCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setCompletionCallback", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_updateLibraryFileWatcher", + "func_name": "setCompletionCallback", "line_range": [ - 1684, - 1747 + 327, + 330 ], "class_name": "AnalyzerService" }, - "description": "update library file watchers; compute library watch paths" + "description": "set analysis completion callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._shouldHandleLibraryFileWatchChanges", - "name": "AnalyzerService._shouldHandleLibraryFileWatchChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._shouldHandleLibraryFileWatchChanges", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setFileClosed", + "name": "AnalyzerService.setFileClosed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setFileClosed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_shouldHandleLibraryFileWatchChanges", + "func_name": "setFileClosed", "line_range": [ - 1749, - 1779 + 402, + 405 ], "class_name": "AnalyzerService" }, - "description": "determine library watch change relevance" + "description": "mark file closed" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._clearLibraryReanalysisTimer", - "name": "AnalyzerService._clearLibraryReanalysisTimer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._clearLibraryReanalysisTimer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setFileOpened", + "name": "AnalyzerService.setFileOpened", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setFileOpened", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_clearLibraryReanalysisTimer", + "func_name": "setFileOpened", "line_range": [ - 1781, - 1789 + 364, + 376 ], "class_name": "AnalyzerService" }, - "description": "clear library reanalysis timer" + "description": "mark file opened" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._scheduleLibraryAnalysis", - "name": "AnalyzerService._scheduleLibraryAnalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._scheduleLibraryAnalysis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setOptions", + "name": "AnalyzerService.setOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_scheduleLibraryAnalysis", + "func_name": "setOptions", "line_range": [ - 1791, - 1843 + 332, + 342 ], "class_name": "AnalyzerService" }, - "description": "aggregate library changes and debounce; trigger library reanalysis after delay" + "description": "apply service options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._removeConfigFileWatcher", - "name": "AnalyzerService._removeConfigFileWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._removeConfigFileWatcher", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.setServiceName", + "name": "AnalyzerService.setServiceName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.setServiceName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_removeConfigFileWatcher", + "func_name": "setServiceName", "line_range": [ - 1845, - 1850 + 236, + 238 ], "class_name": "AnalyzerService" }, - "description": "remove configuration file watcher" + "description": "set service name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._updateConfigFileWatcher", - "name": "AnalyzerService._updateConfigFileWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._updateConfigFileWatcher", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_getConfigOptions", + "name": "AnalyzerService.test_getConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_getConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_updateConfigFileWatcher", + "func_name": "test_getConfigOptions", "line_range": [ - 1852, - 1885 + 480, + 482 ], "class_name": "AnalyzerService" }, - "description": "update configuration file watchers; watch execution root for config files" + "description": "expose configuration options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._clearReloadConfigTimer", - "name": "AnalyzerService._clearReloadConfigTimer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._clearReloadConfigTimer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_getFileNamesFromFileSpecs", + "name": "AnalyzerService.test_getFileNamesFromFileSpecs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_getFileNamesFromFileSpecs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_clearReloadConfigTimer", + "func_name": "test_getFileNamesFromFileSpecs", "line_range": [ - 1887, - 1892 + 484, + 495 ], "class_name": "AnalyzerService" }, - "description": "clear reload configuration timer" + "description": "expose matched file names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._scheduleReloadConfigFile", - "name": "AnalyzerService._scheduleReloadConfigFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._scheduleReloadConfigFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_setOnInvalidatedCallback", + "name": "AnalyzerService.test_setOnInvalidatedCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_setOnInvalidatedCallback", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_scheduleReloadConfigFile", + "func_name": "test_setOnInvalidatedCallback", "line_range": [ - 1894, - 1905 + 501, + 503 ], "class_name": "AnalyzerService" }, - "description": "schedule configuration file reload" + "description": "set invalidation test callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._reloadConfigFile", - "name": "AnalyzerService._reloadConfigFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._reloadConfigFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_shouldHandleLibraryFileWatchChanges", + "name": "AnalyzerService.test_shouldHandleLibraryFileWatchChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_shouldHandleLibraryFileWatchChanges", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_reloadConfigFile", + "func_name": "test_shouldHandleLibraryFileWatchChanges", "line_range": [ - 1907, - 1922 + 505, + 507 ], "class_name": "AnalyzerService" }, - "description": "reload configuration file and apply" + "description": "expose library change filtering" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._clearReanalysisTimer", - "name": "AnalyzerService._clearReanalysisTimer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._clearReanalysisTimer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.test_shouldHandleSourceFileWatchChanges", + "name": "AnalyzerService.test_shouldHandleSourceFileWatchChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.test_shouldHandleSourceFileWatchChanges", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_clearReanalysisTimer", + "func_name": "test_shouldHandleSourceFileWatchChanges", "line_range": [ - 1924, - 1929 + 497, + 499 ], "class_name": "AnalyzerService" }, - "description": "clear scheduled reanalysis timer" + "description": "expose source change filtering" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService._reportConfigParseError", - "name": "AnalyzerService._reportConfigParseError", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService._reportConfigParseError", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.updateChainedUri", + "name": "AnalyzerService.updateChainedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.updateChainedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", - "func_name": "_reportConfigParseError", + "func_name": "updateChainedUri", "line_range": [ - 1931, - 1944 + 382, + 385 ], "class_name": "AnalyzerService" }, - "description": "report configuration parse error" + "description": "update chained file uri" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::AnalyzerService.updateOpenFileContents", + "name": "AnalyzerService.updateOpenFileContents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/AnalyzerService.updateOpenFileContents", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", + "func_name": "updateOpenFileContents", + "line_range": [ + 387, + 400 + ], + "class_name": "AnalyzerService" + }, + "description": "update open file contents" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts::getNextServiceId", + "name": "getNextServiceId", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/service.ts/getNextServiceId", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/service.ts", + "func_name": "getNextServiceId", + "line_range": [ + 120, + 122 + ] + }, + "description": "generate service identifier" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::__file__", @@ -18701,64 +18761,64 @@ "description": "Helpers to locate pyproject.toml and project config files starting from a given Uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findPyprojectTomlFileHereOrUp", - "name": "findPyprojectTomlFileHereOrUp", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findPyprojectTomlFileHereOrUp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findConfigFile", + "name": "findConfigFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findConfigFile", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts", - "func_name": "findPyprojectTomlFileHereOrUp", + "func_name": "findConfigFile", "line_range": [ - 6, - 8 + 22, + 29 ] }, - "description": "find pyproject toml file; search ancestor directories" + "description": "find config file in directory; return canonical file path if found" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findPyprojectTomlFile", - "name": "findPyprojectTomlFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findPyprojectTomlFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findConfigFileHereOrUp", + "name": "findConfigFileHereOrUp", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findConfigFileHereOrUp", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts", - "func_name": "findPyprojectTomlFile", + "func_name": "findConfigFileHereOrUp", "line_range": [ - 10, - 16 + 18, + 20 ] }, - "description": "find pyproject toml file in directory; return canonical file path if found" + "description": "find config file; search ancestor directories" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findConfigFileHereOrUp", - "name": "findConfigFileHereOrUp", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findConfigFileHereOrUp", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findPyprojectTomlFile", + "name": "findPyprojectTomlFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findPyprojectTomlFile", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts", - "func_name": "findConfigFileHereOrUp", + "func_name": "findPyprojectTomlFile", "line_range": [ - 18, - 20 + 10, + 16 ] }, - "description": "find config file; search ancestor directories" + "description": "find pyproject toml file in directory; return canonical file path if found" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findConfigFile", - "name": "findConfigFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findConfigFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts::findPyprojectTomlFileHereOrUp", + "name": "findPyprojectTomlFileHereOrUp", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/serviceUtils.ts/findPyprojectTomlFileHereOrUp", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts", - "func_name": "findConfigFile", + "func_name": "findPyprojectTomlFileHereOrUp", "line_range": [ - 22, - 29 + 6, + 8 ] }, - "description": "find config file in directory; return canonical file path if found" + "description": "find pyproject toml file; search ancestor directories" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::__file__", @@ -18770,10 +18830,10 @@ "func_name": "sourceEnumerator", "line_range": [ 1, - 234 + 243 ] }, - "description": "Enumerates Python source files with include/exclude rules, tracking symlinked directories and auto-excluding virtualenvs" + "description": "Enumerates project Python source files and reports matches, auto-excluded venvs, completion, and symlink roots" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator", @@ -18785,58 +18845,10 @@ "func_name": "SourceEnumerator", "line_range": [ 29, - 233 + 242 ] }, - "description": "initialize enumeration state; queue include roots for exploration; log enumeration start" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator.getSymlinkedDirectoryRoots", - "name": "SourceEnumerator.getSymlinkedDirectoryRoots", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/sourceEnumerator.ts/SourceEnumerator.getSymlinkedDirectoryRoots", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", - "func_name": "getSymlinkedDirectoryRoots", - "line_range": [ - 56, - 58 - ], - "class_name": "SourceEnumerator" - }, - "description": "return symlinked directory roots" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator.enumerate", - "name": "SourceEnumerator.enumerate", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/sourceEnumerator.ts/SourceEnumerator.enumerate", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", - "func_name": "enumerate", - "line_range": [ - 62, - 111 - ], - "class_name": "SourceEnumerator" - }, - "description": "enumerate source files with timeout; accumulate matches and metadata; log long running enumeration warnings" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator._recordSymlinkedDirectoryRoot", - "name": "SourceEnumerator._recordSymlinkedDirectoryRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/sourceEnumerator.ts/SourceEnumerator._recordSymlinkedDirectoryRoot", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", - "func_name": "_recordSymlinkedDirectoryRoot", - "line_range": [ - 113, - 127 - ], - "class_name": "SourceEnumerator" - }, - "description": "record symlinked directory root; remove contained symlinked roots" + "description": "initialize source enumeration; announce source search" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator._doNext", @@ -18852,7 +18864,7 @@ ], "class_name": "SourceEnumerator" }, - "description": "process next enumeration action; determine enumeration completion status" + "description": "advance enumeration queue; select next exploration target" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator._exploreDir", @@ -18868,7 +18880,7 @@ ], "class_name": "SourceEnumerator" }, - "description": "skip broken symlinked directory; record discovered symlinked roots; skip recursive symlink directories; auto exclude virtualenv directories; collect matching source files; enqueue matching subdirectories for exploration" + "description": "visit source directory; skip inaccessible directories; detect recursive symlinks; exclude virtual environments; collect matching source files; queue matching subdirectories; track symlinked directory roots" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator._exploreInclude", @@ -18880,11 +18892,11 @@ "func_name": "_exploreInclude", "line_range": [ 200, - 221 + 230 ], "class_name": "SourceEnumerator" }, - "description": "skip includes inside exclude paths; reset seen directory cache; add file include to matches; enqueue include directory for exploration; report missing include path error" + "description": "validate include root; skip unsupported workspaces; queue include directory; collect included file; report missing include root" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator._finish", @@ -18895,361 +18907,362 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", "func_name": "_finish", "line_range": [ - 223, - 232 + 232, + 241 ], "class_name": "SourceEnumerator" }, - "description": "mark enumeration complete; log source file count" + "description": "mark enumeration complete; report source file count" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::__file__", - "name": "sourceFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator._recordSymlinkedDirectoryRoot", + "name": "SourceEnumerator._recordSymlinkedDirectoryRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/sourceEnumerator.ts/SourceEnumerator._recordSymlinkedDirectoryRoot", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "sourceFile", + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", + "func_name": "_recordSymlinkedDirectoryRoot", "line_range": [ - 1, - 1598 - ] + 113, + 127 + ], + "class_name": "SourceEnumerator" }, - "description": "Represents a single Python source or stub file and manages its parsing, analysis, and diagnostics" + "description": "track symlinked directory root; deduplicate nested symlink roots" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::WriteableData", - "name": "WriteableData", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/WriteableData", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "WriteableData", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator.enumerate", + "name": "SourceEnumerator.enumerate", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/sourceEnumerator.ts/SourceEnumerator.enumerate", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", + "func_name": "enumerate", "line_range": [ - 82, - 198 - ] + 62, + 111 + ], + "class_name": "SourceEnumerator" }, - "description": "initialize writable data defaults; initialize diagnostic collections; initialize analysis state flags" + "description": "collect matching source files; enforce enumeration time limit; report prolonged enumeration; return enumeration result" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::WriteableData.debugPrint", - "name": "WriteableData.debugPrint", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/WriteableData.debugPrint", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts::SourceEnumerator.getSymlinkedDirectoryRoots", + "name": "SourceEnumerator.getSymlinkedDirectoryRoots", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/sourceEnumerator.ts/SourceEnumerator.getSymlinkedDirectoryRoots", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "debugPrint", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts", + "func_name": "getSymlinkedDirectoryRoots", "line_range": [ - 165, - 197 + 56, + 58 ], - "class_name": "WriteableData" + "class_name": "SourceEnumerator" }, - "description": "format diagnostics and metadata; report binding and checking status; report file content versions; report client document metadata; report import and dependency summary; report parser and tokenizer summary; report ignore comment settings; report timing and performance metrics" + "description": "return symlinked directory roots" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile", - "name": "SourceFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::__file__", + "name": "sourceFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts", "meta": { - "type": "class", + "type": "file", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "SourceFile", + "func_name": "sourceFile", "line_range": [ - 204, - 1597 + 1, + 1608 ] }, - "description": "initialize source file state" + "description": "Represents and manages parsing, binding, checking, diagnostics, and lifecycle for a Python source or stub file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setInitialDiagnosticRuleSet", - "name": "SourceFile.setInitialDiagnosticRuleSet", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setInitialDiagnosticRuleSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile", + "name": "SourceFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "setInitialDiagnosticRuleSet", + "func_name": "SourceFile", "line_range": [ - 326, - 328 - ], - "class_name": "SourceFile" + 205, + 1607 + ] }, - "description": "set initial diagnostic rule set" + "description": "initialize source file state; classify source file type; configure analysis context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getIPythonMode", - "name": "SourceFile.getIPythonMode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getIPythonMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._addTaskListDiagnostics", + "name": "SourceFile._addTaskListDiagnostics", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._addTaskListDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getIPythonMode", + "func_name": "_addTaskListDiagnostics", "line_range": [ - 330, - 332 + 1340, + 1424 ], "class_name": "SourceFile" }, - "description": "get ipython mode" + "description": "detect task comments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getUri", - "name": "SourceFile.getUri", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getUri", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._buildFileInfo", + "name": "SourceFile._buildFileInfo", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._buildFileInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getUri", + "func_name": "_buildFileInfo", "line_range": [ - 334, - 336 + 1426, + 1458 ], "class_name": "SourceFile" }, - "description": "get file uri" + "description": "build analysis context" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getModuleName", - "name": "SourceFile.getModuleName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._cachePreEditState", + "name": "SourceFile._cachePreEditState", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._cachePreEditState", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getModuleName", + "func_name": "_cachePreEditState", "line_range": [ - 338, - 346 + 1325, + 1336 ], "class_name": "SourceFile" }, - "description": "get module name" + "description": "cache preedit state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.clearCachedModuleName", - "name": "SourceFile.clearCachedModuleName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.clearCachedModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._cleanParseTreeIfRequired", + "name": "SourceFile._cleanParseTreeIfRequired", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._cleanParseTreeIfRequired", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "clearCachedModuleName", + "func_name": "_cleanParseTreeIfRequired", "line_range": [ - 348, - 350 + 1460, + 1468 ], "class_name": "SourceFile" }, - "description": "clear cached module name" + "description": "clean parse tree" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnosticVersion", - "name": "SourceFile.getDiagnosticVersion", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getDiagnosticVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._fireFileDirtyEvent", + "name": "SourceFile._fireFileDirtyEvent", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._fireFileDirtyEvent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getDiagnosticVersion", + "func_name": "_fireFileDirtyEvent", "line_range": [ - 352, - 354 + 1595, + 1606 ], "class_name": "SourceFile" }, - "description": "get diagnostic version" + "description": "notify file mutation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getParseDiagnostics", - "name": "SourceFile.getParseDiagnostics", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getParseDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._getPathForLogging", + "name": "SourceFile._getPathForLogging", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._getPathForLogging", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getParseDiagnostics", + "func_name": "_getPathForLogging", "line_range": [ - 356, - 358 + 1546, + 1548 ], "class_name": "SourceFile" }, - "description": "get parse diagnostics" + "description": "format path for logging" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isStubFile", - "name": "SourceFile.isStubFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isStubFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._makeFileId", + "name": "SourceFile._makeFileId", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._makeFileId", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isStubFile", + "func_name": "_makeFileId", "line_range": [ - 360, - 362 + 1044, + 1059 ], "class_name": "SourceFile" }, - "description": "determine stub file status" + "description": "create file identifier" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isTypingStubFile", - "name": "SourceFile.isTypingStubFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isTypingStubFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._parseFile", + "name": "SourceFile._parseFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._parseFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isTypingStubFile", + "func_name": "_parseFile", "line_range": [ - 364, - 366 + 1550, + 1572 ], "class_name": "SourceFile" }, - "description": "determine typing stub status" + "description": "parse source file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isTypeshedStubFile", - "name": "SourceFile.isTypeshedStubFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isTypeshedStubFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._recomputeDiagnostics", + "name": "SourceFile._recomputeDiagnostics", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._recomputeDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isTypeshedStubFile", + "func_name": "_recomputeDiagnostics", "line_range": [ - 368, - 370 + 1063, + 1323 ], "class_name": "SourceFile" }, - "description": "determine typeshed stub status" + "description": "recompute diagnostic results; apply diagnostic filtering" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isBuiltInStubFile", - "name": "SourceFile.isBuiltInStubFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isBuiltInStubFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._resolveImports", + "name": "SourceFile._resolveImports", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._resolveImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isBuiltInStubFile", + "func_name": "_resolveImports", "line_range": [ - 372, - 374 + 1470, + 1544 ], "class_name": "SourceFile" }, - "description": "determine built in stub status" + "description": "resolve module imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isThirdPartyPyTypedPresent", - "name": "SourceFile.isThirdPartyPyTypedPresent", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isThirdPartyPyTypedPresent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._tokenizeContents", + "name": "SourceFile._tokenizeContents", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._tokenizeContents", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isThirdPartyPyTypedPresent", + "func_name": "_tokenizeContents", "line_range": [ - 376, - 378 + 1574, + 1593 ], "class_name": "SourceFile" }, - "description": "determine third party pytyped presence" + "description": "tokenize source contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnostics", - "name": "SourceFile.getDiagnostics", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.addCircularDependency", + "name": "SourceFile.addCircularDependency", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.addCircularDependency", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getDiagnostics", + "func_name": "addCircularDependency", "line_range": [ - 383, - 389 + 676, + 690 ], "class_name": "SourceFile" }, - "description": "return cached diagnostics conditionally" + "description": "record circular dependency" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getImports", - "name": "SourceFile.getImports", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.bind", + "name": "SourceFile.bind", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.bind", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getImports", + "func_name": "bind", "line_range": [ - 391, - 393 + 881, + 952 ], "class_name": "SourceFile" }, - "description": "get resolved imports list" + "description": "bind source symbols; update symbol state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getBuiltinsImport", - "name": "SourceFile.getBuiltinsImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getBuiltinsImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.check", + "name": "SourceFile.check", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.check", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getBuiltinsImport", + "func_name": "check", "line_range": [ - 395, - 397 + 954, + 1026 ], "class_name": "SourceFile" }, - "description": "get builtins import result" + "description": "check source semantics; produce analysis diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getModuleSymbolTable", - "name": "SourceFile.getModuleSymbolTable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getModuleSymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.clearCachedModuleName", + "name": "SourceFile.clearCachedModuleName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.clearCachedModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getModuleSymbolTable", + "func_name": "clearCachedModuleName", "line_range": [ - 399, - 401 + 349, + 351 ], "class_name": "SourceFile" }, - "description": "get module symbol table" + "description": "reset module name cache" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getCheckTime", - "name": "SourceFile.getCheckTime", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getCheckTime", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.createDiagnosticSink", + "name": "SourceFile.createDiagnosticSink", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.createDiagnosticSink", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getCheckTime", + "func_name": "createDiagnosticSink", "line_range": [ - 403, - 405 + 1032, + 1034 ], "class_name": "SourceFile" }, - "description": "get check time" + "description": "create diagnostic collector" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.restore", - "name": "SourceFile.restore", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.restore", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.createTextRangeDiagnosticSink", + "name": "SourceFile.createTextRangeDiagnosticSink", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.createTextRangeDiagnosticSink", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "restore", + "func_name": "createTextRangeDiagnosticSink", "line_range": [ - 407, - 418 + 1036, + 1038 ], "class_name": "SourceFile" }, - "description": "restore pre edit contents" + "description": "create ranged diagnostic collector" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.didContentsChangeOnDisk", @@ -19260,8 +19273,8 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", "func_name": "didContentsChangeOnDisk", "line_range": [ - 422, - 459 + 427, + 464 ], "class_name": "SourceFile" }, @@ -19276,236 +19289,236 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", "func_name": "dropParseAndBindInfo", "line_range": [ - 464, - 480 + 469, + 485 ], "class_name": "SourceFile" }, - "description": "drop parse and bind info" + "description": "discard analysis intermediates" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.markDirty", - "name": "SourceFile.markDirty", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.markDirty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getBuiltinsImport", + "name": "SourceFile.getBuiltinsImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getBuiltinsImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "markDirty", + "func_name": "getBuiltinsImport", "line_range": [ - 482, - 492 + 400, + 402 ], "class_name": "SourceFile" }, - "description": "mark file dirty" + "description": "retrieve builtin import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.markReanalysisRequired", - "name": "SourceFile.markReanalysisRequired", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.markReanalysisRequired", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getCheckTime", + "name": "SourceFile.getCheckTime", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getCheckTime", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "markReanalysisRequired", + "func_name": "getCheckTime", "line_range": [ - 494, - 516 + 408, + 410 ], "class_name": "SourceFile" }, - "description": "mark file reanalysis required" + "description": "report analysis duration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getFileContentsVersion", - "name": "SourceFile.getFileContentsVersion", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getFileContentsVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getClientVersion", + "name": "SourceFile.getClientVersion", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getClientVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getFileContentsVersion", + "func_name": "getClientVersion", "line_range": [ - 518, - 520 + 527, + 529 ], "class_name": "SourceFile" }, - "description": "get file contents version" + "description": "report editor version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getClientVersion", - "name": "SourceFile.getClientVersion", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getClientVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnostics", + "name": "SourceFile.getDiagnostics", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getClientVersion", + "func_name": "getDiagnostics", "line_range": [ - 522, - 524 + 384, + 390 ], "class_name": "SourceFile" }, - "description": "get client version" + "description": "retrieve cached diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getSemanticVersion", - "name": "SourceFile.getSemanticVersion", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getSemanticVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnosticsWithoutFileIgnore", + "name": "SourceFile.getDiagnosticsWithoutFileIgnore", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getDiagnosticsWithoutFileIgnore", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getSemanticVersion", + "func_name": "getDiagnosticsWithoutFileIgnore", "line_range": [ - 526, - 528 + 392, + 394 ], "class_name": "SourceFile" }, - "description": "get semantic version" + "description": "retrieve unfiltered diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getRange", - "name": "SourceFile.getRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getRange", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnosticVersion", + "name": "SourceFile.getDiagnosticVersion", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getDiagnosticVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getRange", + "func_name": "getDiagnosticVersion", "line_range": [ - 530, - 532 + 353, + 355 ], "class_name": "SourceFile" }, - "description": "get file text range" + "description": "report diagnostic version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getOpenFileContents", - "name": "SourceFile.getOpenFileContents", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getOpenFileContents", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getFileContent", + "name": "SourceFile.getFileContent", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getFileContent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getOpenFileContents", + "func_name": "getFileContent", "line_range": [ - 534, - 536 + 543, + 571 ], "class_name": "SourceFile" }, - "description": "get open file contents" + "description": "load source contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getFileContent", - "name": "SourceFile.getFileContent", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getFileContent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getFileContentsVersion", + "name": "SourceFile.getFileContentsVersion", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getFileContentsVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "getFileContent", + "func_name": "getFileContentsVersion", "line_range": [ - 538, - 566 + 523, + 525 ], "class_name": "SourceFile" }, - "description": "retrieve file contents" + "description": "report content version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setClientVersion", - "name": "SourceFile.setClientVersion", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setClientVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getImports", + "name": "SourceFile.getImports", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "setClientVersion", + "func_name": "getImports", "line_range": [ - 568, - 597 + 396, + 398 ], "class_name": "SourceFile" }, - "description": "set client version" + "description": "retrieve resolved imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.prepareForClose", - "name": "SourceFile.prepareForClose", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.prepareForClose", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getIPythonMode", + "name": "SourceFile.getIPythonMode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getIPythonMode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "prepareForClose", + "func_name": "getIPythonMode", "line_range": [ - 599, - 601 + 331, + 333 ], "class_name": "SourceFile" }, - "description": "prepare file for close" + "description": "report interactive analysis mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isFileDeleted", - "name": "SourceFile.isFileDeleted", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isFileDeleted", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getModuleName", + "name": "SourceFile.getModuleName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isFileDeleted", + "func_name": "getModuleName", "line_range": [ - 603, - 605 + 339, + 347 ], "class_name": "SourceFile" }, - "description": "check file deletion status" + "description": "derive module name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isParseRequired", - "name": "SourceFile.isParseRequired", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isParseRequired", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getModuleSymbolTable", + "name": "SourceFile.getModuleSymbolTable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getModuleSymbolTable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isParseRequired", + "func_name": "getModuleSymbolTable", "line_range": [ - 607, - 612 + 404, + 406 ], "class_name": "SourceFile" }, - "description": "determine if parse required" + "description": "retrieve module symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isBindingRequired", - "name": "SourceFile.isBindingRequired", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isBindingRequired", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getOpenFileContents", + "name": "SourceFile.getOpenFileContents", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getOpenFileContents", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isBindingRequired", + "func_name": "getOpenFileContents", "line_range": [ - 614, - 624 + 539, + 541 ], "class_name": "SourceFile" }, - "description": "determine if binding required" + "description": "retrieve editor contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isCheckingRequired", - "name": "SourceFile.isCheckingRequired", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isCheckingRequired", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getParseDiagnostics", + "name": "SourceFile.getParseDiagnostics", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getParseDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isCheckingRequired", + "func_name": "getParseDiagnostics", "line_range": [ - 626, - 628 + 357, + 359 ], "class_name": "SourceFile" }, - "description": "determine if checking required" + "description": "retrieve parse diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getParseResults", @@ -19516,12 +19529,12 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", "func_name": "getParseResults", "line_range": [ - 630, - 657 + 635, + 662 ], "class_name": "SourceFile" }, - "description": "get parse results" + "description": "retrieve parse results" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getParserOutput", @@ -19532,348 +19545,411 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", "func_name": "getParserOutput", "line_range": [ - 659, - 667 + 664, + 672 ], "class_name": "SourceFile" }, - "description": "get parser output" + "description": "retrieve parser output" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.addCircularDependency", - "name": "SourceFile.addCircularDependency", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.addCircularDependency", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getRange", + "name": "SourceFile.getRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "addCircularDependency", + "func_name": "getRange", "line_range": [ - 671, - 685 + 535, + 537 ], "class_name": "SourceFile" }, - "description": "record circular dependency" + "description": "retrieve source range" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setNoCircularDependencyConfirmed", - "name": "SourceFile.setNoCircularDependencyConfirmed", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setNoCircularDependencyConfirmed", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getSemanticVersion", + "name": "SourceFile.getSemanticVersion", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getSemanticVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "setNoCircularDependencyConfirmed", + "func_name": "getSemanticVersion", "line_range": [ - 687, - 689 + 531, + 533 ], "class_name": "SourceFile" }, - "description": "confirm absence of circular dependency" + "description": "report semantic version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isNoCircularDependencyConfirmed", - "name": "SourceFile.isNoCircularDependencyConfirmed", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isNoCircularDependencyConfirmed", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getUri", + "name": "SourceFile.getUri", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.getUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "isNoCircularDependencyConfirmed", + "func_name": "getUri", "line_range": [ - 691, - 693 + 335, + 337 ], "class_name": "SourceFile" }, - "description": "check circular dependency confirmation" + "description": "identify source location" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setHitMaxImportDepth", - "name": "SourceFile.setHitMaxImportDepth", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setHitMaxImportDepth", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isBindingRequired", + "name": "SourceFile.isBindingRequired", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isBindingRequired", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "setHitMaxImportDepth", + "func_name": "isBindingRequired", "line_range": [ - 695, - 697 + 619, + 629 ], "class_name": "SourceFile" }, - "description": "record max import depth" + "description": "determine binding requirement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.parse", - "name": "SourceFile.parse", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.parse", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isBuiltInStubFile", + "name": "SourceFile.isBuiltInStubFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isBuiltInStubFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "parse", + "func_name": "isBuiltInStubFile", "line_range": [ - 702, - 874 + 373, + 375 ], "class_name": "SourceFile" }, - "description": "parse file contents" + "description": "classify builtin stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.bind", - "name": "SourceFile.bind", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.bind", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isCheckingRequired", + "name": "SourceFile.isCheckingRequired", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isCheckingRequired", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "bind", + "func_name": "isCheckingRequired", "line_range": [ - 876, - 947 + 631, + 633 ], "class_name": "SourceFile" }, - "description": "bind symbols to parse tree" + "description": "determine checking requirement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.check", - "name": "SourceFile.check", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.check", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isFileDeleted", + "name": "SourceFile.isFileDeleted", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isFileDeleted", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "check", + "func_name": "isFileDeleted", "line_range": [ - 949, - 1021 + 608, + 610 ], "class_name": "SourceFile" }, - "description": "perform semantic checks" + "description": "detect file deletion" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.test_enableIPythonMode", - "name": "SourceFile.test_enableIPythonMode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.test_enableIPythonMode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isNoCircularDependencyConfirmed", + "name": "SourceFile.isNoCircularDependencyConfirmed", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isNoCircularDependencyConfirmed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "test_enableIPythonMode", + "func_name": "isNoCircularDependencyConfirmed", "line_range": [ - 1023, - 1025 + 696, + 698 ], "class_name": "SourceFile" }, - "description": "enable ipython mode for testing" + "description": "report dependency acyclicity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.createDiagnosticSink", - "name": "SourceFile.createDiagnosticSink", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.createDiagnosticSink", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isParseRequired", + "name": "SourceFile.isParseRequired", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isParseRequired", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "createDiagnosticSink", + "func_name": "isParseRequired", "line_range": [ - 1027, - 1029 + 612, + 617 ], "class_name": "SourceFile" }, - "description": "create diagnostic sink" + "description": "determine parse requirement" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.createTextRangeDiagnosticSink", - "name": "SourceFile.createTextRangeDiagnosticSink", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.createTextRangeDiagnosticSink", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isStubFile", + "name": "SourceFile.isStubFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isStubFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "createTextRangeDiagnosticSink", + "func_name": "isStubFile", "line_range": [ - 1031, - 1033 + 361, + 363 ], "class_name": "SourceFile" }, - "description": "create text range diagnostic sink" + "description": "classify stub files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._makeFileId", - "name": "SourceFile._makeFileId", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._makeFileId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isThirdPartyPyTypedPresent", + "name": "SourceFile.isThirdPartyPyTypedPresent", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isThirdPartyPyTypedPresent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_makeFileId", + "func_name": "isThirdPartyPyTypedPresent", "line_range": [ - 1039, - 1054 + 377, + 379 ], "class_name": "SourceFile" }, - "description": "generate unique file id" + "description": "classify typed package membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._recomputeDiagnostics", - "name": "SourceFile._recomputeDiagnostics", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._recomputeDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isTypeshedStubFile", + "name": "SourceFile.isTypeshedStubFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isTypeshedStubFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_recomputeDiagnostics", + "func_name": "isTypeshedStubFile", "line_range": [ - 1058, - 1313 + 369, + 371 ], "class_name": "SourceFile" }, - "description": "recompute diagnostics for file" + "description": "classify typeshed stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._cachePreEditState", - "name": "SourceFile._cachePreEditState", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._cachePreEditState", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.isTypingStubFile", + "name": "SourceFile.isTypingStubFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.isTypingStubFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_cachePreEditState", + "func_name": "isTypingStubFile", "line_range": [ - 1315, - 1326 + 365, + 367 ], "class_name": "SourceFile" }, - "description": "cache pre edit state" + "description": "classify typing stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._addTaskListDiagnostics", - "name": "SourceFile._addTaskListDiagnostics", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._addTaskListDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.markDirty", + "name": "SourceFile.markDirty", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.markDirty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_addTaskListDiagnostics", + "func_name": "markDirty", "line_range": [ - 1330, - 1414 + 487, + 497 ], "class_name": "SourceFile" }, - "description": "add task list diagnostics" + "description": "mark analysis state dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._buildFileInfo", - "name": "SourceFile._buildFileInfo", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._buildFileInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.markReanalysisRequired", + "name": "SourceFile.markReanalysisRequired", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.markReanalysisRequired", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_buildFileInfo", + "func_name": "markReanalysisRequired", "line_range": [ - 1416, - 1448 + 499, + 521 ], "class_name": "SourceFile" }, - "description": "build analyzer file info" + "description": "require source reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._cleanParseTreeIfRequired", - "name": "SourceFile._cleanParseTreeIfRequired", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._cleanParseTreeIfRequired", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.parse", + "name": "SourceFile.parse", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.parse", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_cleanParseTreeIfRequired", + "func_name": "parse", "line_range": [ - 1450, - 1458 + 707, + 879 ], "class_name": "SourceFile" }, - "description": "clean parse tree when needed" + "description": "parse source contents; collect import references; update parse state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._resolveImports", - "name": "SourceFile._resolveImports", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._resolveImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.prepareForClose", + "name": "SourceFile.prepareForClose", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.prepareForClose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_resolveImports", + "func_name": "prepareForClose", "line_range": [ - 1460, - 1534 + 604, + 606 ], "class_name": "SourceFile" }, - "description": "resolve module imports" + "description": "prepare editor closure" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._getPathForLogging", - "name": "SourceFile._getPathForLogging", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._getPathForLogging", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.restore", + "name": "SourceFile.restore", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.restore", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_getPathForLogging", + "func_name": "restore", "line_range": [ - 1536, - 1538 + 412, + 423 ], "class_name": "SourceFile" }, - "description": "get path for logging" + "description": "restore previous edit state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._parseFile", - "name": "SourceFile._parseFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._parseFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setClientVersion", + "name": "SourceFile.setClientVersion", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setClientVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_parseFile", + "func_name": "setClientVersion", "line_range": [ - 1540, - 1562 + 573, + 602 ], "class_name": "SourceFile" }, - "description": "parse source file" + "description": "update editor contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._tokenizeContents", - "name": "SourceFile._tokenizeContents", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._tokenizeContents", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setHitMaxImportDepth", + "name": "SourceFile.setHitMaxImportDepth", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setHitMaxImportDepth", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_tokenizeContents", + "func_name": "setHitMaxImportDepth", "line_range": [ - 1564, - 1583 + 700, + 702 ], "class_name": "SourceFile" }, - "description": "tokenize file contents" + "description": "record import depth limit" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile._fireFileDirtyEvent", - "name": "SourceFile._fireFileDirtyEvent", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile._fireFileDirtyEvent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setInitialDiagnosticRuleSet", + "name": "SourceFile.setInitialDiagnosticRuleSet", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setInitialDiagnosticRuleSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", - "func_name": "_fireFileDirtyEvent", + "func_name": "setInitialDiagnosticRuleSet", + "line_range": [ + 327, + 329 + ], + "class_name": "SourceFile" + }, + "description": "set initial diagnostic rules" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.setNoCircularDependencyConfirmed", + "name": "SourceFile.setNoCircularDependencyConfirmed", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.setNoCircularDependencyConfirmed", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", + "func_name": "setNoCircularDependencyConfirmed", + "line_range": [ + 692, + 694 + ], + "class_name": "SourceFile" + }, + "description": "confirm dependency acyclicity" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.test_enableIPythonMode", + "name": "SourceFile.test_enableIPythonMode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/SourceFile.test_enableIPythonMode", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", + "func_name": "test_enableIPythonMode", "line_range": [ - 1585, - 1596 + 1028, + 1030 ], "class_name": "SourceFile" }, - "description": "notify file dirty listeners" + "description": "enable interactive analysis mode" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::WriteableData", + "name": "WriteableData", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/WriteableData", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", + "func_name": "WriteableData", + "line_range": [ + 82, + 199 + ] + }, + "description": "initialize file analysis state" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::WriteableData.debugPrint", + "name": "WriteableData.debugPrint", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFile.ts/WriteableData.debugPrint", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts", + "func_name": "debugPrint", + "line_range": [ + 166, + 198 + ], + "class_name": "WriteableData" + }, + "description": "summarize file analysis state" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::__file__", @@ -19906,84 +19982,84 @@ "description": "initialize source file info; create writable data state; record edit mode status; cache pre edit state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo.mutate", - "name": "SourceFileInfo.mutate", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo.mutate", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo._cachePreEditState", + "name": "SourceFileInfo._cachePreEditState", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo._cachePreEditState", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts", - "func_name": "mutate", + "func_name": "_cachePreEditState", "line_range": [ - 157, - 160 + 174, + 183 ], "class_name": "SourceFileInfo" }, - "description": "cache pre edit state; mutate writable data" + "description": "cache pre edit writable data; clone writable data for edits; register mutated file with tracker" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo.restore", - "name": "SourceFileInfo.restore", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo.restore", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo._cloneWriteableData", + "name": "SourceFileInfo._cloneWriteableData", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo._cloneWriteableData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts", - "func_name": "restore", + "func_name": "_cloneWriteableData", "line_range": [ - 162, - 172 + 201, + 215 ], "class_name": "SourceFileInfo" }, - "description": "restore pre edit writable data; clear cached pre edit state; invalidate parse and bind info; delegate restore to source file" + "description": "clone writable data object; duplicate relation arrays shallowly" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo._cachePreEditState", - "name": "SourceFileInfo._cachePreEditState", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo._cachePreEditState", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo._createWriteableData", + "name": "SourceFileInfo._createWriteableData", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo._createWriteableData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts", - "func_name": "_cachePreEditState", + "func_name": "_createWriteableData", "line_range": [ - 174, - 183 + 185, + 199 ], "class_name": "SourceFileInfo" }, - "description": "cache pre edit writable data; clone writable data for edits; register mutated file with tracker" + "description": "create writable data object; initialize tracking flags and fields; initialize relation lists for imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo._createWriteableData", - "name": "SourceFileInfo._createWriteableData", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo._createWriteableData", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo.mutate", + "name": "SourceFileInfo.mutate", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo.mutate", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts", - "func_name": "_createWriteableData", + "func_name": "mutate", "line_range": [ - 185, - 199 + 157, + 160 ], "class_name": "SourceFileInfo" }, - "description": "create writable data object; initialize tracking flags and fields; initialize relation lists for imports" + "description": "cache pre edit state; mutate writable data" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo._cloneWriteableData", - "name": "SourceFileInfo._cloneWriteableData", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo._cloneWriteableData", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts::SourceFileInfo.restore", + "name": "SourceFileInfo.restore", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfo.ts/SourceFileInfo.restore", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts", - "func_name": "_cloneWriteableData", + "func_name": "restore", "line_range": [ - 201, - 215 + 162, + 172 ], "class_name": "SourceFileInfo" }, - "description": "clone writable data object; duplicate relation arrays shallowly" + "description": "restore pre edit writable data; clear cached pre edit state; invalidate parse and bind info; delegate restore to source file" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::__file__", @@ -20001,19 +20077,19 @@ "description": "Utilities for SourceFileInfo: import/chain relationships, cycle checks, and parsing open IPython notebook cells" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::isUserCode", - "name": "isUserCode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/isUserCode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::_parseAllOpenCells", + "name": "_parseAllOpenCells", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/_parseAllOpenCells", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts", - "func_name": "isUserCode", + "func_name": "_parseAllOpenCells", "line_range": [ - 14, - 16 + 99, + 108 ] }, - "description": "identify user code file" + "description": "parse all open notebook cells" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::collectImportedByCells", @@ -20046,49 +20122,49 @@ "description": "collect transitive importing files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::verifyNoCyclesInChainedFiles", - "name": "verifyNoCyclesInChainedFiles", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/verifyNoCyclesInChainedFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::createChainedByList", + "name": "createChainedByList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/createChainedByList", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts", - "func_name": "verifyNoCyclesInChainedFiles", + "func_name": "createChainedByList", "line_range": [ - 43, - 64 + 66, + 97 ] }, - "description": "detect chained file cycles; report chained cycle details" + "description": "build reversed chained file list; detect cycles while building chain" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::createChainedByList", - "name": "createChainedByList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/createChainedByList", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::isUserCode", + "name": "isUserCode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/isUserCode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts", - "func_name": "createChainedByList", + "func_name": "isUserCode", "line_range": [ - 66, - 97 + 14, + 16 ] }, - "description": "build reversed chained file list; detect cycles while building chain" + "description": "identify user code file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::_parseAllOpenCells", - "name": "_parseAllOpenCells", - "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/_parseAllOpenCells", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::verifyNoCyclesInChainedFiles", + "name": "verifyNoCyclesInChainedFiles", + "feature_path": "pyright-whole-repo/ParserAndBinder/Manage analyzer runtime/source file state/sourceFileInfoUtils.ts/verifyNoCyclesInChainedFiles", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts", - "func_name": "_parseAllOpenCells", + "func_name": "verifyNoCyclesInChainedFiles", "line_range": [ - 99, - 108 + 43, + 64 ] }, - "description": "parse all open notebook cells" + "description": "detect chained file cycles; report chained cycle details" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::__file__", @@ -20100,185 +20176,199 @@ "func_name": "sourceMapper", "line_range": [ 1, - 1137 + 1149 ] }, - "description": "Maps .pyi stub files to corresponding .py implementation files and provides binding utilities" + "description": "Maps stub declarations to their corresponding Python source declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper", - "name": "SourceMapper", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::isAliasFactoryCallee", + "name": "isAliasFactoryCallee", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/isAliasFactoryCallee", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "SourceMapper", + "func_name": "isAliasFactoryCallee", "line_range": [ - 62, + 1134, + 1148 + ] + }, + "description": "identify alias factory callee" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::isStubFile", + "name": "isStubFile", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/isStubFile", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", + "func_name": "isStubFile", + "line_range": [ + 1130, 1132 ] }, - "description": "initialize source mapping dependencies; store mapping configuration" + "description": "identify stub file" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findModules", - "name": "SourceMapper.findModules", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findModules", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper", + "name": "SourceMapper", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "findModules", + "func_name": "SourceMapper", "line_range": [ - 75, - 84 - ], - "class_name": "SourceMapper" + 62, + 1128 + ] }, - "description": "map stub to implementation modules" + "description": "initialize source mapping dependencies" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.getModuleNode", - "name": "SourceMapper.getModuleNode", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.getModuleNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addClassOrFunctionDeclarations", + "name": "SourceMapper._addClassOrFunctionDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addClassOrFunctionDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "getModuleNode", + "func_name": "_addClassOrFunctionDeclarations", "line_range": [ - 86, - 88 + 610, + 665 ], "class_name": "SourceMapper" }, - "description": "retrieve module node for file" + "description": "collect callable type declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findDeclarations", - "name": "SourceMapper.findDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addClassTypeDeclarations", + "name": "SourceMapper._addClassTypeDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addClassTypeDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "findDeclarations", + "func_name": "_addClassTypeDeclarations", "line_range": [ - 90, - 104 + 889, + 911 ], "class_name": "SourceMapper" }, - "description": "find corresponding source declarations" + "description": "collect class type declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findDeclarationsByType", - "name": "SourceMapper.findDeclarationsByType", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findDeclarationsByType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsFollowingImportAliases", + "name": "SourceMapper._addDeclarationsFollowingImportAliases", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsFollowingImportAliases", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "findDeclarationsByType", + "func_name": "_addDeclarationsFollowingImportAliases", "line_range": [ - 106, - 110 + 1005, + 1064 ], "class_name": "SourceMapper" }, - "description": "find declarations for class type" + "description": "collect declarations through import aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findClassDeclarationsByType", - "name": "SourceMapper.findClassDeclarationsByType", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findClassDeclarationsByType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsFollowingWildcardImports", + "name": "SourceMapper._addDeclarationsFollowingWildcardImports", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsFollowingWildcardImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "findClassDeclarationsByType", + "func_name": "_addDeclarationsFollowingWildcardImports", "line_range": [ - 112, - 115 + 928, + 1003 ], "class_name": "SourceMapper" }, - "description": "find class declarations by type" + "description": "collect declarations through wildcard imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findFunctionDeclarations", - "name": "SourceMapper.findFunctionDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findFunctionDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsForAliasOriginExpression", + "name": "SourceMapper._addDeclarationsForAliasOriginExpression", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsForAliasOriginExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "findFunctionDeclarations", + "func_name": "_addDeclarationsForAliasOriginExpression", "line_range": [ - 117, - 121 + 726, + 772 ], "class_name": "SourceMapper" }, - "description": "find function declarations from stub" + "description": "collect declarations from alias origin" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.isUserCode", - "name": "SourceMapper.isUserCode", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.isUserCode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsForType", + "name": "SourceMapper._addDeclarationsForType", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsForType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "isUserCode", + "func_name": "_addDeclarationsForType", "line_range": [ - 123, - 125 + 667, + 695 ], "class_name": "SourceMapper" }, - "description": "detect user code" + "description": "collect declarations for type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.getNextFileName", - "name": "SourceMapper.getNextFileName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.getNextFileName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addVariableDeclarations", + "name": "SourceMapper._addVariableDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addVariableDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "getNextFileName", + "func_name": "_addVariableDeclarations", "line_range": [ - 127, - 136 + 582, + 608 ], "class_name": "SourceMapper" }, - "description": "generate next unique filename" + "description": "collect variable declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.getSourcePathsFromStub", - "name": "SourceMapper.getSourcePathsFromStub", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.getSourcePathsFromStub", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findClassDeclarations", + "name": "SourceMapper._findClassDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findClassDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "getSourcePathsFromStub", + "func_name": "_findClassDeclarations", "line_range": [ - 138, - 162 + 519, + 580 ], "class_name": "SourceMapper" }, - "description": "resolve source paths for stub file" + "description": "find class declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findSpecialBuiltInClassDeclarations", - "name": "SourceMapper._findSpecialBuiltInClassDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findSpecialBuiltInClassDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findClassDeclarationsByName", + "name": "SourceMapper._findClassDeclarationsByName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findClassDeclarationsByName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findSpecialBuiltInClassDeclarations", + "func_name": "_findClassDeclarationsByName", "line_range": [ - 164, - 178 + 493, + 517 ], "class_name": "SourceMapper" }, - "description": "find special built in class declarations" + "description": "find class declarations by name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findClassOrTypeAliasDeclarations", @@ -20294,55 +20384,55 @@ ], "class_name": "SourceMapper" }, - "description": "find class or type alias declarations" + "description": "find class type alias declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findFunctionOrTypeAliasDeclarations", - "name": "SourceMapper._findFunctionOrTypeAliasDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findFunctionOrTypeAliasDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findFieldDeclarationsByName", + "name": "SourceMapper._findFieldDeclarationsByName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findFieldDeclarationsByName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findFunctionOrTypeAliasDeclarations", + "func_name": "_findFieldDeclarationsByName", "line_range": [ - 189, - 211 + 351, + 388 ], "class_name": "SourceMapper" }, - "description": "find function or type alias declarations" + "description": "find field declarations by name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findVariableDeclarations", - "name": "SourceMapper._findVariableDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findVariableDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findFunctionDeclarationsByName", + "name": "SourceMapper._findFunctionDeclarationsByName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findFunctionDeclarationsByName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findVariableDeclarations", + "func_name": "_findFunctionDeclarationsByName", "line_range": [ - 213, - 236 + 459, + 491 ], "class_name": "SourceMapper" }, - "description": "find variable declarations from stub" + "description": "find function declarations by name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findParamDeclarations", - "name": "SourceMapper._findParamDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findParamDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findFunctionOrTypeAliasDeclarations", + "name": "SourceMapper._findFunctionOrTypeAliasDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findFunctionOrTypeAliasDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findParamDeclarations", + "func_name": "_findFunctionOrTypeAliasDeclarations", "line_range": [ - 238, - 273 + 189, + 211 ], "class_name": "SourceMapper" }, - "description": "find parameter declarations from stub" + "description": "find function type alias declarations" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findMemberDeclarationsByName", @@ -20358,71 +20448,71 @@ ], "class_name": "SourceMapper" }, - "description": "locate member declarations by name" + "description": "find member declarations by name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getClassDeclarationsForMemberLookup", - "name": "SourceMapper._getClassDeclarationsForMemberLookup", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getClassDeclarationsForMemberLookup", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findMethodDeclarationsByName", + "name": "SourceMapper._findMethodDeclarationsByName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findMethodDeclarationsByName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getClassDeclarationsForMemberLookup", + "func_name": "_findMethodDeclarationsByName", "line_range": [ - 302, - 321 + 390, + 423 ], "class_name": "SourceMapper" }, - "description": "resolve class declarations for member lookup" + "description": "find method declarations by name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getClassDeclarationsFromMemberContainer", - "name": "SourceMapper._getClassDeclarationsFromMemberContainer", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getClassDeclarationsFromMemberContainer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findParamDeclarations", + "name": "SourceMapper._findParamDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findParamDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getClassDeclarationsFromMemberContainer", + "func_name": "_findParamDeclarations", "line_range": [ - 323, - 349 + 238, + 273 ], "class_name": "SourceMapper" }, - "description": "derive class declarations from member container" + "description": "find parameter declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findFieldDeclarationsByName", - "name": "SourceMapper._findFieldDeclarationsByName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findFieldDeclarationsByName", - "meta": { - "type": "method", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findSpecialBuiltInClassDeclarations", + "name": "SourceMapper._findSpecialBuiltInClassDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findSpecialBuiltInClassDeclarations", + "meta": { + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findFieldDeclarationsByName", + "func_name": "_findSpecialBuiltInClassDeclarations", "line_range": [ - 351, - 388 + 164, + 178 ], "class_name": "SourceMapper" }, - "description": "find field declarations by name" + "description": "find special builtin classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findMethodDeclarationsByName", - "name": "SourceMapper._findMethodDeclarationsByName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findMethodDeclarationsByName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findVariableDeclarations", + "name": "SourceMapper._findVariableDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findVariableDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findMethodDeclarationsByName", + "func_name": "_findVariableDeclarations", "line_range": [ - 390, - 423 + 213, + 236 ], "class_name": "SourceMapper" }, - "description": "find method declarations by name" + "description": "find variable declarations" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findVariableDeclarationsByName", @@ -20441,371 +20531,372 @@ "description": "find variable declarations by name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findFunctionDeclarationsByName", - "name": "SourceMapper._findFunctionDeclarationsByName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findFunctionDeclarationsByName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getAliasOriginExpression", + "name": "SourceMapper._getAliasOriginExpression", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getAliasOriginExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findFunctionDeclarationsByName", + "func_name": "_getAliasOriginExpression", "line_range": [ - 459, - 491 + 697, + 708 ], "class_name": "SourceMapper" }, - "description": "find function declarations by name" + "description": "identify alias origin expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findClassDeclarationsByName", - "name": "SourceMapper._findClassDeclarationsByName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findClassDeclarationsByName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getBoundSourceFilesFromStubFile", + "name": "SourceMapper._getBoundSourceFilesFromStubFile", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getBoundSourceFilesFromStubFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findClassDeclarationsByName", + "func_name": "_getBoundSourceFilesFromStubFile", "line_range": [ - 493, - 517 + 1090, + 1093 ], "class_name": "SourceMapper" }, - "description": "find class declarations by name" + "description": "bind source files from stub" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._findClassDeclarations", - "name": "SourceMapper._findClassDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._findClassDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getClassDeclarationsForMemberLookup", + "name": "SourceMapper._getClassDeclarationsForMemberLookup", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getClassDeclarationsForMemberLookup", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_findClassDeclarations", + "func_name": "_getClassDeclarationsForMemberLookup", "line_range": [ - 519, - 580 + 302, + 321 ], "class_name": "SourceMapper" }, - "description": "search class declarations in file" + "description": "select classes for member lookup" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addVariableDeclarations", - "name": "SourceMapper._addVariableDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addVariableDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getClassDeclarationsFromMemberContainer", + "name": "SourceMapper._getClassDeclarationsFromMemberContainer", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getClassDeclarationsFromMemberContainer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addVariableDeclarations", + "func_name": "_getClassDeclarationsFromMemberContainer", "line_range": [ - 582, - 603 + 323, + 349 ], "class_name": "SourceMapper" }, - "description": "add variable declarations to result" + "description": "resolve classes from member containers" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addClassOrFunctionDeclarations", - "name": "SourceMapper._addClassOrFunctionDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addClassOrFunctionDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getFullClassName", + "name": "SourceMapper._getFullClassName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getFullClassName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addClassOrFunctionDeclarations", + "func_name": "_getFullClassName", "line_range": [ - 605, - 660 + 1078, + 1088 ], "class_name": "SourceMapper" }, - "description": "add class or function declarations" + "description": "build full class name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsForType", - "name": "SourceMapper._addDeclarationsForType", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsForType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getRedirectedTypeFromSymbol", + "name": "SourceMapper._getRedirectedTypeFromSymbol", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getRedirectedTypeFromSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addDeclarationsForType", + "func_name": "_getRedirectedTypeFromSymbol", "line_range": [ - 662, - 690 + 774, + 795 ], "class_name": "SourceMapper" }, - "description": "add declarations for class type" + "description": "resolve redirected symbol type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getAliasOriginExpression", - "name": "SourceMapper._getAliasOriginExpression", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getAliasOriginExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getSourceFiles", + "name": "SourceMapper._getSourceFiles", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getSourceFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getAliasOriginExpression", + "func_name": "_getSourceFiles", "line_range": [ - 692, - 703 + 913, + 926 ], "class_name": "SourceMapper" }, - "description": "get alias origin expression" + "description": "resolve source files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getVariableTypeSourceExpression", - "name": "SourceMapper._getVariableTypeSourceExpression", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getVariableTypeSourceExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getStubFileImportTree", + "name": "SourceMapper._getStubFileImportTree", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getStubFileImportTree", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getVariableTypeSourceExpression", + "func_name": "_getStubFileImportTree", "line_range": [ - 705, - 719 + 1095, + 1111 ], "class_name": "SourceMapper" }, - "description": "get variable type source expression" + "description": "build stub import tree" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsForAliasOriginExpression", - "name": "SourceMapper._addDeclarationsForAliasOriginExpression", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsForAliasOriginExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getVariableTypeSourceExpression", + "name": "SourceMapper._getVariableTypeSourceExpression", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getVariableTypeSourceExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addDeclarationsForAliasOriginExpression", + "func_name": "_getVariableTypeSourceExpression", "line_range": [ - 721, - 767 + 710, + 724 ], "class_name": "SourceMapper" }, - "description": "add declarations for alias origin" + "description": "identify variable type source" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getRedirectedTypeFromSymbol", - "name": "SourceMapper._getRedirectedTypeFromSymbol", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getRedirectedTypeFromSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._handleSpecialBuiltInModule", + "name": "SourceMapper._handleSpecialBuiltInModule", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._handleSpecialBuiltInModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getRedirectedTypeFromSymbol", + "func_name": "_handleSpecialBuiltInModule", "line_range": [ - 769, - 790 + 825, + 887 ], "class_name": "SourceMapper" }, - "description": "resolve redirected type from symbol" + "description": "adjust special builtin module" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._lookUpModuleSymbol", - "name": "SourceMapper._lookUpModuleSymbol", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._lookUpModuleSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._isAliasOriginFactoryCall", + "name": "SourceMapper._isAliasOriginFactoryCall", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._isAliasOriginFactoryCall", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_lookUpModuleSymbol", + "func_name": "_isAliasOriginFactoryCall", "line_range": [ - 792, - 802 + 809, + 823 ], "class_name": "SourceMapper" }, - "description": "look up module symbol declarations" + "description": "identify alias factory calls" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._isAliasOriginFactoryCall", - "name": "SourceMapper._isAliasOriginFactoryCall", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._isAliasOriginFactoryCall", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._isStubThatShouldBeMappedToImplementation", + "name": "SourceMapper._isStubThatShouldBeMappedToImplementation", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._isStubThatShouldBeMappedToImplementation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_isAliasOriginFactoryCall", + "func_name": "_isStubThatShouldBeMappedToImplementation", "line_range": [ - 804, - 827 + 1113, + 1127 ], "class_name": "SourceMapper" }, - "description": "detect alias origin factory call" + "description": "decide stub implementation mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._handleSpecialBuiltInModule", - "name": "SourceMapper._handleSpecialBuiltInModule", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._handleSpecialBuiltInModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._lookUpModuleSymbol", + "name": "SourceMapper._lookUpModuleSymbol", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._lookUpModuleSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_handleSpecialBuiltInModule", + "func_name": "_lookUpModuleSymbol", "line_range": [ - 829, - 891 + 797, + 807 ], "class_name": "SourceMapper" }, - "description": "handle special built in module imports" + "description": "lookup module symbol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addClassTypeDeclarations", - "name": "SourceMapper._addClassTypeDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addClassTypeDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._lookUpSymbolDeclarations", + "name": "SourceMapper._lookUpSymbolDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._lookUpSymbolDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addClassTypeDeclarations", + "func_name": "_lookUpSymbolDeclarations", "line_range": [ - 893, - 915 + 1066, + 1076 ], "class_name": "SourceMapper" }, - "description": "add class type declarations to result" + "description": "lookup symbol declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getSourceFiles", - "name": "SourceMapper._getSourceFiles", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getSourceFiles", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findClassDeclarationsByType", + "name": "SourceMapper.findClassDeclarationsByType", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findClassDeclarationsByType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getSourceFiles", + "func_name": "findClassDeclarationsByType", "line_range": [ - 917, - 930 + 112, + 115 ], "class_name": "SourceMapper" }, - "description": "get source files for uri" + "description": "find class declarations by type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsFollowingWildcardImports", - "name": "SourceMapper._addDeclarationsFollowingWildcardImports", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsFollowingWildcardImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findDeclarations", + "name": "SourceMapper.findDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addDeclarationsFollowingWildcardImports", + "func_name": "findDeclarations", "line_range": [ - 932, - 1007 + 90, + 104 ], "class_name": "SourceMapper" }, - "description": "add declarations following wildcard imports" + "description": "map declarations to sources" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._addDeclarationsFollowingImportAliases", - "name": "SourceMapper._addDeclarationsFollowingImportAliases", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._addDeclarationsFollowingImportAliases", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findDeclarationsByType", + "name": "SourceMapper.findDeclarationsByType", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findDeclarationsByType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_addDeclarationsFollowingImportAliases", + "func_name": "findDeclarationsByType", "line_range": [ - 1009, - 1068 + 106, + 110 ], "class_name": "SourceMapper" }, - "description": "add declarations following import aliases" + "description": "find declarations by type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._lookUpSymbolDeclarations", - "name": "SourceMapper._lookUpSymbolDeclarations", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._lookUpSymbolDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findFunctionDeclarations", + "name": "SourceMapper.findFunctionDeclarations", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findFunctionDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_lookUpSymbolDeclarations", + "func_name": "findFunctionDeclarations", "line_range": [ - 1070, - 1080 + 117, + 121 ], "class_name": "SourceMapper" }, - "description": "look up symbol declarations" + "description": "find function declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getFullClassName", - "name": "SourceMapper._getFullClassName", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getFullClassName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.findModules", + "name": "SourceMapper.findModules", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.findModules", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getFullClassName", + "func_name": "findModules", "line_range": [ - 1082, - 1092 + 75, + 84 ], "class_name": "SourceMapper" }, - "description": "compute full nested class name" + "description": "find implementation modules" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getBoundSourceFilesFromStubFile", - "name": "SourceMapper._getBoundSourceFilesFromStubFile", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getBoundSourceFilesFromStubFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.getModuleNode", + "name": "SourceMapper.getModuleNode", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.getModuleNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getBoundSourceFilesFromStubFile", + "func_name": "getModuleNode", "line_range": [ - 1094, - 1097 + 86, + 88 ], "class_name": "SourceMapper" }, - "description": "map stub to bound source files" + "description": "retrieve module parse tree" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._getStubFileImportTree", - "name": "SourceMapper._getStubFileImportTree", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._getStubFileImportTree", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.getNextFileName", + "name": "SourceMapper.getNextFileName", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.getNextFileName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_getStubFileImportTree", + "func_name": "getNextFileName", "line_range": [ - 1099, - 1115 + 127, + 136 ], "class_name": "SourceMapper" }, - "description": "build stub file import tree" + "description": "generate available file name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper._isStubThatShouldBeMappedToImplementation", - "name": "SourceMapper._isStubThatShouldBeMappedToImplementation", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper._isStubThatShouldBeMappedToImplementation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.getSourcePathsFromStub", + "name": "SourceMapper.getSourcePathsFromStub", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.getSourcePathsFromStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "_isStubThatShouldBeMappedToImplementation", + "func_name": "getSourcePathsFromStub", "line_range": [ - 1117, - 1131 + 138, + 162 ], "class_name": "SourceMapper" }, - "description": "determine stub mapping to implementation" + "description": "resolve source paths from stub" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::isStubFile", - "name": "isStubFile", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/isStubFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::SourceMapper.isUserCode", + "name": "SourceMapper.isUserCode", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapper.ts/SourceMapper.isUserCode", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts", - "func_name": "isStubFile", + "func_name": "isUserCode", "line_range": [ - 1134, - 1136 - ] + 123, + 125 + ], + "class_name": "SourceMapper" }, - "description": "detect stub file" + "description": "identify user code" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts::__file__", @@ -20823,19 +20914,19 @@ "description": "Finds an import chain between two Uri nodes and returns the sequence of Uris" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts::NumberReference", - "name": "NumberReference", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapperUtils.ts/NumberReference", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts::_buildImportTreeImpl", + "name": "_buildImportTreeImpl", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapperUtils.ts/_buildImportTreeImpl", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts", - "func_name": "NumberReference", + "func_name": "_buildImportTreeImpl", "line_range": [ - 12, - 14 + 27, + 63 ] }, - "description": "initialize numeric reference value; represent mutable numeric reference" + "description": "search import graph recursively; track total searched count; abort search on cancellation or limit; detect and avoid import cycles; return path when target found; backtrack on failed branches" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts::buildImportTree", @@ -20853,19 +20944,19 @@ "description": "initialize search counter; invoke recursive import search; ensure from node returned" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts::_buildImportTreeImpl", - "name": "_buildImportTreeImpl", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapperUtils.ts/_buildImportTreeImpl", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts::NumberReference", + "name": "NumberReference", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/sourceMapperUtils.ts/NumberReference", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts", - "func_name": "_buildImportTreeImpl", + "func_name": "NumberReference", "line_range": [ - 27, - 63 + 12, + 14 ] }, - "description": "search import graph recursively; track total searched count; abort search on cancellation or limit; detect and avoid import cycles; return path when target found; backtrack on failed branches" + "description": "initialize numeric reference value; represent mutable numeric reference" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", @@ -20877,70 +20968,115 @@ "func_name": "staticExpressions", "line_range": [ 1, - 377 + 502 ] }, - "description": "Evaluates parse-node expressions to determine static boolean, version, and platform string outcomes" + "description": "Evaluates Python parse expressions that can be statically resolved for truthiness and platform/version checks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::evaluateStaticBoolExpression", - "name": "evaluateStaticBoolExpression", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/evaluateStaticBoolExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_convertTupleToVersion", + "name": "_convertTupleToVersion", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_convertTupleToVersion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "evaluateStaticBoolExpression", + "func_name": "_convertTupleToVersion", "line_range": [ - 18, - 174 + 320, + 376 ] }, - "description": "evaluate static boolean expression; evaluate logical and or expressions; evaluate unary not expression; resolve known constant values; evaluate version tuple comparisons; evaluate platform string comparisons; evaluate os name comparisons; evaluate string equality comparisons" + "description": "derive python version" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::evaluateStaticBoolLikeExpression", - "name": "evaluateStaticBoolLikeExpression", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/evaluateStaticBoolLikeExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateBoolConstant", + "name": "_evaluateBoolConstant", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateBoolConstant", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "evaluateStaticBoolLikeExpression", + "func_name": "_evaluateBoolConstant", "line_range": [ - 179, - 193 + 225, + 236 ] }, - "description": "evaluate static bool like expression; treat none as false; delegate to static boolean evaluator" + "description": "evaluate boolean literal" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_convertTupleToVersion", - "name": "_convertTupleToVersion", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_convertTupleToVersion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateBoolLikeLiteral", + "name": "_evaluateBoolLikeLiteral", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateBoolLikeLiteral", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "_convertTupleToVersion", + "func_name": "_evaluateBoolLikeLiteral", "line_range": [ - 195, - 251 + 238, + 269 ] }, - "description": "convert tuple to version representation; parse major minor micro components; parse release level and serial; validate numeric tuple elements" + "description": "evaluate literal truthiness" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateVersionBinaryOperation", - "name": "_evaluateVersionBinaryOperation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateVersionBinaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateDictTruthiness", + "name": "_evaluateDictTruthiness", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateDictTruthiness", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "_evaluateVersionBinaryOperation", + "func_name": "_evaluateDictTruthiness", "line_range": [ - 253, - 285 + 306, + 318 + ] + }, + "description": "infer mapping truthiness" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateNumberTruthiness", + "name": "_evaluateNumberTruthiness", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateNumberTruthiness", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "_evaluateNumberTruthiness", + "line_range": [ + 271, + 279 + ] + }, + "description": "infer numeric truthiness" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateSequenceTruthiness", + "name": "_evaluateSequenceTruthiness", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateSequenceTruthiness", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "_evaluateSequenceTruthiness", + "line_range": [ + 292, + 304 + ] + }, + "description": "infer collection truthiness" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateStaticBoolOrBoolLikeExpression", + "name": "_evaluateStaticBoolOrBoolLikeExpression", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateStaticBoolOrBoolLikeExpression", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "_evaluateStaticBoolOrBoolLikeExpression", + "line_range": [ + 66, + 223 ] }, - "description": "evaluate version relational comparison; handle equality and inequality operators" + "description": "evaluate static boolean logic; resolve type checking guard; evaluate version guard; evaluate platform guard; evaluate defined constant comparison; infer literal truthiness" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateStringBinaryOperation", @@ -20951,56 +21087,56 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", "func_name": "_evaluateStringBinaryOperation", "line_range": [ - 287, - 301 + 412, + 426 ] }, - "description": "evaluate string equality and inequality" + "description": "compare text values" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_isSysVersionInfoExpression", - "name": "_isSysVersionInfoExpression", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_isSysVersionInfoExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateStringListTruthiness", + "name": "_evaluateStringListTruthiness", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateStringListTruthiness", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "_isSysVersionInfoExpression", + "func_name": "_evaluateStringListTruthiness", "line_range": [ - 303, - 313 + 281, + 290 ] }, - "description": "detect version_info member access pattern" + "description": "infer text truthiness" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_isSysPlatformInfoExpression", - "name": "_isSysPlatformInfoExpression", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_isSysPlatformInfoExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateVersionBinaryOperation", + "name": "_evaluateVersionBinaryOperation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_evaluateVersionBinaryOperation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "_isSysPlatformInfoExpression", + "func_name": "_evaluateVersionBinaryOperation", "line_range": [ - 315, - 325 + 378, + 410 ] }, - "description": "detect platform member access pattern" + "description": "compare python versions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_isOsNameInfoExpression", - "name": "_isOsNameInfoExpression", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_isOsNameInfoExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_getExpectedOsNameFromPlatform", + "name": "_getExpectedOsNameFromPlatform", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_getExpectedOsNameFromPlatform", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "_isOsNameInfoExpression", + "func_name": "_getExpectedOsNameFromPlatform", "line_range": [ - 327, - 339 + 487, + 501 ] }, - "description": "detect os name member access" + "description": "resolve operating system name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_getExpectedPlatformNameFromPlatform", @@ -21011,26 +21147,86 @@ "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", "func_name": "_getExpectedPlatformNameFromPlatform", "line_range": [ - 341, - 360 + 466, + 485 ] }, - "description": "map execution platform to platform string; adjust android mapping based on version" + "description": "resolve platform name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_getExpectedOsNameFromPlatform", - "name": "_getExpectedOsNameFromPlatform", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_getExpectedOsNameFromPlatform", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_isOsNameInfoExpression", + "name": "_isOsNameInfoExpression", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_isOsNameInfoExpression", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", - "func_name": "_getExpectedOsNameFromPlatform", + "func_name": "_isOsNameInfoExpression", "line_range": [ - 362, - 376 + 452, + 464 + ] + }, + "description": "identify operating system guard source" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_isSysPlatformInfoExpression", + "name": "_isSysPlatformInfoExpression", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_isSysPlatformInfoExpression", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "_isSysPlatformInfoExpression", + "line_range": [ + 440, + 450 + ] + }, + "description": "identify platform guard source" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_isSysVersionInfoExpression", + "name": "_isSysVersionInfoExpression", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/_isSysVersionInfoExpression", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "_isSysVersionInfoExpression", + "line_range": [ + 428, + 438 + ] + }, + "description": "identify version guard source" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::evaluateStaticBoolExpression", + "name": "evaluateStaticBoolExpression", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/evaluateStaticBoolExpression", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "evaluateStaticBoolExpression", + "line_range": [ + 27, + 42 + ] + }, + "description": "evaluate static boolean expression" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::evaluateStaticBoolLikeExpression", + "name": "evaluateStaticBoolLikeExpression", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/staticExpressions.ts/evaluateStaticBoolLikeExpression", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts", + "func_name": "evaluateStaticBoolLikeExpression", + "line_range": [ + 47, + 62 ] }, - "description": "map execution platform to os name string" + "description": "evaluate static truthiness expression" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::__file__", @@ -21077,6 +21273,22 @@ }, "description": "initialize symbol identity and flags" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.addDeclaration", + "name": "Symbol.addDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.addDeclaration", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", + "func_name": "addDeclaration", + "line_range": [ + 235, + 282 + ], + "class_name": "Symbol" + }, + "description": "add or update symbol declaration; synchronize declaration type alias information" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.createWithType", "name": "Symbol.createWithType", @@ -21094,100 +21306,100 @@ "description": "create symbol with synthesized type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInitiallyUnbound", - "name": "Symbol.isInitiallyUnbound", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInitiallyUnbound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getDeclarations", + "name": "Symbol.getDeclarations", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isInitiallyUnbound", + "func_name": "getDeclarations", "line_range": [ - 127, - 129 + 288, + 290 ], "class_name": "Symbol" }, - "description": "check initially unbound status" + "description": "return symbol declarations list" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsExternallyHidden", - "name": "Symbol.setIsExternallyHidden", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsExternallyHidden", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getSynthesizedType", + "name": "Symbol.getSynthesizedType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getSynthesizedType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsExternallyHidden", + "func_name": "getSynthesizedType", "line_range": [ - 131, - 133 + 305, + 307 ], "class_name": "Symbol" }, - "description": "mark symbol externally hidden" + "description": "retrieve synthesized type information" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isExternallyHidden", - "name": "Symbol.isExternallyHidden", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isExternallyHidden", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getTypedDeclarations", + "name": "Symbol.getTypedDeclarations", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getTypedDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isExternallyHidden", + "func_name": "getTypedDeclarations", "line_range": [ - 135, - 137 + 301, + 303 ], "class_name": "Symbol" }, - "description": "check externally hidden status" + "description": "get typed declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsIgnoredForProtocolMatch", - "name": "Symbol.setIsIgnoredForProtocolMatch", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsIgnoredForProtocolMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getTypingSymbolAlias", + "name": "Symbol.getTypingSymbolAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getTypingSymbolAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsIgnoredForProtocolMatch", + "func_name": "getTypingSymbolAlias", "line_range": [ - 139, - 141 + 231, + 233 ], "class_name": "Symbol" }, - "description": "mark ignored for protocol match" + "description": "get typing symbol alias" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isIgnoredForProtocolMatch", - "name": "Symbol.isIgnoredForProtocolMatch", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isIgnoredForProtocolMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.hasDeclarations", + "name": "Symbol.hasDeclarations", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.hasDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isIgnoredForProtocolMatch", + "func_name": "hasDeclarations", "line_range": [ - 143, - 145 + 284, + 286 ], "class_name": "Symbol" }, - "description": "check ignore for protocol match" + "description": "check for existing declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsClassMember", - "name": "Symbol.setIsClassMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsClassMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.hasTypedDeclarations", + "name": "Symbol.hasTypedDeclarations", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.hasTypedDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsClassMember", + "func_name": "hasTypedDeclarations", "line_range": [ - 147, - 149 + 292, + 299 ], "class_name": "Symbol" }, - "description": "mark as class member" + "description": "check for typed declarations" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isClassMember", @@ -21206,420 +21418,404 @@ "description": "check class member status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsInstanceMember", - "name": "Symbol.setIsInstanceMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsInstanceMember", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsInstanceMember", - "line_range": [ - 155, - 157 - ], - "class_name": "Symbol" - }, - "description": "mark as instance member" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInstanceMember", - "name": "Symbol.isInstanceMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInstanceMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isClassVar", + "name": "Symbol.isClassVar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isClassVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isInstanceMember", + "func_name": "isClassVar", "line_range": [ - 159, - 161 + 175, + 177 ], "class_name": "Symbol" }, - "description": "check instance member status" + "description": "check class variable status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsSlotsMember", - "name": "Symbol.setIsSlotsMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsSlotsMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isExternallyHidden", + "name": "Symbol.isExternallyHidden", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isExternallyHidden", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsSlotsMember", + "func_name": "isExternallyHidden", "line_range": [ - 163, - 165 + 135, + 137 ], "class_name": "Symbol" }, - "description": "mark as slots member" + "description": "check externally hidden status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isSlotsMember", - "name": "Symbol.isSlotsMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isSlotsMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isFinalVarInClassBody", + "name": "Symbol.isFinalVarInClassBody", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isFinalVarInClassBody", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isSlotsMember", + "func_name": "isFinalVarInClassBody", "line_range": [ - 167, - 169 + 183, + 185 ], "class_name": "Symbol" }, - "description": "check slots member status" + "description": "check final variable in class body" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsClassVar", - "name": "Symbol.setIsClassVar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsClassVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isIgnoredForOverrideChecks", + "name": "Symbol.isIgnoredForOverrideChecks", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isIgnoredForOverrideChecks", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsClassVar", + "func_name": "isIgnoredForOverrideChecks", "line_range": [ - 171, - 173 + 223, + 225 ], "class_name": "Symbol" }, - "description": "mark as class variable" + "description": "check ignore for override checks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isClassVar", - "name": "Symbol.isClassVar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isClassVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isIgnoredForProtocolMatch", + "name": "Symbol.isIgnoredForProtocolMatch", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isIgnoredForProtocolMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isClassVar", + "func_name": "isIgnoredForProtocolMatch", "line_range": [ - 175, - 177 + 143, + 145 ], "class_name": "Symbol" }, - "description": "check class variable status" + "description": "check ignore for protocol match" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsFinalVarInClassBody", - "name": "Symbol.setIsFinalVarInClassBody", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsFinalVarInClassBody", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInDunderAll", + "name": "Symbol.isInDunderAll", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInDunderAll", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsFinalVarInClassBody", + "func_name": "isInDunderAll", "line_range": [ - 179, - 181 + 199, + 201 ], "class_name": "Symbol" }, - "description": "mark final variable in class body" + "description": "check dunder all inclusion" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isFinalVarInClassBody", - "name": "Symbol.isFinalVarInClassBody", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isFinalVarInClassBody", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInitiallyUnbound", + "name": "Symbol.isInitiallyUnbound", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInitiallyUnbound", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isFinalVarInClassBody", + "func_name": "isInitiallyUnbound", "line_range": [ - 183, - 185 + 127, + 129 ], "class_name": "Symbol" }, - "description": "check final variable in class body" + "description": "check initially unbound status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsInitVar", - "name": "Symbol.setIsInitVar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsInitVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInitVar", + "name": "Symbol.isInitVar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInitVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsInitVar", + "func_name": "isInitVar", "line_range": [ - 187, - 189 + 191, + 193 ], "class_name": "Symbol" }, - "description": "mark as init variable" + "description": "check init variable status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInitVar", - "name": "Symbol.isInitVar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInitVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInstanceMember", + "name": "Symbol.isInstanceMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInstanceMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isInitVar", + "func_name": "isInstanceMember", "line_range": [ - 191, - 193 + 159, + 161 ], "class_name": "Symbol" }, - "description": "check init variable status" + "description": "check instance member status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsInDunderAll", - "name": "Symbol.setIsInDunderAll", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsInDunderAll", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isNamedTupleMemberMember", + "name": "Symbol.isNamedTupleMemberMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isNamedTupleMemberMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsInDunderAll", + "func_name": "isNamedTupleMemberMember", "line_range": [ - 195, - 197 + 219, + 221 ], "class_name": "Symbol" }, - "description": "mark as included in dunder all" + "description": "check named tuple member status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isInDunderAll", - "name": "Symbol.isInDunderAll", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isInDunderAll", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isPrivateMember", + "name": "Symbol.isPrivateMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isPrivateMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isInDunderAll", + "func_name": "isPrivateMember", "line_range": [ - 199, - 201 + 207, + 209 ], "class_name": "Symbol" }, - "description": "check dunder all inclusion" + "description": "check private member status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsPrivateMember", - "name": "Symbol.setIsPrivateMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsPrivateMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isPrivatePyTypedImport", + "name": "Symbol.isPrivatePyTypedImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isPrivatePyTypedImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setIsPrivateMember", + "func_name": "isPrivatePyTypedImport", "line_range": [ - 203, - 205 + 215, + 217 ], "class_name": "Symbol" }, - "description": "mark as private member" + "description": "check private pytyped import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isPrivateMember", - "name": "Symbol.isPrivateMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isPrivateMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isSlotsMember", + "name": "Symbol.isSlotsMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isSlotsMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isPrivateMember", + "func_name": "isSlotsMember", "line_range": [ - 207, - 209 + 167, + 169 ], "class_name": "Symbol" }, - "description": "check private member status" + "description": "check slots member status" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setPrivatePyTypedImport", - "name": "Symbol.setPrivatePyTypedImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setPrivatePyTypedImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsClassMember", + "name": "Symbol.setIsClassMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsClassMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setPrivatePyTypedImport", + "func_name": "setIsClassMember", "line_range": [ - 211, - 213 + 147, + 149 ], "class_name": "Symbol" }, - "description": "mark private pytyped import" + "description": "mark as class member" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isPrivatePyTypedImport", - "name": "Symbol.isPrivatePyTypedImport", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isPrivatePyTypedImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsClassVar", + "name": "Symbol.setIsClassVar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsClassVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isPrivatePyTypedImport", + "func_name": "setIsClassVar", "line_range": [ - 215, - 217 + 171, + 173 ], "class_name": "Symbol" }, - "description": "check private pytyped import" + "description": "mark as class variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isNamedTupleMemberMember", - "name": "Symbol.isNamedTupleMemberMember", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isNamedTupleMemberMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsExternallyHidden", + "name": "Symbol.setIsExternallyHidden", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsExternallyHidden", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isNamedTupleMemberMember", + "func_name": "setIsExternallyHidden", "line_range": [ - 219, - 221 + 131, + 133 ], "class_name": "Symbol" }, - "description": "check named tuple member status" + "description": "mark symbol externally hidden" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.isIgnoredForOverrideChecks", - "name": "Symbol.isIgnoredForOverrideChecks", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.isIgnoredForOverrideChecks", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsFinalVarInClassBody", + "name": "Symbol.setIsFinalVarInClassBody", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsFinalVarInClassBody", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "isIgnoredForOverrideChecks", + "func_name": "setIsFinalVarInClassBody", "line_range": [ - 223, - 225 + 179, + 181 ], "class_name": "Symbol" }, - "description": "check ignore for override checks" + "description": "mark final variable in class body" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setTypingSymbolAlias", - "name": "Symbol.setTypingSymbolAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setTypingSymbolAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsIgnoredForProtocolMatch", + "name": "Symbol.setIsIgnoredForProtocolMatch", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsIgnoredForProtocolMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "setTypingSymbolAlias", + "func_name": "setIsIgnoredForProtocolMatch", "line_range": [ - 227, - 229 + 139, + 141 ], "class_name": "Symbol" }, - "description": "set typing symbol alias" + "description": "mark ignored for protocol match" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getTypingSymbolAlias", - "name": "Symbol.getTypingSymbolAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getTypingSymbolAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsInDunderAll", + "name": "Symbol.setIsInDunderAll", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsInDunderAll", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "getTypingSymbolAlias", + "func_name": "setIsInDunderAll", "line_range": [ - 231, - 233 + 195, + 197 ], "class_name": "Symbol" }, - "description": "get typing symbol alias" + "description": "mark as included in dunder all" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.addDeclaration", - "name": "Symbol.addDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.addDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsInitVar", + "name": "Symbol.setIsInitVar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsInitVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "addDeclaration", + "func_name": "setIsInitVar", "line_range": [ - 235, - 282 + 187, + 189 ], "class_name": "Symbol" }, - "description": "add or update symbol declaration; synchronize declaration type alias information" + "description": "mark as init variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.hasDeclarations", - "name": "Symbol.hasDeclarations", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.hasDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsInstanceMember", + "name": "Symbol.setIsInstanceMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsInstanceMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "hasDeclarations", + "func_name": "setIsInstanceMember", "line_range": [ - 284, - 286 + 155, + 157 ], "class_name": "Symbol" }, - "description": "check for existing declarations" + "description": "mark as instance member" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getDeclarations", - "name": "Symbol.getDeclarations", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsPrivateMember", + "name": "Symbol.setIsPrivateMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsPrivateMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "getDeclarations", + "func_name": "setIsPrivateMember", "line_range": [ - 288, - 290 + 203, + 205 ], "class_name": "Symbol" }, - "description": "return symbol declarations list" + "description": "mark as private member" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.hasTypedDeclarations", - "name": "Symbol.hasTypedDeclarations", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.hasTypedDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setIsSlotsMember", + "name": "Symbol.setIsSlotsMember", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setIsSlotsMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "hasTypedDeclarations", + "func_name": "setIsSlotsMember", "line_range": [ - 292, - 299 + 163, + 165 ], "class_name": "Symbol" }, - "description": "check for typed declarations" + "description": "mark as slots member" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getTypedDeclarations", - "name": "Symbol.getTypedDeclarations", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getTypedDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setPrivatePyTypedImport", + "name": "Symbol.setPrivatePyTypedImport", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setPrivatePyTypedImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "getTypedDeclarations", + "func_name": "setPrivatePyTypedImport", "line_range": [ - 301, - 303 + 211, + 213 ], "class_name": "Symbol" }, - "description": "get typed declarations" + "description": "mark private pytyped import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.getSynthesizedType", - "name": "Symbol.getSynthesizedType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.getSynthesizedType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::Symbol.setTypingSymbolAlias", + "name": "Symbol.setTypingSymbolAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbol.ts/Symbol.setTypingSymbolAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts", - "func_name": "getSynthesizedType", + "func_name": "setTypingSymbolAlias", "line_range": [ - 305, - 307 + 227, + 229 ], "class_name": "Symbol" }, - "description": "retrieve synthesized type information" + "description": "set typing symbol alias" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::__file__", @@ -21637,34 +21833,49 @@ "description": "Classify Python symbol names (private, protected, dunder, constant, type alias, public constant/type alias)" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isPrivateName", - "name": "isPrivateName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isPrivateName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isConstantName", + "name": "isConstantName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isConstantName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", - "func_name": "isPrivateName", + "func_name": "isConstantName", "line_range": [ - 15, - 17 + 39, + 41 ] }, - "description": "identify private name" + "description": "identify constant style name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isProtectedName", - "name": "isProtectedName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isProtectedName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isDunderName", + "name": "isDunderName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isDunderName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", - "func_name": "isProtectedName", + "func_name": "isDunderName", "line_range": [ - 20, - 22 + 29, + 31 ] }, - "description": "identify protected name" + "description": "identify double underscore name" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isPrivateName", + "name": "isPrivateName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isPrivateName", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", + "func_name": "isPrivateName", + "line_range": [ + 15, + 17 + ] + }, + "description": "identify private name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isPrivateOrProtectedName", @@ -21682,49 +21893,49 @@ "description": "identify private or protected name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isDunderName", - "name": "isDunderName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isDunderName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isProtectedName", + "name": "isProtectedName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isProtectedName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", - "func_name": "isDunderName", + "func_name": "isProtectedName", "line_range": [ - 29, - 31 + 20, + 22 ] }, - "description": "identify double underscore name" + "description": "identify protected name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isSingleDunderName", - "name": "isSingleDunderName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isSingleDunderName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isPublicConstantOrTypeAlias", + "name": "isPublicConstantOrTypeAlias", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isPublicConstantOrTypeAlias", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", - "func_name": "isSingleDunderName", + "func_name": "isPublicConstantOrTypeAlias", "line_range": [ - 34, - 36 + 48, + 50 ] }, - "description": "identify single underscore enclosed name" + "description": "identify public constant or type alias" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isConstantName", - "name": "isConstantName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isConstantName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isSingleDunderName", + "name": "isSingleDunderName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isSingleDunderName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", - "func_name": "isConstantName", + "func_name": "isSingleDunderName", "line_range": [ - 39, - 41 + 34, + 36 ] }, - "description": "identify constant style name" + "description": "identify single underscore enclosed name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isTypeAliasName", @@ -21741,21 +21952,6 @@ }, "description": "identify type alias name" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts::isPublicConstantOrTypeAlias", - "name": "isPublicConstantOrTypeAlias", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolNameUtils.ts/isPublicConstantOrTypeAlias", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts", - "func_name": "isPublicConstantOrTypeAlias", - "line_range": [ - 48, - 50 - ] - }, - "description": "identify public constant or type alias" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts::__file__", "name": "symbolUtils", @@ -21786,6 +21982,21 @@ }, "description": "get last typed declaration" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts::isEffectivelyClassVar", + "name": "isEffectivelyClassVar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolUtils.ts/isEffectivelyClassVar", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts", + "func_name": "isEffectivelyClassVar", + "line_range": [ + 42, + 52 + ] + }, + "description": "identify explicit class var declaration; classify final class variable based on dataclass" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts::isTypedDictMemberAccessedThroughIndex", "name": "isTypedDictMemberAccessedThroughIndex", @@ -21816,21 +22027,6 @@ }, "description": "determine if symbol is externally visible" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts::isEffectivelyClassVar", - "name": "isEffectivelyClassVar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/symbolUtils.ts/isEffectivelyClassVar", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts", - "func_name": "isEffectivelyClassVar", - "line_range": [ - 42, - 52 - ] - }, - "description": "identify explicit class var declaration; classify final class variable based on dataclass" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::__file__", "name": "testWalker", @@ -21847,51 +22043,50 @@ "description": "Validates parse-tree node parent/range invariants and evaluates NameNode types using a TypeEvaluator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker", - "name": "TestWalker", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/TestWalker", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::NameTypeWalker", + "name": "NameTypeWalker", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/NameTypeWalker", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts", - "func_name": "TestWalker", + "func_name": "NameTypeWalker", "line_range": [ - 17, - 105 + 109, + 122 ] }, - "description": "initialize parse tree walker" + "description": "store type evaluator; initialize parse tree walker" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker.visitNode", - "name": "TestWalker.visitNode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/TestWalker.visitNode", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::NameTypeWalker.visitName", + "name": "NameTypeWalker.visitName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/NameTypeWalker.visitName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts", - "func_name": "visitNode", + "func_name": "visitName", "line_range": [ - 22, - 28 + 114, + 121 ], - "class_name": "TestWalker" + "class_name": "NameTypeWalker" }, - "description": "traverse parse tree nodes; verify child node parent links; verify child node ranges and order; return visited children nodes" + "description": "skip import alias names; check name reachability; evaluate type of reachable names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker._verifyParentChildLinks", - "name": "TestWalker._verifyParentChildLinks", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/TestWalker._verifyParentChildLinks", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker", + "name": "TestWalker", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/TestWalker", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts", - "func_name": "_verifyParentChildLinks", + "func_name": "TestWalker", "line_range": [ - 31, - 41 - ], - "class_name": "TestWalker" + 17, + 105 + ] }, - "description": "verify child node parent links" + "description": "initialize parse tree walker" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker._verifyChildRanges", @@ -21910,35 +22105,36 @@ "description": "verify children contained within parent; verify children do not overlap; verify children listed in increasing order" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::NameTypeWalker", - "name": "NameTypeWalker", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/NameTypeWalker", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker._verifyParentChildLinks", + "name": "TestWalker._verifyParentChildLinks", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/TestWalker._verifyParentChildLinks", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts", - "func_name": "NameTypeWalker", + "func_name": "_verifyParentChildLinks", "line_range": [ - 109, - 122 - ] + 31, + 41 + ], + "class_name": "TestWalker" }, - "description": "store type evaluator; initialize parse tree walker" + "description": "verify child node parent links" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::NameTypeWalker.visitName", - "name": "NameTypeWalker.visitName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/NameTypeWalker.visitName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts::TestWalker.visitNode", + "name": "TestWalker.visitNode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/testWalker.ts/TestWalker.visitNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts", - "func_name": "visitName", + "func_name": "visitNode", "line_range": [ - 114, - 121 + 22, + 28 ], - "class_name": "NameTypeWalker" + "class_name": "TestWalker" }, - "description": "skip import alias names; check name reachability; evaluate type of reachable names" + "description": "traverse parse tree nodes; verify child node parent links; verify child node ranges and order; return visited children nodes" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts::__file__", @@ -21986,139 +22182,139 @@ "description": "Tuple type analysis utilities: construct, infer, slice, expand, and assign tuple types for the type evaluator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::makeTupleObject", - "name": "makeTupleObject", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/makeTupleObject", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::adjustTupleTypeArgs", + "name": "adjustTupleTypeArgs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/adjustTupleTypeArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "makeTupleObject", + "func_name": "adjustTupleTypeArgs", "line_range": [ - 55, - 62 + 371, + 535 ] }, - "description": "create specialized tuple instance; return unknown when tuple unavailable" + "description": "align tuple type argument lists; expand unbounded any to match lengths; trim trailing optional arguments to match; package captured args into variadic tuple; wrap removed dest args for contravariant mapping; combine captured source types into composite type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTypeOfTuple", - "name": "getTypeOfTuple", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTypeOfTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::assignTupleTypeArgs", + "name": "assignTupleTypeArgs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/assignTupleTypeArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "getTypeOfTuple", + "func_name": "assignTupleTypeArgs", "line_range": [ - 64, - 142 + 276, + 364 ] }, - "description": "evaluate tuple node type; report invalid tuple in annotations; support zero length tuple shorthand; match tuple against union expected types; use context based tuple type inference; fall back to inferred tuple type; use any when expected contains any; attach expected type diagnostics" + "description": "assign tuple type arguments elementwise; handle unpacked variadic tuple special case; validate tuple sizes and report mismatches; apply constraints during entry assignment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTypeOfTupleWithContext", - "name": "getTypeOfTupleWithContext", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTypeOfTupleWithContext", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::expandTuple", + "name": "expandTuple", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/expandTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "getTypeOfTupleWithContext", + "func_name": "expandTuple", "line_range": [ - 144, - 240 + 566, + 601 ] }, - "description": "infer tuple type from expected context; derive expected entry types; expand unbounded type args to match; solve constraints for homogenous tuple type; evaluate tuple entries with per entry expectation; build specialized tuple or fallback unknown; aggregate expected type diagnostics" + "description": "expand tuple unions into combinations; generate specialized tuple types per combination; limit expansion by max count; skip expansion for variadic or unbounded elements; avoid expansion for single combination" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTypeOfTupleInferred", - "name": "getTypeOfTupleInferred", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTypeOfTupleInferred", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getSlicedTupleType", + "name": "getSlicedTupleType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getSlicedTupleType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "getTypeOfTupleInferred", + "func_name": "getSlicedTupleType", "line_range": [ - 242, - 271 + 539, + 559 ] }, - "description": "infer tuple type from element expressions; limit inference for large tuples to unknown; build tuple types list from entries; return unknown when nesting too deep" + "description": "compute tuple type for slice expression; reject slices with step values; validate slice bounds and return specialized tuple" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::assignTupleTypeArgs", - "name": "assignTupleTypeArgs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/assignTupleTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTupleSliceParam", + "name": "getTupleSliceParam", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTupleSliceParam", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "assignTupleTypeArgs", + "func_name": "getTupleSliceParam", "line_range": [ - 276, - 364 + 603, + 639 ] }, - "description": "assign tuple type arguments elementwise; handle unpacked variadic tuple special case; validate tuple sizes and report mismatches; apply constraints during entry assignment" + "description": "compute tuple slice numeric parameter; use default when expression absent; require integer literal expression; normalize negative indices to non-negative; clamp index within tuple length; reject indices crossing variadic boundary" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::adjustTupleTypeArgs", - "name": "adjustTupleTypeArgs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/adjustTupleTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTypeOfTuple", + "name": "getTypeOfTuple", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTypeOfTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "adjustTupleTypeArgs", + "func_name": "getTypeOfTuple", "line_range": [ - 371, - 535 + 64, + 142 ] }, - "description": "align tuple type argument lists; expand unbounded any to match lengths; trim trailing optional arguments to match; package captured args into variadic tuple; wrap removed dest args for contravariant mapping; combine captured source types into composite type" + "description": "evaluate tuple node type; report invalid tuple in annotations; support zero length tuple shorthand; match tuple against union expected types; use context based tuple type inference; fall back to inferred tuple type; use any when expected contains any; attach expected type diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getSlicedTupleType", - "name": "getSlicedTupleType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getSlicedTupleType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTypeOfTupleInferred", + "name": "getTypeOfTupleInferred", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTypeOfTupleInferred", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "getSlicedTupleType", + "func_name": "getTypeOfTupleInferred", "line_range": [ - 539, - 559 + 242, + 271 ] }, - "description": "compute tuple type for slice expression; reject slices with step values; validate slice bounds and return specialized tuple" + "description": "infer tuple type from element expressions; limit inference for large tuples to unknown; build tuple types list from entries; return unknown when nesting too deep" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::expandTuple", - "name": "expandTuple", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/expandTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTypeOfTupleWithContext", + "name": "getTypeOfTupleWithContext", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTypeOfTupleWithContext", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "expandTuple", + "func_name": "getTypeOfTupleWithContext", "line_range": [ - 566, - 601 + 144, + 240 ] }, - "description": "expand tuple unions into combinations; generate specialized tuple types per combination; limit expansion by max count; skip expansion for variadic or unbounded elements; avoid expansion for single combination" + "description": "infer tuple type from expected context; derive expected entry types; expand unbounded type args to match; solve constraints for homogenous tuple type; evaluate tuple entries with per entry expectation; build specialized tuple or fallback unknown; aggregate expected type diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::getTupleSliceParam", - "name": "getTupleSliceParam", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/getTupleSliceParam", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts::makeTupleObject", + "name": "makeTupleObject", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Evaluate type logic/type analysis/tuples.ts/makeTupleObject", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts", - "func_name": "getTupleSliceParam", + "func_name": "makeTupleObject", "line_range": [ - 603, - 639 + 55, + 62 ] }, - "description": "compute tuple slice numeric parameter; use default when expression absent; require integer literal expression; normalize negative indices to non-negative; clamp index within tuple length; reject indices crossing variadic boundary" + "description": "create specialized tuple instance; return unknown when tuple unavailable" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::__file__", @@ -22151,68 +22347,36 @@ "description": "initialize speculative context stack; initialize speculative type cache; initialize active dependent types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.enterSpeculativeContext", - "name": "SpeculativeTypeTracker.enterSpeculativeContext", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.enterSpeculativeContext", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", - "func_name": "enterSpeculativeContext", - "line_range": [ - 73, - 90 - ], - "class_name": "SpeculativeTypeTracker" - }, - "description": "enter speculative context; record active dependent types; configure speculative diagnostics permission" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.leaveSpeculativeContext", - "name": "SpeculativeTypeTracker.leaveSpeculativeContext", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.leaveSpeculativeContext", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", - "func_name": "leaveSpeculativeContext", - "line_range": [ - 92, - 106 - ], - "class_name": "SpeculativeTypeTracker" - }, - "description": "leave speculative context; remove active dependent types; undo speculative cache entries" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.isSpeculative", - "name": "SpeculativeTypeTracker.isSpeculative", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.isSpeculative", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker._dependentTypesMatch", + "name": "SpeculativeTypeTracker._dependentTypesMatch", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker._dependentTypesMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", - "func_name": "isSpeculative", + "func_name": "_dependentTypesMatch", "line_range": [ - 108, - 127 + 238, + 252 ], "class_name": "SpeculativeTypeTracker" }, - "description": "determine node speculative status; honor diagnostics allowance flag" + "description": "compare cached and active dependent types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.trackEntry", - "name": "SpeculativeTypeTracker.trackEntry", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.trackEntry", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.addSpeculativeType", + "name": "SpeculativeTypeTracker.addSpeculativeType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.addSpeculativeType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", - "func_name": "trackEntry", + "func_name": "addSpeculativeType", "line_range": [ - 129, - 137 + 153, + 206 ], "class_name": "SpeculativeTypeTracker" }, - "description": "track cache entry for rollback" + "description": "add speculative type to cache; evict stale speculative cache entries; limit cache entries per node; associate dependent types with entry" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.disableSpeculativeMode", @@ -22247,20 +22411,20 @@ "description": "restore speculative context stack" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.addSpeculativeType", - "name": "SpeculativeTypeTracker.addSpeculativeType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.addSpeculativeType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.enterSpeculativeContext", + "name": "SpeculativeTypeTracker.enterSpeculativeContext", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.enterSpeculativeContext", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", - "func_name": "addSpeculativeType", + "func_name": "enterSpeculativeContext", "line_range": [ - 153, - 206 + 73, + 90 ], "class_name": "SpeculativeTypeTracker" }, - "description": "add speculative type to cache; evict stale speculative cache entries; limit cache entries per node; associate dependent types with entry" + "description": "enter speculative context; record active dependent types; configure speculative diagnostics permission" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.getSpeculativeType", @@ -22279,20 +22443,52 @@ "description": "retrieve matching speculative type entry; match expected type and dependent types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker._dependentTypesMatch", - "name": "SpeculativeTypeTracker._dependentTypesMatch", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker._dependentTypesMatch", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.isSpeculative", + "name": "SpeculativeTypeTracker.isSpeculative", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.isSpeculative", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", - "func_name": "_dependentTypesMatch", + "func_name": "isSpeculative", "line_range": [ - 238, - 252 + 108, + 127 ], "class_name": "SpeculativeTypeTracker" }, - "description": "compare cached and active dependent types" + "description": "determine node speculative status; honor diagnostics allowance flag" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.leaveSpeculativeContext", + "name": "SpeculativeTypeTracker.leaveSpeculativeContext", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.leaveSpeculativeContext", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", + "func_name": "leaveSpeculativeContext", + "line_range": [ + 92, + 106 + ], + "class_name": "SpeculativeTypeTracker" + }, + "description": "leave speculative context; remove active dependent types; undo speculative cache entries" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts::SpeculativeTypeTracker.trackEntry", + "name": "SpeculativeTypeTracker.trackEntry", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeCacheUtils.ts/SpeculativeTypeTracker.trackEntry", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts", + "func_name": "trackEntry", + "line_range": [ + 129, + 137 + ], + "class_name": "SpeculativeTypeTracker" + }, + "description": "track cache entry for rollback" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts::__file__", @@ -22310,34 +22506,34 @@ "description": "Computes a complexity score for types to rank candidate types during constraint solving" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts::getComplexityScoreForType", - "name": "getComplexityScoreForType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeComplexity.ts/getComplexityScoreForType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts::getComplexityScoreForClass", + "name": "getComplexityScoreForClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeComplexity.ts/getComplexityScoreForClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts", - "func_name": "getComplexityScoreForType", + "func_name": "getComplexityScoreForClass", "line_range": [ - 18, - 70 + 72, + 102 ] }, - "description": "compute type complexity score; limit recursion depth; score unknown and any types; score type variables higher when instantiable; score functions higher when instantiable; assign maximal score to never and unbound; use max subtype complexity for union; limit union computation for large unions; delegate class scoring to helper" + "description": "compute average type argument complexity; support tuple and normal type arguments; use any for unresolved type parameters; assign base complexity from type args; increase score for instantiable classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts::getComplexityScoreForClass", - "name": "getComplexityScoreForClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeComplexity.ts/getComplexityScoreForClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts::getComplexityScoreForType", + "name": "getComplexityScoreForType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeComplexity.ts/getComplexityScoreForType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts", - "func_name": "getComplexityScoreForClass", + "func_name": "getComplexityScoreForType", "line_range": [ - 72, - 102 + 18, + 70 ] }, - "description": "compute average type argument complexity; support tuple and normal type arguments; use any for unresolved type parameters; assign base complexity from type args; increase score for instantiable classes" + "description": "compute type complexity score; limit recursion depth; score unknown and any types; score type variables higher when instantiable; score functions higher when instantiable; assign maximal score to never and unbound; use max subtype complexity for union; limit union computation for large unions; delegate class scoring to helper" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::__file__", @@ -22355,79 +22551,79 @@ "description": "Provides TypedDict type creation, member resolution, assignment and helper utilities for the analyzer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::createTypedDictType", - "name": "createTypedDictType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/createTypedDictType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::assignToTypedDict", + "name": "assignToTypedDict", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/assignToTypedDict", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "createTypedDictType", + "func_name": "assignToTypedDict", "line_range": [ - 79, - 269 + 1351, + 1495 ] }, - "description": "parse typed dict arguments; validate typed dict arguments; create typed dict class; populate class fields from entries; detect duplicate typed dict entries; apply typed dict flags; synthesize typed dict methods; report diagnostics for invalid usage; validate assigned variable name" + "description": "validate typed dict keys; assign typed dict values; enforce required typed dict keys; narrow typed dict entries; apply generic class constraints; report typed dict diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::createTypedDictTypeInlined", - "name": "createTypedDictTypeInlined", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/createTypedDictTypeInlined", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::assignTypedDictToTypedDict", + "name": "assignTypedDictToTypedDict", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/assignTypedDictToTypedDict", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "createTypedDictTypeInlined", + "func_name": "assignTypedDictToTypedDict", "line_range": [ - 272, - 297 + 1154, + 1343 ] }, - "description": "create inlined typed dict class; populate class fields from inline entries; synthesize typed dict methods" + "description": "check assignability between typed dicts; enforce required and readonly constraints; validate missing and extra fields; use type evaluator for member compatibility; report diagnostics for mismatches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::synthesizeTypedDictClassMethods", - "name": "synthesizeTypedDictClassMethods", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/synthesizeTypedDictClassMethods", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::createTypedDictType", + "name": "createTypedDictType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/createTypedDictType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "synthesizeTypedDictClassMethods", + "func_name": "createTypedDictType", "line_range": [ - 299, - 814 + 79, + 269 ] }, - "description": "synthesize constructor method; synthesize initializer overloads; define initializer parameters for fields; determine typed dict entries and extras; generate get method overloads; generate pop method overloads; generate setdefault method overloads; create update method overloads; construct tuple types for update entries; restrict mutators by readonly status; provide deletion method for writable fields; add clear and popitem methods" + "description": "parse typed dict arguments; validate typed dict arguments; create typed dict class; populate class fields from entries; detect duplicate typed dict entries; apply typed dict flags; synthesize typed dict methods; report diagnostics for invalid usage; validate assigned variable name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictMembersForClass", - "name": "getTypedDictMembersForClass", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypedDictMembersForClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::createTypedDictTypeInlined", + "name": "createTypedDictTypeInlined", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/createTypedDictTypeInlined", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "getTypedDictMembersForClass", + "func_name": "createTypedDictTypeInlined", "line_range": [ - 816, - 883 + 272, + 297 ] }, - "description": "compute typed dict entries; cache typed dict entries; apply solved type variables; apply partial typed dict semantics; include narrowed typed dict entries; return specialized entries copy" + "description": "create inlined typed dict class; populate class fields from inline entries; synthesize typed dict methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictMappingEquivalent", - "name": "getTypedDictMappingEquivalent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypedDictMappingEquivalent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getEffectiveExtraItemsEntryType", + "name": "getEffectiveExtraItemsEntryType", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getEffectiveExtraItemsEntryType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "getTypedDictMappingEquivalent", + "func_name": "getEffectiveExtraItemsEntryType", "line_range": [ - 887, - 914 + 1128, + 1152 ] }, - "description": "compute typed dict mapping value type; exclude open typed dicts from mapping; ignore object as mapping value" + "description": "compute effective extra items entry type; default open extra items to readonly object; default closed typed dict extra items to never" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictDictEquivalent", @@ -22460,94 +22656,94 @@ "description": "extract typed dict fields from dict syntax; validate typed dict entry syntax; register field symbols with declarations; detect duplicate field names" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictMembersForClassRecursive", - "name": "getTypedDictMembersForClassRecursive", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypedDictMembersForClassRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictMappingEquivalent", + "name": "getTypedDictMappingEquivalent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypedDictMappingEquivalent", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "getTypedDictMembersForClassRecursive", + "func_name": "getTypedDictMappingEquivalent", "line_range": [ - 1042, - 1126 + 887, + 914 ] }, - "description": "recursively collect typed dict entries; evaluate extra items type for class; derive entry required and readonly status; record known typed dict entries" + "description": "compute typed dict mapping value type; exclude open typed dicts from mapping; ignore object as mapping value" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getEffectiveExtraItemsEntryType", - "name": "getEffectiveExtraItemsEntryType", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getEffectiveExtraItemsEntryType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictMembersForClass", + "name": "getTypedDictMembersForClass", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypedDictMembersForClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "getEffectiveExtraItemsEntryType", + "func_name": "getTypedDictMembersForClass", "line_range": [ - 1128, - 1152 + 816, + 883 ] }, - "description": "compute effective extra items entry type; default open extra items to readonly object; default closed typed dict extra items to never" + "description": "compute typed dict entries; cache typed dict entries; apply solved type variables; apply partial typed dict semantics; include narrowed typed dict entries; return specialized entries copy" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::assignTypedDictToTypedDict", - "name": "assignTypedDictToTypedDict", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/assignTypedDictToTypedDict", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypedDictMembersForClassRecursive", + "name": "getTypedDictMembersForClassRecursive", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypedDictMembersForClassRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "assignTypedDictToTypedDict", + "func_name": "getTypedDictMembersForClassRecursive", "line_range": [ - 1154, - 1343 + 1042, + 1126 ] }, - "description": "check assignability between typed dicts; enforce required and readonly constraints; validate missing and extra fields; use type evaluator for member compatibility; report diagnostics for mismatches" + "description": "recursively collect typed dict entries; evaluate extra items type for class; derive entry required and readonly status; record known typed dict entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::assignToTypedDict", - "name": "assignToTypedDict", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/assignToTypedDict", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypeOfIndexedTypedDict", + "name": "getTypeOfIndexedTypedDict", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypeOfIndexedTypedDict", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "assignToTypedDict", + "func_name": "getTypeOfIndexedTypedDict", "line_range": [ - 1351, - 1495 + 1497, + 1612 ] }, - "description": "validate typed dict keys; assign typed dict values; enforce required typed dict keys; narrow typed dict entries; apply generic class constraints; report typed dict diagnostics" + "description": "infer typed dict index result type; validate index string literal; handle extra typed dict items; check assignment compatibility for set; detect deletion of required keys; report typed dict index diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::getTypeOfIndexedTypedDict", - "name": "getTypeOfIndexedTypedDict", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/getTypeOfIndexedTypedDict", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::isNotRequiredTypedDictVariable", + "name": "isNotRequiredTypedDictVariable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/isNotRequiredTypedDictVariable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "getTypeOfIndexedTypedDict", + "func_name": "isNotRequiredTypedDictVariable", "line_range": [ - 1497, - 1612 + 1663, + 1677 ] }, - "description": "infer typed dict index result type; validate index string literal; handle extra typed dict items; check assignment compatibility for set; detect deletion of required keys; report typed dict index diagnostics" + "description": "identify not required typed dict variable; inspect variable type annotation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::narrowForKeyAssignment", - "name": "narrowForKeyAssignment", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/narrowForKeyAssignment", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::isReadOnlyTypedDictVariable", + "name": "isReadOnlyTypedDictVariable", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/isReadOnlyTypedDictVariable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "narrowForKeyAssignment", + "func_name": "isReadOnlyTypedDictVariable", "line_range": [ - 1616, - 1645 + 1679, + 1693 ] }, - "description": "narrow typed dict for key; mark optional key as provided; clone typed dict with narrowed entries" + "description": "identify read only typed dict variable; inspect variable type annotation" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::isRequiredTypedDictVariable", @@ -22565,34 +22761,34 @@ "description": "identify required typed dict variable; inspect variable type annotation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::isNotRequiredTypedDictVariable", - "name": "isNotRequiredTypedDictVariable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/isNotRequiredTypedDictVariable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::narrowForKeyAssignment", + "name": "narrowForKeyAssignment", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/narrowForKeyAssignment", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "isNotRequiredTypedDictVariable", + "func_name": "narrowForKeyAssignment", "line_range": [ - 1663, - 1677 + 1616, + 1645 ] }, - "description": "identify not required typed dict variable; inspect variable type annotation" + "description": "narrow typed dict for key; mark optional key as provided; clone typed dict with narrowed entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::isReadOnlyTypedDictVariable", - "name": "isReadOnlyTypedDictVariable", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/isReadOnlyTypedDictVariable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts::synthesizeTypedDictClassMethods", + "name": "synthesizeTypedDictClassMethods", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage analyzer runtime/source file state/typedDicts.ts/synthesizeTypedDictClassMethods", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts", - "func_name": "isReadOnlyTypedDictVariable", + "func_name": "synthesizeTypedDictClassMethods", "line_range": [ - 1679, - 1693 + 299, + 814 ] }, - "description": "identify read only typed dict variable; inspect variable type annotation" + "description": "synthesize constructor method; synthesize initializer overloads; define initializer parameters for fields; determine typed dict entries and extras; generate get method overloads; generate pop method overloads; generate setdefault method overloads; create update method overloads; construct tuple types for update entries; restrict mutators by readonly status; provide deletion method for writable fields; add clear and popitem methods" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::__file__", @@ -22610,169 +22806,169 @@ "description": "Retrieves and resolves docstrings for modules, classes, functions, variables, and properties including inherited stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::isInheritedFromBuiltin", - "name": "isInheritedFromBuiltin", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/isInheritedFromBuiltin", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionDocStringFromDeclaration", + "name": "_getFunctionDocStringFromDeclaration", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionDocStringFromDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "isInheritedFromBuiltin", + "func_name": "_getFunctionDocStringFromDeclaration", "line_range": [ - 54, - 71 + 422, + 424 ] }, - "description": "detect function inherited from builtin" + "description": "extract function docstring from declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionDocStringInherited", - "name": "getFunctionDocStringInherited", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getFunctionDocStringInherited", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionDocStringFromDeclarationInfo", + "name": "_getFunctionDocStringFromDeclarationInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionDocStringFromDeclarationInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getFunctionDocStringInherited", + "func_name": "_getFunctionDocStringFromDeclarationInfo", "line_range": [ - 73, - 80 + 466, + 483 ] }, - "description": "retrieve inherited function docstring" + "description": "extract docstring info from declaration or implementation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionDocStringInheritedInfo", - "name": "getFunctionDocStringInheritedInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getFunctionDocStringInheritedInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionDocStringInfo", + "name": "_getFunctionDocStringInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionDocStringInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getFunctionDocStringInheritedInfo", + "func_name": "_getFunctionDocStringInfo", "line_range": [ - 88, - 137 + 433, + 464 ] }, - "description": "resolve function docstring from declaration; search class mro for docstring; fallback to shared type docstring" + "description": "use type shared docstring when available; fallback to resolved declaration for docstring; fallback to type declaration for docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getOverloadedDocStringsInherited", - "name": "getOverloadedDocStringsInherited", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getOverloadedDocStringsInherited", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionOrClassDeclsDocString", + "name": "_getFunctionOrClassDeclsDocString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionOrClassDeclsDocString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getOverloadedDocStringsInherited", + "func_name": "_getFunctionOrClassDeclsDocString", "line_range": [ - 139, - 179 + 485, + 493 ] }, - "description": "collect overloaded function docstrings from declarations; avoid inheriting builtin docstrings; search class mro for overloaded docstrings" + "description": "extract first available docstring from declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getPropertyDocStringInherited", - "name": "getPropertyDocStringInherited", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getPropertyDocStringInherited", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionOrClassDeclsDocStringInfo", + "name": "_getFunctionOrClassDeclsDocStringInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionOrClassDeclsDocStringInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getPropertyDocStringInherited", + "func_name": "_getFunctionOrClassDeclsDocStringInfo", "line_range": [ - 181, - 192 + 501, + 512 ] }, - "description": "retrieve inherited property docstring from class" + "description": "find first declaration with docstring and source" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getVariableInStubFileDocStrings", - "name": "getVariableInStubFileDocStrings", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getVariableInStubFileDocStrings", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getPropertyDocStringInherited", + "name": "_getPropertyDocStringInherited", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getPropertyDocStringInherited", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getVariableInStubFileDocStrings", + "func_name": "_getPropertyDocStringInherited", "line_range": [ - 194, - 214 + 374, + 420 ] }, - "description": "collect variable docstrings from implementation for stub" + "description": "search class mro for descriptor property docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::isBuiltInModule", - "name": "isBuiltInModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/isBuiltInModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_isAnyClassDeclaration", + "name": "_isAnyClassDeclaration", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_isAnyClassDeclaration", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "isBuiltInModule", + "func_name": "_isAnyClassDeclaration", "line_range": [ - 216, - 221 + 514, + 516 ] }, - "description": "detect builtin module by uri" + "description": "detect any class declaration type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getModuleDocStringFromModuleNodes", - "name": "getModuleDocStringFromModuleNodes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getModuleDocStringFromModuleNodes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getClassDocString", + "name": "getClassDocString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getClassDocString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getModuleDocStringFromModuleNodes", + "func_name": "getClassDocString", "line_range": [ - 223, - 234 + 263, + 295 ] }, - "description": "extract module docstring from module nodes" + "description": "use shared class docstring if present; extract class docstring from stub implementations; find implementation class declarations for docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getModuleDocStringFromUris", - "name": "getModuleDocStringFromUris", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getModuleDocStringFromUris", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionDocStringFromDeclarationInfo", + "name": "getFunctionDocStringFromDeclarationInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getFunctionDocStringFromDeclarationInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getModuleDocStringFromUris", + "func_name": "getFunctionDocStringFromDeclarationInfo", "line_range": [ - 236, - 247 + 426, + 431 ] }, - "description": "retrieve module docstring from uris" + "description": "retrieve function docstring with source info" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getModuleDocString", - "name": "getModuleDocString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getModuleDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionDocStringInherited", + "name": "getFunctionDocStringInherited", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getFunctionDocStringInherited", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getModuleDocString", + "func_name": "getFunctionDocStringInherited", "line_range": [ - 249, - 261 + 73, + 80 ] }, - "description": "get module docstring with fallback" + "description": "retrieve inherited function docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getClassDocString", - "name": "getClassDocString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getClassDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionDocStringInheritedInfo", + "name": "getFunctionDocStringInheritedInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getFunctionDocStringInheritedInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getClassDocString", + "func_name": "getFunctionDocStringInheritedInfo", "line_range": [ - 263, - 295 + 88, + 137 ] }, - "description": "use shared class docstring if present; extract class docstring from stub implementations; find implementation class declarations for docstring" + "description": "resolve function docstring from declaration; search class mro for docstring; fallback to shared type docstring" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionOrClassDeclDocString", @@ -22790,154 +22986,154 @@ "description": "extract docstring from declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getVariableDocString", - "name": "getVariableDocString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getVariableDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getModuleDocString", + "name": "getModuleDocString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getModuleDocString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getVariableDocString", + "func_name": "getModuleDocString", "line_range": [ - 301, - 314 + 249, + 261 ] }, - "description": "get variable docstring from declaration or stub" + "description": "get module docstring with fallback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getOverloadedDocStrings", - "name": "getOverloadedDocStrings", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getOverloadedDocStrings", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getModuleDocStringFromModuleNodes", + "name": "getModuleDocStringFromModuleNodes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getModuleDocStringFromModuleNodes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getOverloadedDocStrings", + "func_name": "getModuleDocStringFromModuleNodes", "line_range": [ - 316, - 372 + 223, + 234 ] }, - "description": "collect overloaded function docstrings from overloads and implementation; fallback to declaration and stub docstrings" + "description": "extract module docstring from module nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getPropertyDocStringInherited", - "name": "_getPropertyDocStringInherited", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getPropertyDocStringInherited", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getModuleDocStringFromUris", + "name": "getModuleDocStringFromUris", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getModuleDocStringFromUris", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_getPropertyDocStringInherited", + "func_name": "getModuleDocStringFromUris", "line_range": [ - 374, - 420 + 236, + 247 ] }, - "description": "search class mro for descriptor property docstring" + "description": "retrieve module docstring from uris" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionDocStringFromDeclaration", - "name": "_getFunctionDocStringFromDeclaration", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionDocStringFromDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getOverloadedDocStrings", + "name": "getOverloadedDocStrings", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getOverloadedDocStrings", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_getFunctionDocStringFromDeclaration", + "func_name": "getOverloadedDocStrings", "line_range": [ - 422, - 424 + 316, + 372 ] }, - "description": "extract function docstring from declaration" + "description": "collect overloaded function docstrings from overloads and implementation; fallback to declaration and stub docstrings" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getFunctionDocStringFromDeclarationInfo", - "name": "getFunctionDocStringFromDeclarationInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getFunctionDocStringFromDeclarationInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getOverloadedDocStringsInherited", + "name": "getOverloadedDocStringsInherited", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getOverloadedDocStringsInherited", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "getFunctionDocStringFromDeclarationInfo", + "func_name": "getOverloadedDocStringsInherited", "line_range": [ - 426, - 431 + 139, + 179 ] }, - "description": "retrieve function docstring with source info" + "description": "collect overloaded function docstrings from declarations; avoid inheriting builtin docstrings; search class mro for overloaded docstrings" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionDocStringInfo", - "name": "_getFunctionDocStringInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionDocStringInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getPropertyDocStringInherited", + "name": "getPropertyDocStringInherited", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getPropertyDocStringInherited", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_getFunctionDocStringInfo", + "func_name": "getPropertyDocStringInherited", "line_range": [ - 433, - 464 + 181, + 192 ] }, - "description": "use type shared docstring when available; fallback to resolved declaration for docstring; fallback to type declaration for docstring" + "description": "retrieve inherited property docstring from class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionDocStringFromDeclarationInfo", - "name": "_getFunctionDocStringFromDeclarationInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionDocStringFromDeclarationInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getVariableDocString", + "name": "getVariableDocString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getVariableDocString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_getFunctionDocStringFromDeclarationInfo", + "func_name": "getVariableDocString", "line_range": [ - 466, - 483 + 301, + 314 ] }, - "description": "extract docstring info from declaration or implementation" + "description": "get variable docstring from declaration or stub" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionOrClassDeclsDocString", - "name": "_getFunctionOrClassDeclsDocString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionOrClassDeclsDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::getVariableInStubFileDocStrings", + "name": "getVariableInStubFileDocStrings", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/getVariableInStubFileDocStrings", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_getFunctionOrClassDeclsDocString", + "func_name": "getVariableInStubFileDocStrings", "line_range": [ - 485, - 493 + 194, + 214 ] }, - "description": "extract first available docstring from declarations" + "description": "collect variable docstrings from implementation for stub" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_getFunctionOrClassDeclsDocStringInfo", - "name": "_getFunctionOrClassDeclsDocStringInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_getFunctionOrClassDeclsDocStringInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::isBuiltInModule", + "name": "isBuiltInModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/isBuiltInModule", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_getFunctionOrClassDeclsDocStringInfo", + "func_name": "isBuiltInModule", "line_range": [ - 501, - 512 + 216, + 221 ] }, - "description": "find first declaration with docstring and source" + "description": "detect builtin module by uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::_isAnyClassDeclaration", - "name": "_isAnyClassDeclaration", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/_isAnyClassDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts::isInheritedFromBuiltin", + "name": "isInheritedFromBuiltin", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeDocStringUtils.ts/isInheritedFromBuiltin", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts", - "func_name": "_isAnyClassDeclaration", + "func_name": "isInheritedFromBuiltin", "line_range": [ - 514, - 516 + 54, + 71 ] }, - "description": "detect any class declaration type" + "description": "detect function inherited from builtin" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts::__file__", @@ -22949,10 +23145,10 @@ "func_name": "typeEvaluator", "line_range": [ 1, - 28991 + 29026 ] }, - "description": "Evaluates types of parse tree nodes within a Python program" + "description": "Evaluates Python parse tree nodes to infer types and report type-related diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts::createTypeEvaluator", @@ -22964,10 +23160,10 @@ "func_name": "createTypeEvaluator", "line_range": [ 648, - 28990 + 29025 ] }, - "description": "create type evaluator instance; expose type evaluation apis; manage cancellation token lifecycle; manage type caches and invalidation; support speculative evaluation tracking; manage return type inference contexts; manage symbol resolution for declarations; provide type printing utilities; parse string literals as type annotations; narrow constrained type variables; dispose resources and clear caches; track asymmetric accessor assignments" + "description": "create type evaluator; manage cancellation requests; cache evaluated types; track speculative types; resolve symbol declarations; resolve alias declarations; evaluate expression types; evaluate annotation types; evaluate class types; evaluate function types; infer return types; infer class variance" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts::__file__", @@ -22979,10 +23175,10 @@ "func_name": "typeEvaluatorTypes", "line_range": [ 1, - 900 + 901 ] }, - "description": "Type evaluator interfaces, helper types, constants, and utilities for Pyright's analyzer" + "description": "Defines the type evaluator interface and supporting types for Pyright analysis" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts::ensureExpectedTypeCandidates", @@ -22997,7 +23193,7 @@ 420 ] }, - "description": "ensure nonempty candidate list; normalize candidates to array; use original type as fallback candidate" + "description": "ensure expected type candidates" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts::__file__", @@ -23039,40 +23235,40 @@ "func_name": "typeGuards", "line_range": [ 1, - 2814 + 2870 ] }, - "description": "Narrow types based on conditional expressions, isinstance checks, and user-defined type guards" + "description": "Narrows Pyright types from conditional expressions, type guards, literal checks, and container membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getTypeNarrowingCallback", - "name": "getTypeNarrowingCallback", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getTypeNarrowingCallback", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::enumerateLiteralsForType", + "name": "enumerateLiteralsForType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/enumerateLiteralsForType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "getTypeNarrowingCallback", + "func_name": "enumerateLiteralsForType", "line_range": [ - 117, - 861 + 2809, + 2847 ] }, - "description": "derive narrowing callback for expression; derive narrowing from assignment expression; narrow type for none comparison; narrow tuple element by index; narrow type for ellipsis comparison; narrow type for type identity comparison; narrow type for literal comparison; narrow type for class comparison; narrow type for container membership; narrow type for typed dict key presence; narrow type by isinstance or issubclass; narrow type by truthiness check" + "description": "enumerate boolean literal values; enumerate enum literal values; exclude flag enum values" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getTypeNarrowingCallbackForAliasedCondition", - "name": "getTypeNarrowingCallbackForAliasedCondition", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getTypeNarrowingCallbackForAliasedCondition", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::expandUnboundedTupleElement", + "name": "expandUnboundedTupleElement", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/expandUnboundedTupleElement", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "getTypeNarrowingCallbackForAliasedCondition", + "func_name": "expandUnboundedTupleElement", "line_range": [ - 863, - 927 + 2136, + 2154 ] }, - "description": "derive narrowing callback for alias condition; validate aliased name uniqueness; ensure no intervening assignments; locate alias initialization expression" + "description": "expand variadic tuple elements" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getDeclsForLocalVar", @@ -23087,427 +23283,442 @@ 980 ] }, - "description": "lookup declarations in local scope; restrict to function or module scope; validate declaration kinds and uniqueness; exclude declarations from different scopes; filter declarations reachable from node" + "description": "resolve local variable declarations; validate declaration scope consistency; filter reachable declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getTypeNarrowingCallbackForAssignmentExpression", - "name": "getTypeNarrowingCallbackForAssignmentExpression", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getTypeNarrowingCallbackForAssignmentExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getElementTypeForContainerNarrowing", + "name": "getElementTypeForContainerNarrowing", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getElementTypeForContainerNarrowing", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "getTypeNarrowingCallbackForAssignmentExpression", + "func_name": "getElementTypeForContainerNarrowing", "line_range": [ - 982, - 993 + 2224, + 2241 ] }, - "description": "derive narrowing callback from assignment; attempt narrowing from right-hand side; fallback to narrowing from target" + "description": "resolve container element type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForUserDefinedTypeGuard", - "name": "narrowTypeForUserDefinedTypeGuard", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForUserDefinedTypeGuard", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getInnermostNewTypeBaseInstance", + "name": "getInnermostNewTypeBaseInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getInnermostNewTypeBaseInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForUserDefinedTypeGuard", + "func_name": "getInnermostNewTypeBaseInstance", "line_range": [ - 995, - 1036 + 1088, + 1108 ] }, - "description": "apply user-defined type guard narrowing; narrow to guard type for non-strict; add condition for unconstrained typevar; narrow by instance or subclass for strict" + "description": "resolve innermost base instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTruthiness", - "name": "narrowTypeForTruthiness", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTruthiness", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getIsInstanceClassTypes", + "name": "getIsInstanceClassTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getIsInstanceClassTypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForTruthiness", + "func_name": "getIsInstanceClassTypes", "line_range": [ - 1039, - 1052 + 1279, + 1347 ] }, - "description": "narrow type based on truthiness; remove falsy subtypes on positive test; remove truthy subtypes on negative test" + "description": "extract instance check class types; validate instance check operands" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTupleTypeForIsNone", - "name": "narrowTupleTypeForIsNone", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTupleTypeForIsNone", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getTypeNarrowingCallback", + "name": "getTypeNarrowingCallback", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getTypeNarrowingCallback", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTupleTypeForIsNone", + "func_name": "getTypeNarrowingCallback", "line_range": [ - 1056, - 1082 + 117, + 861 ] }, - "description": "narrow tuple element types for is none; validate tuple index within bounds; exclude tuple subtype incompatible with none" + "description": "derive type narrowing callbacks; narrow none comparisons; narrow ellipsis comparisons; narrow type identity comparisons; narrow literal identity comparisons; narrow class identity comparisons; narrow containment tests; narrow runtime class checks; narrow boolean conversions; narrow user type guard calls; narrow truthiness tests; resolve aliased conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForIsNone", - "name": "narrowTypeForIsNone", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForIsNone", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getTypeNarrowingCallbackForAliasedCondition", + "name": "getTypeNarrowingCallbackForAliasedCondition", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getTypeNarrowingCallbackForAliasedCondition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForIsNone", + "func_name": "getTypeNarrowingCallbackForAliasedCondition", "line_range": [ - 1085, - 1159 + 863, + 927 ] }, - "description": "narrow type for is none checks; handle any and unknown specially; expand typevar constraints compatible with none; retain conditional none subtypes" + "description": "resolve aliased condition narrowing; validate local alias stability" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForIsEllipsis", - "name": "narrowTypeForIsEllipsis", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForIsEllipsis", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getTypeNarrowingCallbackForAssignmentExpression", + "name": "getTypeNarrowingCallbackForAssignmentExpression", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getTypeNarrowingCallbackForAssignmentExpression", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForIsEllipsis", + "func_name": "getTypeNarrowingCallbackForAssignmentExpression", "line_range": [ - 1162, - 1222 + 982, + 993 ] }, - "description": "narrow type for is ellipsis checks; treat any as matching both cases; use unexpanded unconstrained typevars; eliminate non-ellipsis subtypes on positive" + "description": "resolve assignment expression narrowing" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getIsInstanceClassTypes", - "name": "getIsInstanceClassTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getIsInstanceClassTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::intersectSameClassType", + "name": "intersectSameClassType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/intersectSameClassType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "getIsInstanceClassTypes", + "func_name": "intersectSameClassType", "line_range": [ - 1228, - 1296 + 2016, + 2029 ] }, - "description": "extract class types for isinstance argument; expand tuple class arguments recursively; normalize callables and built-in promotions; return undefined for invalid types" + "description": "intersect matching class types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForInstanceOrSubclass", - "name": "narrowTypeForInstanceOrSubclass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForInstanceOrSubclass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::intersectTupleTypes", + "name": "intersectTupleTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/intersectTupleTypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForInstanceOrSubclass", + "func_name": "intersectTupleTypes", "line_range": [ - 1298, - 1334 + 2031, + 2043 ] }, - "description": "narrow type for instance or subclass checks; attempt narrowing without then with intersections" + "description": "intersect tuple type constraints" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForInstanceOrSubclassInternal", - "name": "narrowTypeForInstanceOrSubclassInternal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForInstanceOrSubclassInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::isFilterSuperclass", + "name": "isFilterSuperclass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/isFilterSuperclass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForInstanceOrSubclassInternal", + "func_name": "isFilterSuperclass", "line_range": [ - 1336, - 1391 + 2706, + 2735 ] }, - "description": "perform internal narrowing for instance subclass checks; adjust subtypes for metaclass and type instances; convert instance results back to type form; delegate to instance narrowing logic" + "description": "detect superclass filter relationship; recognize typed dictionary compatibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForInstance", - "name": "narrowTypeForInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::isNameSameScope", + "name": "isNameSameScope", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/isNameSameScope", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForInstance", + "func_name": "isNameSameScope", "line_range": [ - 1397, - 1959 + 2852, + 2869 ] }, - "description": "narrow type for isinstance and issubclass; apply positive and negative type tests; convert type variables to free; preserve type variables for type is checks; filter class types by runtime checks; handle metaclass based narrowing; convert typed dicts to runtime dicts; narrow function and callable types; treat callback protocols as callables; handle module protocol narrowing; substitute any or unknown with candidates; combine and return narrowed types" + "description": "compare name binding scopes; detect nested scope containment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::intersectSameClassType", - "name": "intersectSameClassType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/intersectSameClassType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTupleTypeForIsNone", + "name": "narrowTupleTypeForIsNone", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTupleTypeForIsNone", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "intersectSameClassType", + "func_name": "narrowTupleTypeForIsNone", "line_range": [ - 1965, - 1978 + 1056, + 1082 ] }, - "description": "intersect same class types; apply tuple intersection logic" + "description": "narrow tuple entry by none" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::intersectTupleTypes", - "name": "intersectTupleTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/intersectTupleTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForClassComparison", + "name": "narrowTypeForClassComparison", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForClassComparison", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "intersectTupleTypes", + "func_name": "narrowTypeForClassComparison", "line_range": [ - 1980, - 1992 + 2636, + 2704 ] }, - "description": "intersect tuple types; preserve condition for unspecialized tuples" + "description": "narrow class identity comparison; preserve superclass possibilities; apply class type conditions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTupleLength", - "name": "narrowTypeForTupleLength", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTupleLength", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForContainerElementType", + "name": "narrowTypeForContainerElementType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForContainerElementType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForTupleLength", + "func_name": "narrowTypeForContainerElementType", "line_range": [ - 1995, - 2080 + 2243, + 2286 ] }, - "description": "narrow types by tuple length; expand unbounded tuple elements; limit tuple expansion union size" + "description": "narrow type by element type; eliminate incomparable element types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::expandUnboundedTupleElement", - "name": "expandUnboundedTupleElement", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/expandUnboundedTupleElement", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForContainerType", + "name": "narrowTypeForContainerType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForContainerType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "expandUnboundedTupleElement", + "func_name": "narrowTypeForContainerType", "line_range": [ - 2085, - 2103 + 2157, + 2222 ] }, - "description": "expand unbounded tuple element; repeat unbounded element types" + "description": "narrow type by container membership; exclude literal container values" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForContainerType", - "name": "narrowTypeForContainerType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForContainerType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedDictEntryComparison", + "name": "narrowTypeForDiscriminatedDictEntryComparison", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedDictEntryComparison", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForContainerType", + "func_name": "narrowTypeForDiscriminatedDictEntryComparison", "line_range": [ - 2106, - 2171 + 2372, + 2416 ] }, - "description": "narrow types by container membership; eliminate matching literal or none elements" + "description": "narrow typed dict by discriminator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getElementTypeForContainerNarrowing", - "name": "getElementTypeForContainerNarrowing", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/getElementTypeForContainerNarrowing", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedFieldNoneComparison", + "name": "narrowTypeForDiscriminatedFieldNoneComparison", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedFieldNoneComparison", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "getElementTypeForContainerNarrowing", + "func_name": "narrowTypeForDiscriminatedFieldNoneComparison", "line_range": [ - 2173, - 2190 + 2507, + 2571 ] }, - "description": "extract element type from container; combine tuple entries into element union" + "description": "narrow none field comparison; preserve descriptor member types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForContainerElementType", - "name": "narrowTypeForContainerElementType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForContainerElementType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedLiteralFieldComparison", + "name": "narrowTypeForDiscriminatedLiteralFieldComparison", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedLiteralFieldComparison", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForContainerElementType", + "func_name": "narrowTypeForDiscriminatedLiteralFieldComparison", "line_range": [ - 2192, - 2235 + 2458, + 2502 ] }, - "description": "narrow reference type by container element; eliminate incompatible reference subtypes; prefer literal element narrowing when assignable" + "description": "narrow type by literal field" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTypedDictKey", - "name": "narrowTypeForTypedDictKey", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTypedDictKey", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedTupleComparison", + "name": "narrowTypeForDiscriminatedTupleComparison", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedTupleComparison", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForTypedDictKey", + "func_name": "narrowTypeForDiscriminatedTupleComparison", "line_range": [ - 2239, - 2316 + 2418, + 2453 ] }, - "description": "narrow typed dict by key presence; mark typed dict key as provided; eliminate typed dicts missing key" + "description": "narrow tuple by discriminator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedDictEntryComparison", - "name": "narrowTypeForDiscriminatedDictEntryComparison", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedDictEntryComparison", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForInstance", + "name": "narrowTypeForInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForDiscriminatedDictEntryComparison", + "func_name": "narrowTypeForInstance", "line_range": [ - 2321, - 2365 + 1448, + 2010 ] }, - "description": "narrow typed dict by entry literal comparison; abort narrowing if non typed dict present" + "description": "narrow instance types by filters; preserve type variable bindings; detect class filter overlap; narrow callable instance types; narrow module protocol types; filter none instance types; substitute ambiguous instance types; apply negative filter fallback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedTupleComparison", - "name": "narrowTypeForDiscriminatedTupleComparison", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedTupleComparison", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForInstanceOrSubclass", + "name": "narrowTypeForInstanceOrSubclass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForInstanceOrSubclass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForDiscriminatedTupleComparison", + "func_name": "narrowTypeForInstanceOrSubclass", "line_range": [ - 2367, - 2402 + 1349, + 1385 ] }, - "description": "narrow tuple by indexed element literal; abort narrowing if non tuple present" + "description": "narrow instance or subclass type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedLiteralFieldComparison", - "name": "narrowTypeForDiscriminatedLiteralFieldComparison", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedLiteralFieldComparison", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForInstanceOrSubclassInternal", + "name": "narrowTypeForInstanceOrSubclassInternal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForInstanceOrSubclassInternal", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForDiscriminatedLiteralFieldComparison", + "func_name": "narrowTypeForInstanceOrSubclassInternal", "line_range": [ - 2407, - 2451 + 1387, + 1442 ] }, - "description": "narrow types by literal field comparison; use declared member or getter return type" + "description": "narrow instance or subclass type; adapt filters for metaclass checks; preserve class form after narrowing" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForDiscriminatedFieldNoneComparison", - "name": "narrowTypeForDiscriminatedFieldNoneComparison", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForDiscriminatedFieldNoneComparison", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForIsEllipsis", + "name": "narrowTypeForIsEllipsis", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForIsEllipsis", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForDiscriminatedFieldNoneComparison", + "func_name": "narrowTypeForIsEllipsis", "line_range": [ - 2456, - 2520 + 1201, + 1273 ] }, - "description": "narrow type for member none comparison; avoid narrowing for descriptor typed members; preserve subtype when declared type unresolved" + "description": "narrow type by ellipsis identity; preserve ellipsis wrapper identity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTypeIs", - "name": "narrowTypeForTypeIs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTypeIs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForIsNone", + "name": "narrowTypeForIsNone", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForIsNone", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForTypeIs", + "func_name": "narrowTypeForIsNone", "line_range": [ - 2523, - 2581 + 1111, + 1198 ] }, - "description": "narrow type by type identity comparison; apply class condition to matching instances; prevent negative narrowing for multiple classes" + "description": "narrow type by none identity; preserve none wrapper identity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForClassComparison", - "name": "narrowTypeForClassComparison", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForClassComparison", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForLiteralComparison", + "name": "narrowTypeForLiteralComparison", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForLiteralComparison", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForClassComparison", + "func_name": "narrowTypeForLiteralComparison", "line_range": [ - 2585, - 2653 + 2740, + 2807 ] }, - "description": "narrow type for class comparison; convert class object to instance for comparison; apply class conditions for subclass relationships; eliminate types when final class mismatches" + "description": "narrow literal value comparison; exclude unmatched literal values; preserve newtype literal matches" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::isFilterSuperclass", - "name": "isFilterSuperclass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/isFilterSuperclass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTruthiness", + "name": "narrowTypeForTruthiness", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTruthiness", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "isFilterSuperclass", + "func_name": "narrowTypeForTruthiness", "line_range": [ - 2655, - 2684 + 1039, + 1052 ] }, - "description": "determine superclass relationship for filter; avoid superclass inference when filter includes subclasses; treat typed dict as dict for isinstance" + "description": "narrow type by truthiness" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForLiteralComparison", - "name": "narrowTypeForLiteralComparison", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForLiteralComparison", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTupleLength", + "name": "narrowTypeForTupleLength", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTupleLength", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "narrowTypeForLiteralComparison", + "func_name": "narrowTypeForTupleLength", "line_range": [ - 2689, - 2751 + 2046, + 2131 ] }, - "description": "narrow type for literal comparison; enumerate literal types for negative tests; respect is versus equality operator semantics; eliminate nonmatching singleton literals when safe" + "description": "narrow tuple type by length; eliminate impossible tuple lengths" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::enumerateLiteralsForType", - "name": "enumerateLiteralsForType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/enumerateLiteralsForType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTypedDictKey", + "name": "narrowTypeForTypedDictKey", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTypedDictKey", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "enumerateLiteralsForType", + "func_name": "narrowTypeForTypedDictKey", "line_range": [ - 2753, - 2791 + 2290, + 2367 ] }, - "description": "enumerate literal variants for type; enumerate boolean literal values; enumerate enum member literal values; avoid expanding flag enums" + "description": "narrow typed dict by key; mark typed dict key present" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::isNameSameScope", - "name": "isNameSameScope", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/isNameSameScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForTypeIs", + "name": "narrowTypeForTypeIs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForTypeIs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", - "func_name": "isNameSameScope", + "func_name": "narrowTypeForTypeIs", + "line_range": [ + 2574, + 2632 + ] + }, + "description": "narrow type predicate result; preserve possible subclass matches; apply type conditions" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::narrowTypeForUserDefinedTypeGuard", + "name": "narrowTypeForUserDefinedTypeGuard", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeGuards.ts/narrowTypeForUserDefinedTypeGuard", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts", + "func_name": "narrowTypeForUserDefinedTypeGuard", "line_range": [ - 2796, - 2813 + 995, + 1036 ] }, - "description": "determine if name nodes share scope; treat unresolved lookups as same scope" + "description": "apply user defined type guard; narrow strict guard types" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::__file__", @@ -23525,49 +23736,64 @@ "description": "Produces human-readable string representations of Pyright type objects for diagnostics and display" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printType", - "name": "printType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::_printNestedInstantiable", + "name": "_printNestedInstantiable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/_printNestedInstantiable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printType", + "func_name": "_printNestedInstantiable", "line_range": [ - 106, - 115 + 1392, + 1400 ] }, - "description": "build unique name mapping; invoke return type callback; render type to string" + "description": "wrap text with nested type markers; repeat wrapping according to instantiable depth" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printFunctionParts", - "name": "printFunctionParts", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printFunctionParts", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::getPrintTypeFlags", + "name": "getPrintTypeFlags", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/getPrintTypeFlags", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printFunctionParts", + "func_name": "getPrintTypeFlags", "line_range": [ - 117, - 126 + 1576, + 1600 ] }, - "description": "build unique name mapping; format function signature parts; separate parameters and return type" + "description": "derive print flags from configuration; map diagnostic options to print flags; enable alternative union printing when configured" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printObjectTypeForClass", - "name": "printObjectTypeForClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printObjectTypeForClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::getReadableTypeVarName", + "name": "getReadableTypeVarName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/getReadableTypeVarName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printObjectTypeForClass", + "func_name": "getReadableTypeVarName", "line_range": [ - 128, - 137 + 1402, + 1404 ] }, - "description": "build unique name mapping; render class object type" + "description": "return readable type variable name; include scope in name when requested" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::getTypeVarVarianceText", + "name": "getTypeVarVarianceText", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/getTypeVarVarianceText", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", + "func_name": "getTypeVarVarianceText", + "line_range": [ + 1406, + 1421 + ] + }, + "description": "determine type variable variance; return textual variance description; fall back to declared variance when missing" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::isLiteralValueTruncated", @@ -23585,94 +23811,94 @@ "description": "detect truncated string literal" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printLiteralValueTruncated", - "name": "printLiteralValueTruncated", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printLiteralValueTruncated", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printFunctionParts", + "name": "printFunctionParts", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printFunctionParts", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printLiteralValueTruncated", + "func_name": "printFunctionParts", "line_range": [ - 151, - 158 + 117, + 126 ] }, - "description": "represent truncated literal as placeholder" + "description": "build unique name mapping; format function signature parts; separate parameters and return type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printLiteralValue", - "name": "printLiteralValue", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printLiteralValue", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printFunctionPartsInternal", + "name": "printFunctionPartsInternal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printFunctionPartsInternal", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printLiteralValue", + "func_name": "printFunctionPartsInternal", "line_range": [ - 160, - 194 + 1162, + 1384 ] }, - "description": "extract literal value from type; truncate long string literals; format string and bytes literals; format boolean and enum literals; format bigint and numeric literals; return literal string representation" + "description": "format function parameter list; format function return type; expand variadic args and kwargs; expand mapping kwargs into parameters; expand variadic tuple parameters; emit parameter default value text; suppress parameter names when synthesized; represent unknown param types when configured" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printTypeInternal", - "name": "printTypeInternal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printTypeInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printFunctionType", + "name": "printFunctionType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printFunctionType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printTypeInternal", + "func_name": "printFunctionType", "line_range": [ - 196, - 668 + 827, + 946 ] }, - "description": "print type representations; apply printing flags; respect python syntax; format type aliases; format generic type arguments; use unique alias names; detect recursive types; prevent recursive expansion; maintain recursion stack; include conditional indicator; wrap instantiable types; format class instances" + "description": "format function type; emit callable syntax for python; handle paramspec values specially; detect positional only parameters; use catch all callable for complex params; format signature as params arrow return; parenthesize callable when flagged; limit recursion depth for param types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printUnionType", - "name": "printUnionType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printUnionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printLiteralValue", + "name": "printLiteralValue", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printLiteralValue", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printUnionType", + "func_name": "printLiteralValue", "line_range": [ - 670, - 825 + 160, + 194 ] }, - "description": "format union type; prefer type alias representation; deduplicate union subtypes; group literal objects into literal; group literal classes into type literal; represent none as optional; use pipe syntax when enabled; parenthesize union when requested" + "description": "extract literal value from type; truncate long string literals; format string and bytes literals; format boolean and enum literals; format bigint and numeric literals; return literal string representation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printFunctionType", - "name": "printFunctionType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printFunctionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printLiteralValueTruncated", + "name": "printLiteralValueTruncated", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printLiteralValueTruncated", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printFunctionType", + "func_name": "printLiteralValueTruncated", "line_range": [ - 827, - 946 + 151, + 158 ] }, - "description": "format function type; emit callable syntax for python; handle paramspec values specially; detect positional only parameters; use catch all callable for complex params; format signature as params arrow return; parenthesize callable when flagged; limit recursion depth for param types" + "description": "represent truncated literal as placeholder" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printParamSpecValueForPythonSyntax", - "name": "printParamSpecValueForPythonSyntax", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printParamSpecValueForPythonSyntax", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printObjectTypeForClass", + "name": "printObjectTypeForClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printObjectTypeForClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printParamSpecValueForPythonSyntax", + "func_name": "printObjectTypeForClass", "line_range": [ - 948, - 987 + 128, + 137 ] }, - "description": "format paramspec value for python syntax; omit paramspec when args kwargs present; require simple parameter categories; collect named parameter types; limit recursion depth for parameters" + "description": "build unique name mapping; render class object type" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printObjectTypeForClassInternal", @@ -23690,79 +23916,79 @@ "description": "format class object type; prefer alias or fully qualified name; special case none type; use fully qualified name when not unique; skip type arguments for pseudo generic classes; format type arguments and parameters; expand typevar tuple mappings; represent empty tuple special case; print unpacked classes with unpack syntax; omit type args when unknown or flagged; wrap partial typeddict in partial" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printFunctionPartsInternal", - "name": "printFunctionPartsInternal", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printFunctionPartsInternal", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printParamSpecValueForPythonSyntax", + "name": "printParamSpecValueForPythonSyntax", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printParamSpecValueForPythonSyntax", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printFunctionPartsInternal", + "func_name": "printParamSpecValueForPythonSyntax", "line_range": [ - 1162, - 1384 + 948, + 987 ] }, - "description": "format function parameter list; format function return type; expand variadic args and kwargs; expand mapping kwargs into parameters; expand variadic tuple parameters; emit parameter default value text; suppress parameter names when synthesized; represent unknown param types when configured" + "description": "format paramspec value for python syntax; omit paramspec when args kwargs present; require simple parameter categories; collect named parameter types; limit recursion depth for parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printUnpack", - "name": "printUnpack", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printUnpack", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printType", + "name": "printType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "printUnpack", + "func_name": "printType", "line_range": [ - 1386, - 1388 + 106, + 115 ] }, - "description": "wrap text with unpack notation; choose unpack syntax based on flags" + "description": "build unique name mapping; invoke return type callback; render type to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::_printNestedInstantiable", - "name": "_printNestedInstantiable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/_printNestedInstantiable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printTypeInternal", + "name": "printTypeInternal", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printTypeInternal", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "_printNestedInstantiable", + "func_name": "printTypeInternal", "line_range": [ - 1392, - 1400 + 196, + 668 ] }, - "description": "wrap text with nested type markers; repeat wrapping according to instantiable depth" + "description": "print type representations; apply printing flags; respect python syntax; format type aliases; format generic type arguments; use unique alias names; detect recursive types; prevent recursive expansion; maintain recursion stack; include conditional indicator; wrap instantiable types; format class instances" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::getReadableTypeVarName", - "name": "getReadableTypeVarName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/getReadableTypeVarName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printUnionType", + "name": "printUnionType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printUnionType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "getReadableTypeVarName", + "func_name": "printUnionType", "line_range": [ - 1402, - 1404 + 670, + 825 ] }, - "description": "return readable type variable name; include scope in name when requested" + "description": "format union type; prefer type alias representation; deduplicate union subtypes; group literal objects into literal; group literal classes into type literal; represent none as optional; use pipe syntax when enabled; parenthesize union when requested" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::getTypeVarVarianceText", - "name": "getTypeVarVarianceText", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/getTypeVarVarianceText", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::printUnpack", + "name": "printUnpack", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/printUnpack", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "getTypeVarVarianceText", + "func_name": "printUnpack", "line_range": [ - 1406, - 1421 + 1386, + 1388 ] }, - "description": "determine type variable variance; return textual variance description; fall back to declared variance when missing" + "description": "wrap text with unpack notation; choose unpack syntax based on flags" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::UniqueNameMap", @@ -23779,38 +24005,6 @@ }, "description": "initialize unique name storage; store print type flags; store return type callback" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::UniqueNameMap.build", - "name": "UniqueNameMap.build", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/UniqueNameMap.build", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "build", - "line_range": [ - 1431, - 1537 - ], - "class_name": "UniqueNameMap" - }, - "description": "collect referenced type names; record type alias names; traverse function parameter types; traverse function return types; traverse class type arguments; traverse union subtypes; process overloaded function variants; guard against excessive recursion" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::UniqueNameMap.isUnique", - "name": "UniqueNameMap.isUnique", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/UniqueNameMap.isUnique", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "isUnique", - "line_range": [ - 1539, - 1542 - ], - "class_name": "UniqueNameMap" - }, - "description": "check name uniqueness" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::UniqueNameMap._addIfUnique", "name": "UniqueNameMap._addIfUnique", @@ -23844,19 +24038,36 @@ "description": "compare types for name equivalence; compare alias full names; compare class generic identity" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::getPrintTypeFlags", - "name": "getPrintTypeFlags", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/getPrintTypeFlags", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::UniqueNameMap.build", + "name": "UniqueNameMap.build", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/UniqueNameMap.build", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", - "func_name": "getPrintTypeFlags", + "func_name": "build", "line_range": [ - 1576, - 1600 - ] + 1431, + 1537 + ], + "class_name": "UniqueNameMap" }, - "description": "derive print flags from configuration; map diagnostic options to print flags; enable alternative union printing when configured" + "description": "collect referenced type names; record type alias names; traverse function parameter types; traverse function return types; traverse class type arguments; traverse union subtypes; process overloaded function variants; guard against excessive recursion" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts::UniqueNameMap.isUnique", + "name": "UniqueNameMap.isUnique", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinter.ts/UniqueNameMap.isUnique", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts", + "func_name": "isUnique", + "line_range": [ + 1539, + 1542 + ], + "class_name": "UniqueNameMap" + }, + "description": "check name uniqueness" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts::__file__", @@ -23874,34 +24085,34 @@ "description": "Formats and escapes string and bytes literals for the type printer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts::printStringLiteral", - "name": "printStringLiteral", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinterUtils.ts/printStringLiteral", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts::printBytesLiteral", + "name": "printBytesLiteral", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinterUtils.ts/printBytesLiteral", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts", - "func_name": "printStringLiteral", + "func_name": "printBytesLiteral", "line_range": [ - 13, - 25 + 27, + 49 ] }, - "description": "format string literal with chosen quotation; escape single quotes for single-quoted output; preserve double-quote escapes for double-quoted output; return final quoted string literal" + "description": "format bytes literal with byte indicator; render printable characters directly; escape double quotes in output; encode non-printable bytes as escape sequences; return quoted bytes literal" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts::printBytesLiteral", - "name": "printBytesLiteral", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinterUtils.ts/printBytesLiteral", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts::printStringLiteral", + "name": "printStringLiteral", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typePrinterUtils.ts/printStringLiteral", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts", - "func_name": "printBytesLiteral", + "func_name": "printStringLiteral", "line_range": [ - 27, - 49 + 13, + 25 ] }, - "description": "format bytes literal with byte indicator; render printable characters directly; escape double quotes in output; encode non-printable bytes as escape sequences; return quoted bytes literal" + "description": "format string literal with chosen quotation; escape single quotes for single-quoted output; preserve double-quote escapes for double-quoted output; return final quoted string literal" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::__file__", @@ -23918,6 +24129,36 @@ }, "description": "Represents and manipulates Python type abstractions used by the Pyright analyzer" }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::_addTypeIfUnique", + "name": "_addTypeIfUnique", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/_addTypeIfUnique", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", + "func_name": "_addTypeIfUnique", + "line_range": [ + 3882, + 3999 + ] + }, + "description": "add type to union if unique; deduplicate primitive literals using literal maps; collapse pseudo generic specializations to unknowns; elide redundant literal values when non literal exists; merge opposite boolean literals into bool; prefer wider typed dict when subset detected; skip empty container when non empty exists" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::combineTypes", + "name": "combineTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/combineTypes", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", + "func_name": "combineTypes", + "line_range": [ + 3744, + 3856 + ] + }, + "description": "filter out never types; prefer no return over never; handle single-type fast path; expand union types into members; preserve type alias information; sort literal and empty types last; elide redundant literal types; limit union subtype count; convert single-member union to type" + }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::EnumLiteral", "name": "EnumLiteral", @@ -23950,80 +24191,34 @@ "description": "construct fully qualified enum name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::SentinelLiteral", - "name": "SentinelLiteral", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/SentinelLiteral", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "SentinelLiteral", - "line_range": [ - 100, - 106 - ] - }, - "description": "store class full name; store class simple name" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::SentinelLiteral.getName", - "name": "SentinelLiteral.getName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/SentinelLiteral.getName", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "getName", - "line_range": [ - 103, - 105 - ], - "class_name": "SentinelLiteral" - }, - "description": "return stored class name" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isPositionOnlySeparator", - "name": "isPositionOnlySeparator", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isPositionOnlySeparator", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isPositionOnlySeparator", - "line_range": [ - 1566, - 1569 - ] - }, - "description": "identify position only separator" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isKeywordOnlySeparator", - "name": "isKeywordOnlySeparator", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isKeywordOnlySeparator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::findSubtype", + "name": "findSubtype", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/findSubtype", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isKeywordOnlySeparator", + "func_name": "findSubtype", "line_range": [ - 1571, - 1574 + 3720, + 3728 ] }, - "description": "identify keyword only separator" + "description": "find subtype by filter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isNever", - "name": "isNever", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isNever", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::getTypeAliasInfo", + "name": "getTypeAliasInfo", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/getTypeAliasInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isNever", + "func_name": "getTypeAliasInfo", "line_range": [ - 3167, - 3169 + 3297, + 3312 ] }, - "description": "detect never type" + "description": "retrieve type alias info" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isAny", @@ -24040,21 +24235,6 @@ }, "description": "detect any type" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnknown", - "name": "isUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnknown", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnknown", - "line_range": [ - 3175, - 3177 - ] - }, - "description": "detect unknown type" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isAnyOrUnknown", "name": "isAnyOrUnknown", @@ -24071,64 +24251,64 @@ "description": "detect any or unknown type including unions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnbound", - "name": "isUnbound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnbound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isClass", + "name": "isClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnbound", + "func_name": "isClass", "line_range": [ - 3191, - 3193 + 3211, + 3213 ] }, - "description": "detect unbound type" + "description": "identify class type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnion", - "name": "isUnion", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isClassInstance", + "name": "isClassInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isClassInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnion", + "func_name": "isClassInstance", "line_range": [ - 3195, - 3197 + 3219, + 3221 ] }, - "description": "detect union type" + "description": "identify class instance type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isPossiblyUnbound", - "name": "isPossiblyUnbound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isPossiblyUnbound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isFunction", + "name": "isFunction", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isFunction", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isPossiblyUnbound", + "func_name": "isFunction", "line_range": [ - 3199, - 3209 + 3259, + 3261 ] }, - "description": "detect possibly unbound type including unions" + "description": "identify function type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isClass", - "name": "isClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isFunctionOrOverloaded", + "name": "isFunctionOrOverloaded", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isFunctionOrOverloaded", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isClass", + "func_name": "isFunctionOrOverloaded", "line_range": [ - 3211, - 3213 + 3267, + 3269 ] }, - "description": "identify class type" + "description": "detect function or overloaded type" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isInstantiableClass", @@ -24146,19 +24326,34 @@ "description": "identify instantiable class type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isClassInstance", - "name": "isClassInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isClassInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isKeywordOnlySeparator", + "name": "isKeywordOnlySeparator", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isKeywordOnlySeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isClassInstance", + "func_name": "isKeywordOnlySeparator", "line_range": [ - 3219, - 3221 + 1571, + 1574 ] }, - "description": "identify class instance type" + "description": "identify keyword only separator" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isMethodType", + "name": "isMethodType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isMethodType", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", + "func_name": "isMethodType", + "line_range": [ + 3271, + 3295 + ] + }, + "description": "identify bound method type" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isModule", @@ -24176,19 +24371,34 @@ "description": "identify module type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isTypeVar", - "name": "isTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isNever", + "name": "isNever", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isNever", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isTypeVar", + "func_name": "isNever", "line_range": [ - 3227, - 3229 + 3167, + 3169 ] }, - "description": "identify type variable" + "description": "detect never type" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isOverloaded", + "name": "isOverloaded", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isOverloaded", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", + "func_name": "isOverloaded", + "line_range": [ + 3263, + 3265 + ] + }, + "description": "identify overloaded function type" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isParamSpec", @@ -24206,199 +24416,199 @@ "description": "identify param spec type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isTypeVarTuple", - "name": "isTypeVarTuple", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isTypeVarTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isPositionOnlySeparator", + "name": "isPositionOnlySeparator", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isPositionOnlySeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isTypeVarTuple", + "func_name": "isPositionOnlySeparator", "line_range": [ - 3235, - 3237 + 1566, + 1569 ] }, - "description": "identify typevar tuple type" + "description": "identify position only separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpackedTypeVarTuple", - "name": "isUnpackedTypeVarTuple", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpackedTypeVarTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isPossiblyUnbound", + "name": "isPossiblyUnbound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isPossiblyUnbound", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnpackedTypeVarTuple", + "func_name": "isPossiblyUnbound", "line_range": [ - 3239, - 3241 + 3199, + 3209 ] }, - "description": "identify unpacked typevar tuple" + "description": "detect possibly unbound type including unions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpackedTypeVar", - "name": "isUnpackedTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpackedTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isSameWithoutLiteralValue", + "name": "isSameWithoutLiteralValue", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isSameWithoutLiteralValue", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnpackedTypeVar", + "func_name": "isSameWithoutLiteralValue", "line_range": [ - 3243, - 3245 + 3861, + 3880 ] }, - "description": "identify unpacked typevar" + "description": "compare types ignoring literal values; strip literal values before comparison; ignore instance conditions during comparison" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpackedClass", - "name": "isUnpackedClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpackedClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isTypeSame", + "name": "isTypeSame", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isTypeSame", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnpackedClass", + "func_name": "isTypeSame", "line_range": [ - 3247, - 3253 + 3317, + 3681 ] }, - "description": "detect unpacked class type" + "description": "determine type equivalence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpacked", - "name": "isUnpacked", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpacked", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isTypeVar", + "name": "isTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isUnpacked", + "func_name": "isTypeVar", "line_range": [ - 3255, - 3257 + 3227, + 3229 ] }, - "description": "detect unpacked type" + "description": "identify type variable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isFunction", - "name": "isFunction", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isTypeVarTuple", + "name": "isTypeVarTuple", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isTypeVarTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isFunction", + "func_name": "isTypeVarTuple", "line_range": [ - 3259, - 3261 + 3235, + 3237 ] }, - "description": "identify function type" + "description": "identify typevar tuple type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isOverloaded", - "name": "isOverloaded", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isOverloaded", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnbound", + "name": "isUnbound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnbound", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isOverloaded", + "func_name": "isUnbound", "line_range": [ - 3263, - 3265 + 3191, + 3193 ] }, - "description": "identify overloaded function type" + "description": "detect unbound type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isFunctionOrOverloaded", - "name": "isFunctionOrOverloaded", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isFunctionOrOverloaded", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnion", + "name": "isUnion", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isFunctionOrOverloaded", + "func_name": "isUnion", "line_range": [ - 3267, - 3269 + 3195, + 3197 ] }, - "description": "detect function or overloaded type" + "description": "detect union type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isMethodType", - "name": "isMethodType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isMethodType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnknown", + "name": "isUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isMethodType", + "func_name": "isUnknown", "line_range": [ - 3271, - 3295 + 3175, + 3177 ] }, - "description": "identify bound method type" + "description": "detect unknown type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::getTypeAliasInfo", - "name": "getTypeAliasInfo", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/getTypeAliasInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpacked", + "name": "isUnpacked", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpacked", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "getTypeAliasInfo", + "func_name": "isUnpacked", "line_range": [ - 3297, - 3312 + 3255, + 3257 ] }, - "description": "retrieve type alias info" + "description": "detect unpacked type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isTypeSame", - "name": "isTypeSame", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isTypeSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpackedClass", + "name": "isUnpackedClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpackedClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isTypeSame", + "func_name": "isUnpackedClass", "line_range": [ - 3317, - 3681 + 3247, + 3253 ] }, - "description": "determine type equivalence" + "description": "detect unpacked class type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::removeUnknownFromUnion", - "name": "removeUnknownFromUnion", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/removeUnknownFromUnion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpackedTypeVar", + "name": "isUnpackedTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpackedTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "removeUnknownFromUnion", + "func_name": "isUnpackedTypeVar", "line_range": [ - 3685, - 3687 + 3243, + 3245 ] }, - "description": "remove unknown from union" + "description": "identify unpacked typevar" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::removeUnbound", - "name": "removeUnbound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/removeUnbound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isUnpackedTypeVarTuple", + "name": "isUnpackedTypeVarTuple", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isUnpackedTypeVarTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "removeUnbound", + "func_name": "isUnpackedTypeVarTuple", "line_range": [ - 3691, - 3701 + 3239, + 3241 ] }, - "description": "remove unbound type" + "description": "identify unpacked typevar tuple" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::removeFromUnion", @@ -24416,64 +24626,65 @@ "description": "remove types from union" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::findSubtype", - "name": "findSubtype", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/findSubtype", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::removeUnbound", + "name": "removeUnbound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/removeUnbound", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "findSubtype", + "func_name": "removeUnbound", "line_range": [ - 3720, - 3728 + 3691, + 3701 ] }, - "description": "find subtype by filter" + "description": "remove unbound type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::combineTypes", - "name": "combineTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/combineTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::removeUnknownFromUnion", + "name": "removeUnknownFromUnion", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/removeUnknownFromUnion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "combineTypes", + "func_name": "removeUnknownFromUnion", "line_range": [ - 3744, - 3856 + 3685, + 3687 ] }, - "description": "filter out never types; prefer no return over never; handle single-type fast path; expand union types into members; preserve type alias information; sort literal and empty types last; elide redundant literal types; limit union subtype count; convert single-member union to type" + "description": "remove unknown from union" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::isSameWithoutLiteralValue", - "name": "isSameWithoutLiteralValue", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/isSameWithoutLiteralValue", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::SentinelLiteral", + "name": "SentinelLiteral", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/SentinelLiteral", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "isSameWithoutLiteralValue", + "func_name": "SentinelLiteral", "line_range": [ - 3861, - 3880 + 100, + 106 ] }, - "description": "compare types ignoring literal values; strip literal values before comparison; ignore instance conditions during comparison" + "description": "store class full name; store class simple name" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::_addTypeIfUnique", - "name": "_addTypeIfUnique", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/_addTypeIfUnique", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts::SentinelLiteral.getName", + "name": "SentinelLiteral.getName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/types.ts/SentinelLiteral.getName", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/types.ts", - "func_name": "_addTypeIfUnique", + "func_name": "getName", "line_range": [ - 3882, - 3999 - ] + 103, + 105 + ], + "class_name": "SentinelLiteral" }, - "description": "add type to union if unique; deduplicate primitive literals using literal maps; collapse pseudo generic specializations to unknowns; elide redundant literal values when non literal exists; merge opposite boolean literals into bool; prefer wider typed dict when subset detected; skip empty container when non empty exists" + "description": "return stored class name" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::__file__", @@ -24521,36 +24732,36 @@ "description": "initialize typeshed caches; store filesystem reference" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getTypeshedRoot", - "name": "DefaultTypeshedInfoProvider.getTypeshedRoot", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider.getTypeshedRoot", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider._computeTypeshedRoot", + "name": "DefaultTypeshedInfoProvider._computeTypeshedRoot", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider._computeTypeshedRoot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts", - "func_name": "getTypeshedRoot", + "func_name": "_computeTypeshedRoot", "line_range": [ - 34, - 44 + 241, + 251 ], "class_name": "DefaultTypeshedInfoProvider" }, - "description": "return typeshed root path; compute and cache typeshed root" + "description": "resolve effective typeshed root path; use fallback typeshed path when missing" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getTypeshedSubdirectory", - "name": "DefaultTypeshedInfoProvider.getTypeshedSubdirectory", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider.getTypeshedSubdirectory", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getStdLibModuleVersionInfo", + "name": "DefaultTypeshedInfoProvider.getStdLibModuleVersionInfo", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider.getStdLibModuleVersionInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts", - "func_name": "getTypeshedSubdirectory", + "func_name": "getStdLibModuleVersionInfo", "line_range": [ - 46, - 71 + 133, + 239 ], "class_name": "DefaultTypeshedInfoProvider" }, - "description": "compute typeshed subdirectory path; verify subdirectory exists; cache subdirectory lookup results" + "description": "read stdlib version metadata; parse module version ranges; extract platform support information; cache stdlib version info" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getThirdPartyPackageMap", @@ -24569,36 +24780,36 @@ "description": "enumerate third party package directories; map third party package names to paths; produce sorted unique package path list; cache third party package map" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getStdLibModuleVersionInfo", - "name": "DefaultTypeshedInfoProvider.getStdLibModuleVersionInfo", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider.getStdLibModuleVersionInfo", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getTypeshedRoot", + "name": "DefaultTypeshedInfoProvider.getTypeshedRoot", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider.getTypeshedRoot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts", - "func_name": "getStdLibModuleVersionInfo", + "func_name": "getTypeshedRoot", "line_range": [ - 133, - 239 + 34, + 44 ], "class_name": "DefaultTypeshedInfoProvider" }, - "description": "read stdlib version metadata; parse module version ranges; extract platform support information; cache stdlib version info" + "description": "return typeshed root path; compute and cache typeshed root" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider._computeTypeshedRoot", - "name": "DefaultTypeshedInfoProvider._computeTypeshedRoot", - "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider._computeTypeshedRoot", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts::DefaultTypeshedInfoProvider.getTypeshedSubdirectory", + "name": "DefaultTypeshedInfoProvider.getTypeshedSubdirectory", + "feature_path": "pyright-whole-repo/ImportResolution/Resolve imports/packages and stubs/typeshedInfoProvider.ts/DefaultTypeshedInfoProvider.getTypeshedSubdirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts", - "func_name": "_computeTypeshedRoot", + "func_name": "getTypeshedSubdirectory", "line_range": [ - 241, - 251 + 46, + 71 ], "class_name": "DefaultTypeshedInfoProvider" }, - "description": "resolve effective typeshed root path; use fallback typeshed path when missing" + "description": "compute typeshed subdirectory path; verify subdirectory exists; cache subdirectory lookup results" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::__file__", @@ -24616,80 +24827,35 @@ "description": "Emit Python .pyi type stub files from parsed and analyzed Python source files" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImport", - "name": "TrackedImport", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImport", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker", + "name": "ImportSymbolWalker", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "TrackedImport", + "func_name": "ImportSymbolWalker", "line_range": [ - 67, - 71 + 105, + 159 ] }, - "description": "store import name; initialize access flag to false" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImportAs", - "name": "TrackedImportAs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImportAs", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "TrackedImportAs", - "line_range": [ - 73, - 77 - ] - }, - "description": "record import name and alias; associate symbol with tracked import" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImportFrom", - "name": "TrackedImportFrom", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImportFrom", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "TrackedImportFrom", - "line_range": [ - 86, - 103 - ] - }, - "description": "initialize tracked import metadata; record wildcard import flag; associate optional import node" + "description": "store accessed symbols set; set treat strings flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImportFrom.addSymbol", - "name": "TrackedImportFrom.addSymbol", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImportFrom.addSymbol", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker._getRecursiveModuleAccessExpression", + "name": "ImportSymbolWalker._getRecursiveModuleAccessExpression", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker._getRecursiveModuleAccessExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "addSymbol", + "func_name": "_getRecursiveModuleAccessExpression", "line_range": [ - 93, - 102 + 143, + 158 ], - "class_name": "TrackedImportFrom" - }, - "description": "add tracked import symbol; prevent duplicate symbol entries; store symbol alias and access status; associate symbol with source import" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker", - "name": "ImportSymbolWalker", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "ImportSymbolWalker", - "line_range": [ - 105, - 159 - ] + "class_name": "ImportSymbolWalker" }, - "description": "store accessed symbols set; set treat strings flag" + "description": "extract base name or member chain; return qualified module name string" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.analyze", @@ -24708,20 +24874,20 @@ "description": "analyze expression node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.walk", - "name": "ImportSymbolWalker.walk", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker.walk", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.visitMemberAccess", + "name": "ImportSymbolWalker.visitMemberAccess", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker.visitMemberAccess", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "walk", + "func_name": "visitMemberAccess", "line_range": [ - 114, - 118 + 125, + 133 ], "class_name": "ImportSymbolWalker" }, - "description": "skip unreachable nodes; traverse parse tree" + "description": "resolve base module expression; add member to accessed symbols" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.visitName", @@ -24739,22 +24905,6 @@ }, "description": "add name to accessed symbols" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.visitMemberAccess", - "name": "ImportSymbolWalker.visitMemberAccess", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker.visitMemberAccess", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitMemberAccess", - "line_range": [ - 125, - 133 - ], - "class_name": "ImportSymbolWalker" - }, - "description": "resolve base module expression; add member to accessed symbols" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.visitString", "name": "ImportSymbolWalker.visitString", @@ -24772,83 +24922,81 @@ "description": "conditionally record string literal symbol" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker._getRecursiveModuleAccessExpression", - "name": "ImportSymbolWalker._getRecursiveModuleAccessExpression", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker._getRecursiveModuleAccessExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::ImportSymbolWalker.walk", + "name": "ImportSymbolWalker.walk", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/ImportSymbolWalker.walk", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_getRecursiveModuleAccessExpression", + "func_name": "walk", "line_range": [ - 143, - 158 + 114, + 118 ], "class_name": "ImportSymbolWalker" }, - "description": "extract base name or member chain; return qualified module name string" + "description": "skip unreachable nodes; traverse parse tree" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter", - "name": "TypeStubWriter", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImport", + "name": "TrackedImport", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImport", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "TypeStubWriter", + "func_name": "TrackedImport", "line_range": [ - 161, - 258 + 67, + 71 ] }, - "description": "store program view reference" + "description": "store import name; initialize access flag to false" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter.writeTypeStub", - "name": "TypeStubWriter.writeTypeStub", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter.writeTypeStub", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImportAs", + "name": "TrackedImportAs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImportAs", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "writeTypeStub", + "func_name": "TrackedImportAs", "line_range": [ - 164, - 190 - ], - "class_name": "TypeStubWriter" + 73, + 77 + ] }, - "description": "ensure type stub output path; write type stub files for target import; write stub for single file target; iterate matching source files; abort on cancellation request" + "description": "record import name and alias; associate symbol with tracked import" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter._writeTypeStubForSourceFile", - "name": "TypeStubWriter._writeTypeStubForSourceFile", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter._writeTypeStubForSourceFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImportFrom", + "name": "TrackedImportFrom", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImportFrom", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_writeTypeStubForSourceFile", + "func_name": "TrackedImportFrom", "line_range": [ - 192, - 232 - ], - "class_name": "TypeStubWriter" + 86, + 103 + ] }, - "description": "abort on cancellation request; analyze source file for stubs; compute stub output path; create stub output directories; ensure parse results available; ensure type evaluator available; write type stub files; trigger memory usage mitigation" + "description": "initialize tracked import metadata; record wildcard import flag; associate optional import node" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter._ensureTypeStubOutputPath", - "name": "TypeStubWriter._ensureTypeStubOutputPath", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter._ensureTypeStubOutputPath", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TrackedImportFrom.addSymbol", + "name": "TrackedImportFrom.addSymbol", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TrackedImportFrom.addSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_ensureTypeStubOutputPath", + "func_name": "addSymbol", "line_range": [ - 234, - 257 + 93, + 102 ], - "class_name": "TypeStubWriter" + "class_name": "TrackedImportFrom" }, - "description": "create stub root directory if missing; create output subdirectory if missing; report directory creation failures" + "description": "add tracked import symbol; prevent duplicate symbol entries; store symbol alias and access status; associate symbol with source import" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker", @@ -24866,164 +25014,196 @@ "description": "initialize writer with parse context; enable full imports for package init" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.write", - "name": "TypeStubTreeWalker.write", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.write", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._emitDecorators", + "name": "TypeStubTreeWalker._emitDecorators", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._emitDecorators", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "write", + "func_name": "_emitDecorators", "line_range": [ - 298, - 305 + 733, + 737 ], "class_name": "TypeStubTreeWalker" }, - "description": "configure line endings and tabs; generate stub content from parse tree; write final stub file to disk" + "description": "emit decorator lines for declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.walk", - "name": "TypeStubTreeWalker.walk", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.walk", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._emitLine", + "name": "TypeStubTreeWalker._emitLine", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._emitLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "walk", + "func_name": "_emitLine", "line_range": [ - 307, - 311 + 751, + 757 ], "class_name": "TypeStubTreeWalker" }, - "description": "walk parse tree excluding unreachable code" + "description": "append indented line to output buffer" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitClass", - "name": "TypeStubTreeWalker.visitClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._emitSuite", + "name": "TypeStubTreeWalker._emitSuite", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._emitSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitClass", + "func_name": "_emitSuite", "line_range": [ - 313, - 359 + 712, + 725 ], "class_name": "TypeStubTreeWalker" }, - "description": "emit class declaration with bases; emit class decorators; emit class body placeholder; include class type parameters" + "description": "emit indented suite or ellipsis placeholder" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitFunction", - "name": "TypeStubTreeWalker.visitFunction", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._increaseIndent", + "name": "TypeStubTreeWalker._increaseIndent", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._increaseIndent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitFunction", + "func_name": "_increaseIndent", "line_range": [ - 361, - 435 + 727, + 731 ], "class_name": "TypeStubTreeWalker" }, - "description": "emit function declaration with signature; emit function decorators; include function type parameters; emit inferred return annotation comment; suppress nested function emission" + "description": "adjust indentation for nested blocks" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitWhile", - "name": "TypeStubTreeWalker.visitWhile", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitWhile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printExpression", + "name": "TypeStubTreeWalker._printExpression", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitWhile", + "func_name": "_printExpression", "line_range": [ - 437, - 441 + 833, + 843 ], "class_name": "TypeStubTreeWalker" }, - "description": "suppress docstring emission after loop" + "description": "format expressions for stub output; track accessed imported symbols in expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitFor", - "name": "TypeStubTreeWalker.visitFor", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitFor", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printHeaderDocString", + "name": "TypeStubTreeWalker._printHeaderDocString", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printHeaderDocString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitFor", + "func_name": "_printHeaderDocString", "line_range": [ - 443, - 447 + 739, + 749 ], "class_name": "TypeStubTreeWalker" }, - "description": "suppress docstring emission after loop" + "description": "generate standard header docstring" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitTry", - "name": "TypeStubTreeWalker.visitTry", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitTry", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printModuleName", + "name": "TypeStubTreeWalker._printModuleName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitTry", + "func_name": "_printModuleName", "line_range": [ - 449, - 456 + 787, + 794 ], "class_name": "TypeStubTreeWalker" }, - "description": "suppress docstring emission after try; collect imports from try suite" + "description": "format module name with leading dots" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitWith", - "name": "TypeStubTreeWalker.visitWith", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitWith", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printParam", + "name": "TypeStubTreeWalker._printParam", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printParam", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitWith", + "func_name": "_printParam", "line_range": [ - 458, - 462 + 796, + 831 ], "class_name": "TypeStubTreeWalker" }, - "description": "suppress docstring emission after with" + "description": "serialize parameter declaration with type and default" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitIf", - "name": "TypeStubTreeWalker.visitIf", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitIf", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printTrackedImports", + "name": "TypeStubTreeWalker._printTrackedImports", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printTrackedImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitIf", + "func_name": "_printTrackedImports", "line_range": [ - 464, - 493 + 845, + 915 ], "class_name": "TypeStubTreeWalker" }, - "description": "suppress docstring emission after conditional; emit top level conditional guard; emit else branch stubs" + "description": "emit import statements for accessed symbols; emit from import statements for accessed symbols; exclude future imports from emitted stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitTypeAlias", - "name": "TypeStubTreeWalker.visitTypeAlias", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printTypeParam", + "name": "TypeStubTreeWalker._printTypeParam", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printTypeParam", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitTypeAlias", + "func_name": "_printTypeParam", "line_range": [ - 495, - 508 + 763, + 785 ], "class_name": "TypeStubTreeWalker" }, - "description": "emit type alias declaration" + "description": "format individual type parameter" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printTypeParams", + "name": "TypeStubTreeWalker._printTypeParams", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printTypeParams", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", + "func_name": "_printTypeParams", + "line_range": [ + 759, + 761 + ], + "class_name": "TypeStubTreeWalker" + }, + "description": "format type parameter list" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._writeFile", + "name": "TypeStubTreeWalker._writeFile", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._writeFile", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", + "func_name": "_writeFile", + "line_range": [ + 917, + 923 + ], + "class_name": "TypeStubTreeWalker" + }, + "description": "persist final stub content to filesystem" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitAssignment", @@ -25058,20 +25238,68 @@ "description": "emit augmented assignment stub; suppress docstring emission after augmented assignment" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitTypeAnnotation", - "name": "TypeStubTreeWalker.visitTypeAnnotation", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitClass", + "name": "TypeStubTreeWalker.visitClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "visitTypeAnnotation", + "func_name": "visitClass", "line_range": [ - 606, - 630 + 313, + 359 ], "class_name": "TypeStubTreeWalker" }, - "description": "emit variable type annotations" + "description": "emit class declaration with bases; emit class decorators; emit class body placeholder; include class type parameters" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitFor", + "name": "TypeStubTreeWalker.visitFor", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitFor", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", + "func_name": "visitFor", + "line_range": [ + 443, + 447 + ], + "class_name": "TypeStubTreeWalker" + }, + "description": "suppress docstring emission after loop" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitFunction", + "name": "TypeStubTreeWalker.visitFunction", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitFunction", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", + "func_name": "visitFunction", + "line_range": [ + 361, + 435 + ], + "class_name": "TypeStubTreeWalker" + }, + "description": "emit function declaration with signature; emit function decorators; include function type parameters; emit inferred return annotation comment; suppress nested function emission" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitIf", + "name": "TypeStubTreeWalker.visitIf", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitIf", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", + "func_name": "visitIf", + "line_range": [ + 464, + 493 + ], + "class_name": "TypeStubTreeWalker" + }, + "description": "suppress docstring emission after conditional; emit top level conditional guard; emit else branch stubs" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitImport", @@ -25122,196 +25350,179 @@ "description": "emit module docstring when present; reset docstring emission after first statement; walk contained statements for stubs" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._emitSuite", - "name": "TypeStubTreeWalker._emitSuite", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._emitSuite", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitTry", + "name": "TypeStubTreeWalker.visitTry", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitTry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_emitSuite", + "func_name": "visitTry", "line_range": [ - 712, - 725 + 449, + 456 ], "class_name": "TypeStubTreeWalker" }, - "description": "emit indented suite or ellipsis placeholder" + "description": "suppress docstring emission after try; collect imports from try suite" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._increaseIndent", - "name": "TypeStubTreeWalker._increaseIndent", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._increaseIndent", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitTypeAlias", + "name": "TypeStubTreeWalker.visitTypeAlias", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitTypeAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_increaseIndent", + "func_name": "visitTypeAlias", "line_range": [ - 727, - 731 + 495, + 508 ], "class_name": "TypeStubTreeWalker" }, - "description": "adjust indentation for nested blocks" + "description": "emit type alias declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._emitDecorators", - "name": "TypeStubTreeWalker._emitDecorators", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._emitDecorators", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitTypeAnnotation", + "name": "TypeStubTreeWalker.visitTypeAnnotation", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitTypeAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_emitDecorators", + "func_name": "visitTypeAnnotation", "line_range": [ - 733, - 737 + 606, + 630 ], "class_name": "TypeStubTreeWalker" }, - "description": "emit decorator lines for declarations" + "description": "emit variable type annotations" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printHeaderDocString", - "name": "TypeStubTreeWalker._printHeaderDocString", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printHeaderDocString", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitWhile", + "name": "TypeStubTreeWalker.visitWhile", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitWhile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printHeaderDocString", + "func_name": "visitWhile", "line_range": [ - 739, - 749 + 437, + 441 ], "class_name": "TypeStubTreeWalker" }, - "description": "generate standard header docstring" + "description": "suppress docstring emission after loop" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._emitLine", - "name": "TypeStubTreeWalker._emitLine", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._emitLine", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.visitWith", + "name": "TypeStubTreeWalker.visitWith", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.visitWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_emitLine", + "func_name": "visitWith", "line_range": [ - 751, - 757 + 458, + 462 ], "class_name": "TypeStubTreeWalker" }, - "description": "append indented line to output buffer" + "description": "suppress docstring emission after with" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printTypeParams", - "name": "TypeStubTreeWalker._printTypeParams", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printTypeParams", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.walk", + "name": "TypeStubTreeWalker.walk", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.walk", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printTypeParams", + "func_name": "walk", "line_range": [ - 759, - 761 + 307, + 311 ], "class_name": "TypeStubTreeWalker" }, - "description": "format type parameter list" + "description": "walk parse tree excluding unreachable code" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printTypeParam", - "name": "TypeStubTreeWalker._printTypeParam", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printTypeParam", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker.write", + "name": "TypeStubTreeWalker.write", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker.write", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printTypeParam", + "func_name": "write", "line_range": [ - 763, - 785 + 298, + 305 ], "class_name": "TypeStubTreeWalker" }, - "description": "format individual type parameter" + "description": "configure line endings and tabs; generate stub content from parse tree; write final stub file to disk" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printModuleName", - "name": "TypeStubTreeWalker._printModuleName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printModuleName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter", + "name": "TypeStubWriter", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printModuleName", - "line_range": [ - 787, - 794 - ], - "class_name": "TypeStubTreeWalker" - }, - "description": "format module name with leading dots" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printParam", - "name": "TypeStubTreeWalker._printParam", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printParam", - "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printParam", + "func_name": "TypeStubWriter", "line_range": [ - 796, - 831 - ], - "class_name": "TypeStubTreeWalker" + 161, + 258 + ] }, - "description": "serialize parameter declaration with type and default" + "description": "store program view reference" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printExpression", - "name": "TypeStubTreeWalker._printExpression", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printExpression", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter._ensureTypeStubOutputPath", + "name": "TypeStubWriter._ensureTypeStubOutputPath", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter._ensureTypeStubOutputPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printExpression", + "func_name": "_ensureTypeStubOutputPath", "line_range": [ - 833, - 843 + 234, + 257 ], - "class_name": "TypeStubTreeWalker" + "class_name": "TypeStubWriter" }, - "description": "format expressions for stub output; track accessed imported symbols in expressions" + "description": "create stub root directory if missing; create output subdirectory if missing; report directory creation failures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._printTrackedImports", - "name": "TypeStubTreeWalker._printTrackedImports", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._printTrackedImports", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter._writeTypeStubForSourceFile", + "name": "TypeStubWriter._writeTypeStubForSourceFile", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter._writeTypeStubForSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_printTrackedImports", + "func_name": "_writeTypeStubForSourceFile", "line_range": [ - 845, - 915 + 192, + 232 ], - "class_name": "TypeStubTreeWalker" + "class_name": "TypeStubWriter" }, - "description": "emit import statements for accessed symbols; emit from import statements for accessed symbols; exclude future imports from emitted stubs" + "description": "abort on cancellation request; analyze source file for stubs; compute stub output path; create stub output directories; ensure parse results available; ensure type evaluator available; write type stub files; trigger memory usage mitigation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubTreeWalker._writeFile", - "name": "TypeStubTreeWalker._writeFile", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubTreeWalker._writeFile", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts::TypeStubWriter.writeTypeStub", + "name": "TypeStubWriter.writeTypeStub", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeStubWriter.ts/TypeStubWriter.writeTypeStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts", - "func_name": "_writeFile", + "func_name": "writeTypeStub", "line_range": [ - 917, - 923 + 164, + 190 ], - "class_name": "TypeStubTreeWalker" + "class_name": "TypeStubWriter" }, - "description": "persist final stub content to filesystem" + "description": "ensure type stub output path; write type stub files for target import; write stub for single file target; iterate matching source files; abort on cancellation request" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::__file__", @@ -25329,1553 +25540,1577 @@ "description": "Utilities and transformers for analyzing and manipulating Type objects used by the type checker" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker", - "name": "UniqueSignatureTracker", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::_expandUnpackedTypeVarTupleUnion", + "name": "_expandUnpackedTypeVarTupleUnion", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/_expandUnpackedTypeVarTupleUnion", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "UniqueSignatureTracker", + "func_name": "_expandUnpackedTypeVarTupleUnion", "line_range": [ - 248, - 292 + 2863, + 2869 ] }, - "description": "initialize tracked signatures" + "description": "expand unpacked typevar tuple unions; return original type when not applicable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.getTrackedSignatures", - "name": "UniqueSignatureTracker.getTrackedSignatures", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.getTrackedSignatures", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::_requiresSpecialization", + "name": "_requiresSpecialization", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/_requiresSpecialization", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getTrackedSignatures", + "func_name": "_requiresSpecialization", "line_range": [ - 255, - 257 - ], - "class_name": "UniqueSignatureTracker" + 2992, + 3087 + ] }, - "description": "return tracked signatures list" + "description": "detect conditional types requiring specialization; assess class typeargs for specialization needs; inspect function parameters and return types; evaluate overloads and union subtype specialization; identify typevar alias specialization requirements" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.addTrackedSignatures", - "name": "UniqueSignatureTracker.addTrackedSignatures", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.addTrackedSignatures", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addConditionToType", + "name": "addConditionToType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addConditionToType", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "addTrackedSignatures", + "func_name": "addConditionToType", "line_range": [ - 259, - 265 - ], - "class_name": "UniqueSignatureTracker" + 926, + 972 + ] }, - "description": "register signatures with offsets" + "description": "add condition to type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.findSignature", - "name": "UniqueSignatureTracker.findSignature", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.findSignature", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addDeclaringModuleNamesForType", + "name": "addDeclaringModuleNamesForType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addDeclaringModuleNamesForType", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "findSignature", + "func_name": "addDeclaringModuleNamesForType", "line_range": [ - 267, - 277 - ], - "class_name": "UniqueSignatureTracker" + 3343, + 3390 + ] }, - "description": "resolve overload to effective signature; find matching tracked signature" + "description": "accumulate declaring module names recursively; add unique module names only once; limit recursion depth for safety; extract module name from class and function types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.addSignature", - "name": "UniqueSignatureTracker.addSignature", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.addSignature", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addSolutionForSelfType", + "name": "addSolutionForSelfType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addSolutionForSelfType", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "addSignature", + "func_name": "addSolutionForSelfType", "line_range": [ - 279, - 291 - ], - "class_name": "UniqueSignatureTracker" + 1547, + 1568 + ] }, - "description": "add or update tracked signature; associate offset with signature" + "description": "add solution for self type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isOptionalType", - "name": "isOptionalType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isOptionalType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addTypeVarsToListIfUnique", + "name": "addTypeVarsToListIfUnique", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addTypeVarsToListIfUnique", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isOptionalType", + "func_name": "addTypeVarsToListIfUnique", "line_range": [ - 294, - 300 + 2070, + 2080 ] }, - "description": "detect optional union type" + "description": "append unique type variables to list; filter type variables by scope id; avoid duplicate type variables using equality" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isNoneInstance", - "name": "isNoneInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isNoneInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::allSubtypes", + "name": "allSubtypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/allSubtypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isNoneInstance", + "func_name": "allSubtypes", "line_range": [ - 302, - 304 + 796, + 804 ] }, - "description": "identify none instance" + "description": "check all subtypes satisfy predicate" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isNoneTypeClass", - "name": "isNoneTypeClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isNoneTypeClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::applySolvedTypeVars", + "name": "applySolvedTypeVars", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/applySolvedTypeVars", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isNoneTypeClass", + "func_name": "applySolvedTypeVars", "line_range": [ - 306, - 308 + 1615, + 1623 ] }, - "description": "identify none type class" + "description": "apply solved type vars" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::removeNoneFromUnion", - "name": "removeNoneFromUnion", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/removeNoneFromUnion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer", + "name": "ApplySolvedTypeVarsTransformer", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "removeNoneFromUnion", + "func_name": "ApplySolvedTypeVarsTransformer", "line_range": [ - 312, - 314 + 4175, + 4502 ] }, - "description": "remove none from union" + "description": "store constraint solution and options" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isIncompleteUnknown", - "name": "isIncompleteUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isIncompleteUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._getReplacementForDefaultByName", + "name": "ApplySolvedTypeVarsTransformer._getReplacementForDefaultByName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._getReplacementForDefaultByName", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isIncompleteUnknown", + "func_name": "_getReplacementForDefaultByName", "line_range": [ - 316, - 318 - ] + 4442, + 4456 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "check incomplete unknown" + "description": "lookup replacement by partial typevar name; scan solution set for matching entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTypeVarSame", - "name": "isTypeVarSame", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTypeVarSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._shouldReplaceTypeVar", + "name": "ApplySolvedTypeVarsTransformer._shouldReplaceTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._shouldReplaceTypeVar", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isTypeVarSame", + "func_name": "_shouldReplaceTypeVar", "line_range": [ - 323, - 357 - ] + 4458, + 4464 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "compare typevar to type; check bound typevar union compatibility" + "description": "determine replaceability of type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeInferenceContext", - "name": "makeInferenceContext", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeInferenceContext", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._shouldReplaceUnsolvedTypeVar", + "name": "ApplySolvedTypeVarsTransformer._shouldReplaceUnsolvedTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._shouldReplaceUnsolvedTypeVar", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "makeInferenceContext", + "func_name": "_shouldReplaceUnsolvedTypeVar", "line_range": [ - 375, - 385 - ] + 4466, + 4492 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "create inference context" + "description": "decide unsolved type variable replacement; respect replacement scope id list; exclude exempted unsolved type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::mapSubtypes", - "name": "mapSubtypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/mapSubtypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._solveDefaultType", + "name": "ApplySolvedTypeVarsTransformer._solveDefaultType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._solveDefaultType", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "mapSubtypes", + "func_name": "_solveDefaultType", "line_range": [ - 405, - 461 - ] + 4494, + 4501 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "transform union subtypes by callback" + "description": "apply default type values recursively; manage default solving state" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::mapSignatures", - "name": "mapSignatures", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/mapSignatures", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.doForEachConstraintSet", + "name": "ApplySolvedTypeVarsTransformer.doForEachConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.doForEachConstraintSet", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "mapSignatures", + "func_name": "doForEachConstraintSet", "line_range": [ - 465, - 512 - ] + 4401, + 4435 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "transform function and overload signatures" + "description": "iterate constraint solution sets; build overloads from each context; prevent redundant recursive iteration" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::cleanIncompleteUnknown", - "name": "cleanIncompleteUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/cleanIncompleteUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformConditionalType", + "name": "ApplySolvedTypeVarsTransformer.transformConditionalType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformConditionalType", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "cleanIncompleteUnknown", + "func_name": "transformConditionalType", "line_range": [ - 520, - 578 - ] + 4367, + 4399 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "eliminate incomplete unknown subtypes; clean unknowns from class type arguments" + "description": "evaluate conditional types against constraints; substitute never when constraint violated" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::sortTypes", - "name": "sortTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/sortTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformTupleTypeVar", + "name": "ApplySolvedTypeVarsTransformer.transformTupleTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformTupleTypeVar", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "sortTypes", + "func_name": "transformTupleTypeVar", "line_range": [ - 581, - 585 - ] + 4348, + 4365 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "sort types for deterministic ordering" + "description": "extract tuple type args from defaults; extract tuple type args from solution" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::compareTypes", - "name": "compareTypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/compareTypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformTypeVar", + "name": "ApplySolvedTypeVarsTransformer.transformTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformTypeVar", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "compareTypes", + "func_name": "transformTypeVar", "line_range": [ - 587, - 769 - ] + 4183, + 4296 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "compare types for ordering" + "description": "apply solved type variables; lookup replacement by typevar name; preserve paramspec replacements; specialize instantiable class types; specialize generic class instances with defaults; combine tuple type arguments; handle unpacked type variables; replace unsolved type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::doForEachSubtype", - "name": "doForEachSubtype", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/doForEachSubtype", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformUnionSubtype", + "name": "ApplySolvedTypeVarsTransformer.transformUnionSubtype", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformUnionSubtype", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "doForEachSubtype", + "func_name": "transformUnionSubtype", "line_range": [ - 771, - 784 - ] + 4298, + 4346 + ], + "class_name": "ApplySolvedTypeVarsTransformer" }, - "description": "execute callback for each subtype" + "description": "eliminate unsolved type variables in unions; remove types conditioned on unsolved type variables; preserve transformed union members" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::someSubtypes", - "name": "someSubtypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/someSubtypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::areTypesSame", + "name": "areTypesSame", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/areTypesSame", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "someSubtypes", + "func_name": "areTypesSame", "line_range": [ - 786, - 794 + 820, + 832 ] }, - "description": "check any subtype satisfies predicate" + "description": "verify all types are same" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::allSubtypes", - "name": "allSubtypes", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/allSubtypes", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform", + "name": "BoundTypeVarTransform", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "allSubtypes", + "func_name": "BoundTypeVarTransform", "line_range": [ - 796, - 804 + 4118, + 4147 ] }, - "description": "check all subtypes satisfy predicate" + "description": "set scope identifiers for transform" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::doForEachSignature", - "name": "doForEachSignature", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/doForEachSignature", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform._isTypeVarInScope", + "name": "BoundTypeVarTransform._isTypeVarInScope", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform._isTypeVarInScope", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "doForEachSignature", + "func_name": "_isTypeVarInScope", "line_range": [ - 806, - 817 - ] + 4131, + 4142 + ], + "class_name": "BoundTypeVarTransform" }, - "description": "execute callback for each signature" + "description": "check type variable scope membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::areTypesSame", - "name": "areTypesSame", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/areTypesSame", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform._replaceTypeVar", + "name": "BoundTypeVarTransform._replaceTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform._replaceTypeVar", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "areTypesSame", + "func_name": "_replaceTypeVar", "line_range": [ - 820, - 832 - ] + 4144, + 4146 + ], + "class_name": "BoundTypeVarTransform" }, - "description": "verify all types are same" + "description": "clone type variable as bound" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::preserveUnknown", - "name": "preserveUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/preserveUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform.transformTypeVar", + "name": "BoundTypeVarTransform.transformTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform.transformTypeVar", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", + "func_name": "transformTypeVar", + "line_range": [ + 4123, + 4129 + ], + "class_name": "BoundTypeVarTransform" + }, + "description": "convert type variable to bound type" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::buildSolution", + "name": "buildSolution", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/buildSolution", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "preserveUnknown", + "func_name": "buildSolution", "line_range": [ - 837, - 847 + 2214, + 2228 ] }, - "description": "prefer incomplete unknown over any" + "description": "build constraint solution; assign type args to type parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isUnionableType", - "name": "isUnionableType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isUnionableType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::buildSolutionFromSpecializedClass", + "name": "buildSolutionFromSpecializedClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/buildSolutionFromSpecializedClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isUnionableType", + "func_name": "buildSolutionFromSpecializedClass", "line_range": [ - 851, - 869 + 2192, + 2212 ] }, - "description": "determine if subtypes can union" + "description": "build constraint solution from specialized class; derive type arguments from tuple and regular forms; map type parameters to arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::derivesFromAnyOrUnknown", - "name": "derivesFromAnyOrUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/derivesFromAnyOrUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::cleanIncompleteUnknown", + "name": "cleanIncompleteUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/cleanIncompleteUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "derivesFromAnyOrUnknown", + "func_name": "cleanIncompleteUnknown", "line_range": [ - 871, - 889 + 520, + 578 ] }, - "description": "detect derivation from any or unknown" + "description": "eliminate incomplete unknown subtypes; clean unknowns from class type arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getFullNameOfType", - "name": "getFullNameOfType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getFullNameOfType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::combineSameSizedTuples", + "name": "combineSameSizedTuples", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/combineSameSizedTuples", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getFullNameOfType", + "func_name": "combineSameSizedTuples", "line_range": [ - 891, - 924 + 2752, + 2807 ] }, - "description": "retrieve full name of type" + "description": "combine tuple element types across union subtypes; specialize tuple class to combined entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addConditionToType", - "name": "addConditionToType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addConditionToType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::combineTupleTypeArgs", + "name": "combineTupleTypeArgs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/combineTupleTypeArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "addConditionToType", + "func_name": "combineTupleTypeArgs", "line_range": [ - 926, - 972 + 2809, + 2837 ] }, - "description": "add condition to type" + "description": "combine tuple type arguments; treat unpacked typevar tuples as union; expand unpacked bounded typevar tuple" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeCondition", - "name": "getTypeCondition", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeCondition", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::combineVariances", + "name": "combineVariances", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/combineVariances", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getTypeCondition", + "func_name": "combineVariances", "line_range": [ - 974, - 990 + 3104, + 3118 ] }, - "description": "retrieve condition from type" + "description": "combine two variances into effective variance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTypeAliasPlaceholder", - "name": "isTypeAliasPlaceholder", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTypeAliasPlaceholder", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::compareTypes", + "name": "compareTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/compareTypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isTypeAliasPlaceholder", + "func_name": "compareTypes", "line_range": [ - 994, - 996 + 587, + 769 ] }, - "description": "check type alias placeholder" + "description": "compare types for ordering" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTypeAliasRecursive", - "name": "isTypeAliasRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTypeAliasRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::computeMroLinearization", + "name": "computeMroLinearization", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/computeMroLinearization", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isTypeAliasRecursive", + "func_name": "computeMroLinearization", "line_range": [ - 1001, - 1022 + 3178, + 3332 ] }, - "description": "detect recursive type alias; detect alias reference inside unions" + "description": "compute class mro linearization; apply solved type variables during merging; handle generic base class special cases; provide fallback ordering for unresolved mro" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::transformPossibleRecursiveTypeAlias", - "name": "transformPossibleRecursiveTypeAlias", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/transformPossibleRecursiveTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::containsAnyOrUnknown", + "name": "containsAnyOrUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/containsAnyOrUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformPossibleRecursiveTypeAlias", + "func_name": "containsAnyOrUnknown", "line_range": [ - 1028, - 1066 + 2607, + 2650 ] }, - "description": "transform possible recursive type alias; apply solved type vars to recursive alias" + "description": "find any or unknown type within type; optionally recurse into nested types; treat gradual callable forms as any" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeVarScopeId", - "name": "getTypeVarScopeId", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeVarScopeId", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::containsAnyRecursive", + "name": "containsAnyRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/containsAnyRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getTypeVarScopeId", + "func_name": "containsAnyRecursive", "line_range": [ - 1068, - 1082 + 2577, + 2601 ] }, - "description": "get type var scope id" + "description": "detect presence of any type recursively; optionally detect unknown types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeVarScopeIds", - "name": "getTypeVarScopeIds", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeVarScopeIds", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::containsLiteralType", + "name": "containsLiteralType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/containsLiteralType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getTypeVarScopeIds", + "func_name": "containsLiteralType", "line_range": [ - 1086, - 1101 + 1263, + 1288 ] }, - "description": "get type var scope ids" + "description": "detect literal type presence; include type args in detection" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeWithUnknownTypeArgs", - "name": "specializeWithUnknownTypeArgs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeWithUnknownTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::convertToInstance", + "name": "convertToInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/convertToInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "specializeWithUnknownTypeArgs", + "func_name": "convertToInstance", "line_range": [ - 1105, - 1127 + 2390, + 2474 ] }, - "description": "specialize class with unknown type args; handle tuple class special case" + "description": "convert type to instance form; preserve type alias information; cache converted instance type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnknownForTypeVar", - "name": "getUnknownForTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnknownForTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::convertToInstantiable", + "name": "convertToInstantiable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/convertToInstantiable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getUnknownForTypeVar", + "func_name": "convertToInstantiable", "line_range": [ - 1130, - 1140 + 2476, + 2509 ] }, - "description": "get unknown for type var; provide unknown for paramspec and tuple" + "description": "convert type to instantiable form; cache converted instantiable type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnknownForTypeVarTuple", - "name": "getUnknownForTypeVarTuple", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnknownForTypeVarTuple", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::convertTypeToParamSpecValue", + "name": "convertTypeToParamSpecValue", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/convertTypeToParamSpecValue", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getUnknownForTypeVarTuple", + "func_name": "convertTypeToParamSpecValue", "line_range": [ - 1142, - 1153 + 3395, + 3440 ] - }, - "description": "get unknown for type var tuple" + } }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnknownTypeForCallable", - "name": "getUnknownTypeForCallable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnknownTypeForCallable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::derivesFromAnyOrUnknown", + "name": "derivesFromAnyOrUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/derivesFromAnyOrUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getUnknownTypeForCallable", + "func_name": "derivesFromAnyOrUnknown", "line_range": [ - 1156, - 1161 + 871, + 889 ] }, - "description": "create unknown callable type" + "description": "detect derivation from any or unknown" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::selfSpecializeClass", - "name": "selfSpecializeClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/selfSpecializeClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::derivesFromClassRecursive", + "name": "derivesFromClassRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/derivesFromClassRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "selfSpecializeClass", + "func_name": "derivesFromClassRecursive", "line_range": [ - 1166, - 1185 + 2253, + 2270 ] }, - "description": "specialize class for self" + "description": "determine recursive inheritance relationship; assume inheritance when base class unknown" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getSpecializedTupleType", - "name": "getSpecializedTupleType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getSpecializedTupleType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::derivesFromStdlibClass", + "name": "derivesFromStdlibClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/derivesFromStdlibClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getSpecializedTupleType", + "func_name": "derivesFromStdlibClass", "line_range": [ - 1189, - 1215 + 2246, + 2248 ] }, - "description": "get specialized tuple class type" + "description": "detect derivation from standard library class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isLiteralType", - "name": "isLiteralType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isLiteralType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::doForEachSignature", + "name": "doForEachSignature", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/doForEachSignature", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isLiteralType", + "func_name": "doForEachSignature", "line_range": [ - 1217, - 1219 + 806, + 817 ] }, - "description": "check literal type" + "description": "execute callback for each signature" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isLiteralTypeOrUnion", - "name": "isLiteralTypeOrUnion", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isLiteralTypeOrUnion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::doForEachSubtype", + "name": "doForEachSubtype", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/doForEachSubtype", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isLiteralTypeOrUnion", + "func_name": "doForEachSubtype", "line_range": [ - 1221, - 1245 + 771, + 784 ] }, - "description": "check literal type or union" + "description": "execute callback for each subtype" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isLiteralLikeType", - "name": "isLiteralLikeType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isLiteralLikeType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ensureSignaturesAreUnique", + "name": "ensureSignaturesAreUnique", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ensureSignaturesAreUnique", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isLiteralLikeType", + "func_name": "ensureSignaturesAreUnique", "line_range": [ - 1247, - 1257 + 1572, + 1579 ] }, - "description": "check literal like type" + "description": "ensure unique function signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isSentinelLiteral", - "name": "isSentinelLiteral", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isSentinelLiteral", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::explodeGenericClass", + "name": "explodeGenericClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/explodeGenericClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isSentinelLiteral", + "func_name": "explodeGenericClass", "line_range": [ - 1259, - 1261 + 2738, + 2748 ] }, - "description": "check sentinel literal instance" + "description": "expand generic class over union type argument; produce union of specialized class variants" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::containsLiteralType", - "name": "containsLiteralType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/containsLiteralType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::FreeTypeVarTransform", + "name": "FreeTypeVarTransform", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/FreeTypeVarTransform", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "containsLiteralType", + "func_name": "FreeTypeVarTransform", "line_range": [ - 1263, - 1288 + 4151, + 4171 ] }, - "description": "detect literal type presence; include type args in detection" + "description": "capture type variable scope ids" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getLiteralTypeClassName", - "name": "getLiteralTypeClassName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getLiteralTypeClassName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::FreeTypeVarTransform._isTypeVarInScope", + "name": "FreeTypeVarTransform._isTypeVarInScope", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/FreeTypeVarTransform._isTypeVarInScope", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getLiteralTypeClassName", + "func_name": "_isTypeVarInScope", "line_range": [ - 1294, - 1319 - ] + 4164, + 4170 + ], + "class_name": "FreeTypeVarTransform" }, - "description": "get literal type class name; return undefined on union mismatch" + "description": "check type variable scope membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::stripTypeForm", - "name": "stripTypeForm", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/stripTypeForm", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::FreeTypeVarTransform.transformTypeVar", + "name": "FreeTypeVarTransform.transformTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/FreeTypeVarTransform.transformTypeVar", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "stripTypeForm", + "func_name": "transformTypeVar", "line_range": [ - 1321, - 1327 - ] + 4156, + 4162 + ], + "class_name": "FreeTypeVarTransform" }, - "description": "strip type form" + "description": "substitute type variable with free type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::stripTypeFormRecursive", - "name": "stripTypeFormRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/stripTypeFormRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getClassFieldsRecursive", + "name": "getClassFieldsRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getClassFieldsRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "stripTypeFormRecursive", + "func_name": "getClassFieldsRecursive", "line_range": [ - 1329, - 1340 + 2034, + 2066 ] }, - "description": "recursively strip type form" + "description": "collect declared member fields recursively; iterate reverse mro to prioritize bases; partially specialize ancestor classes for context; clear collected fields on unknown ancestor" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnionSubtypeCount", - "name": "getUnionSubtypeCount", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnionSubtypeCount", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getClassIterator", + "name": "getClassIterator", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getClassIterator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getUnionSubtypeCount", + "func_name": "getClassIterator", "line_range": [ - 1342, - 1348 + 1984, + 2032 ] }, - "description": "count union subtypes" + "description": "iterate classes along mro; partially specialize mro entries against class; support skipping to a specific mro class; stop after base classes when requested; ignore object or type base classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isEllipsisType", - "name": "isEllipsisType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isEllipsisType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getClassMemberIterator", + "name": "getClassMemberIterator", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getClassMemberIterator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isEllipsisType", + "func_name": "getClassMemberIterator", "line_range": [ - 1350, - 1352 + 1803, + 1965 ] }, - "description": "check ellipsis type" + "description": "iterate class members across mro; yield instance members when present; yield class members when present; respect declared types only flag; handle dataclass and typed dicts; return unknown symbol for unknown bases; support partial call type substitution" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isProperty", - "name": "isProperty", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isProperty", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getContainerDepth", + "name": "getContainerDepth", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getContainerDepth", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isProperty", + "func_name": "getContainerDepth", "line_range": [ - 1354, - 1356 + 1714, + 1746 ] }, - "description": "check property type" + "description": "compute container nesting depth; recurse into generic type arguments; enforce recursion depth limit" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isCallableType", - "name": "isCallableType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isCallableType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getDeclaredGeneratorReturnType", + "name": "getDeclaredGeneratorReturnType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getDeclaredGeneratorReturnType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isCallableType", + "func_name": "getDeclaredGeneratorReturnType", "line_range": [ - 1358, - 1381 + 2295, + 2307 ] }, - "description": "determine if type is callable" + "description": "extract declared generator return type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isDescriptorInstance", - "name": "isDescriptorInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isDescriptorInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getDeclaringModulesForType", + "name": "getDeclaringModulesForType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getDeclaringModulesForType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isDescriptorInstance", + "func_name": "getDeclaringModulesForType", "line_range": [ - 1383, - 1389 + 3337, + 3341 ] }, - "description": "check descriptor instance" + "description": "collect declaring module names for type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMaybeDescriptorInstance", - "name": "isMaybeDescriptorInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMaybeDescriptorInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getFullNameOfType", + "name": "getFullNameOfType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getFullNameOfType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isMaybeDescriptorInstance", + "func_name": "getFullNameOfType", "line_range": [ - 1391, - 1414 + 891, + 924 ] }, - "description": "check possible descriptor instance" + "description": "retrieve full name of type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMaybeDescriptorClass", - "name": "isMaybeDescriptorClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMaybeDescriptorClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getGeneratorTypeArgs", + "name": "getGeneratorTypeArgs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getGeneratorTypeArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isMaybeDescriptorClass", + "func_name": "getGeneratorTypeArgs", "line_range": [ - 1425, - 1435 + 2906, + 2918 ] }, - "description": "check possible descriptor class" + "description": "extract generator type arguments from return type; map awaitablegenerator args to generator args" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTupleGradualForm", - "name": "isTupleGradualForm", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTupleGradualForm", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getGeneratorYieldType", + "name": "getGeneratorYieldType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getGeneratorYieldType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isTupleGradualForm", + "func_name": "getGeneratorYieldType", "line_range": [ - 1437, - 1446 + 2312, + 2340 ] }, - "description": "check tuple gradual form" + "description": "infer generator yield type; validate generator return type form" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isStubOnlySubscriptable", - "name": "isStubOnlySubscriptable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isStubOnlySubscriptable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getLiteralTypeClassName", + "name": "getLiteralTypeClassName", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getLiteralTypeClassName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isStubOnlySubscriptable", + "func_name": "getLiteralTypeClassName", "line_range": [ - 1451, - 1457 + 1294, + 1319 ] }, - "description": "check stub only subscriptable" + "description": "get literal type class name; return undefined on union mismatch" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTupleClass", - "name": "isTupleClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTupleClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getMembersForClass", + "name": "getMembersForClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getMembersForClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isTupleClass", + "func_name": "getMembersForClass", "line_range": [ - 1459, - 1461 + 2511, + 2559 ] }, - "description": "check tuple class" + "description": "collect class members into symbol table; prefer parent typed declarations over unannotated members; include metaclass members when appropriate" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isUnboundedTupleClass", - "name": "isUnboundedTupleClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isUnboundedTupleClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getMembersForModule", + "name": "getMembersForModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getMembersForModule", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isUnboundedTupleClass", + "func_name": "getMembersForModule", "line_range": [ - 1466, - 1470 + 2561, + 2574 ] }, - "description": "check unbounded tuple class" + "description": "collect module members into symbol table; override loader fields with module definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTupleIndexUnambiguous", - "name": "isTupleIndexUnambiguous", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTupleIndexUnambiguous", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getProtocolSymbols", + "name": "getProtocolSymbols", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getProtocolSymbols", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isTupleIndexUnambiguous", + "func_name": "getProtocolSymbols", "line_range": [ - 1474, - 1491 + 1658, + 1666 ] }, - "description": "determine if tuple index unambiguous" + "description": "get protocol symbols from class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::partiallySpecializeType", - "name": "partiallySpecializeType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/partiallySpecializeType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getProtocolSymbolsRecursive", + "name": "getProtocolSymbolsRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getProtocolSymbolsRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "partiallySpecializeType", + "func_name": "getProtocolSymbolsRecursive", "line_range": [ - 1496, - 1545 + 1668, + 1710 ] }, - "description": "partially specialize type by context; specialize property access methods" + "description": "collect protocol symbols recursively; traverse base classes for symbols; add non ignored symbols to map; respect recursion depth limit" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addSolutionForSelfType", - "name": "addSolutionForSelfType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addSolutionForSelfType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getSpecializedTupleType", + "name": "getSpecializedTupleType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getSpecializedTupleType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "addSolutionForSelfType", + "func_name": "getSpecializedTupleType", "line_range": [ - 1547, - 1568 + 1189, + 1215 ] }, - "description": "add solution for self type" + "description": "get specialized tuple class type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ensureSignaturesAreUnique", - "name": "ensureSignaturesAreUnique", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ensureSignaturesAreUnique", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeCondition", + "name": "getTypeCondition", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeCondition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "ensureSignaturesAreUnique", + "func_name": "getTypeCondition", "line_range": [ - 1572, - 1579 + 974, + 990 ] }, - "description": "ensure unique function signatures" + "description": "retrieve condition from type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeFunctionTypeVarsBound", - "name": "makeFunctionTypeVarsBound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeFunctionTypeVarsBound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeVarArgsRecursive", + "name": "getTypeVarArgsRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeVarArgsRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "makeFunctionTypeVarsBound", + "func_name": "getTypeVarArgsRecursive", "line_range": [ - 1581, - 1591 + 2087, + 2172 ] }, - "description": "make function type vars bound" + "description": "collect type variables recursively from type; extract type vars from aliases and params; exclude bound and recursive alias type vars; handle paramspec access specially; recurse into class type arguments; recurse into union and function subtypes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeTypeVarsBound", - "name": "makeTypeVarsBound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeTypeVarsBound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeVarScopeId", + "name": "getTypeVarScopeId", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeVarScopeId", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "makeTypeVarsBound", + "func_name": "getTypeVarScopeId", "line_range": [ - 1594, - 1601 + 1068, + 1082 ] }, - "description": "make type vars bound" + "description": "get type var scope id" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeTypeVarsFree", - "name": "makeTypeVarsFree", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeTypeVarsFree", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeVarScopeIds", + "name": "getTypeVarScopeIds", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeVarScopeIds", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "makeTypeVarsFree", + "func_name": "getTypeVarScopeIds", "line_range": [ - 1604, - 1611 + 1086, + 1101 ] }, - "description": "make type vars free" + "description": "get type var scope ids" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::applySolvedTypeVars", - "name": "applySolvedTypeVars", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/applySolvedTypeVars", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnionSubtypeCount", + "name": "getUnionSubtypeCount", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnionSubtypeCount", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "applySolvedTypeVars", + "func_name": "getUnionSubtypeCount", "line_range": [ - 1615, - 1623 + 1342, + 1348 ] }, - "description": "apply solved type vars" + "description": "count union subtypes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::validateTypeVarDefault", - "name": "validateTypeVarDefault", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/validateTypeVarDefault", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnknownForTypeVar", + "name": "getUnknownForTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnknownForTypeVar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "validateTypeVarDefault", + "func_name": "getUnknownForTypeVar", "line_range": [ - 1627, - 1638 + 1130, + 1140 ] }, - "description": "validate type var default" + "description": "get unknown for type var; provide unknown for paramspec and tuple" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::transformExpectedType", - "name": "transformExpectedType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/transformExpectedType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnknownForTypeVarTuple", + "name": "getUnknownForTypeVarTuple", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnknownForTypeVarTuple", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformExpectedType", + "func_name": "getUnknownForTypeVarTuple", "line_range": [ - 1645, - 1652 + 1142, + 1153 ] }, - "description": "transform expected type for unification" + "description": "get unknown for type var tuple" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getProtocolSymbols", - "name": "getProtocolSymbols", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getProtocolSymbols", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getUnknownTypeForCallable", + "name": "getUnknownTypeForCallable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getUnknownTypeForCallable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getProtocolSymbols", + "func_name": "getUnknownTypeForCallable", "line_range": [ - 1658, - 1666 + 1156, + 1161 ] }, - "description": "get protocol symbols from class" + "description": "create unknown callable type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getProtocolSymbolsRecursive", - "name": "getProtocolSymbolsRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getProtocolSymbolsRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::invertVariance", + "name": "invertVariance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/invertVariance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getProtocolSymbolsRecursive", + "func_name": "invertVariance", "line_range": [ - 1668, - 1710 + 3091, + 3101 ] }, - "description": "collect protocol symbols recursively; traverse base classes for symbols; add non ignored symbols to map; respect recursion depth limit" + "description": "invert variance for type parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getContainerDepth", - "name": "getContainerDepth", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getContainerDepth", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isCallableType", + "name": "isCallableType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isCallableType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getContainerDepth", + "func_name": "isCallableType", "line_range": [ - 1714, - 1746 + 1358, + 1381 ] }, - "description": "compute container nesting depth; recurse into generic type arguments; enforce recursion depth limit" + "description": "determine if type is callable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::lookUpObjectMember", - "name": "lookUpObjectMember", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/lookUpObjectMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isDescriptorInstance", + "name": "isDescriptorInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isDescriptorInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "lookUpObjectMember", + "func_name": "isDescriptorInstance", "line_range": [ - 1748, - 1759 + 1383, + 1389 ] }, - "description": "dispatch instance member lookup to class; return undefined for non instances" + "description": "check descriptor instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::lookUpClassMember", - "name": "lookUpClassMember", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/lookUpClassMember", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isEffectivelyInstantiable", + "name": "isEffectivelyInstantiable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isEffectivelyInstantiable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "lookUpClassMember", + "func_name": "isEffectivelyInstantiable", "line_range": [ - 1763, - 1791 + 2356, + 2384 ] }, - "description": "prioritize metaclass member lookup; treat metaclass members as class members; fall back to mro lookup" + "description": "determine effective instantiability of type; honor type variable bounds when checking" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getClassMemberIterator", - "name": "getClassMemberIterator", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getClassMemberIterator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isEllipsisType", + "name": "isEllipsisType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isEllipsisType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getClassMemberIterator", + "func_name": "isEllipsisType", "line_range": [ - 1803, - 1965 + 1350, + 1352 ] }, - "description": "iterate class members across mro; yield instance members when present; yield class members when present; respect declared types only flag; handle dataclass and typed dicts; return unknown symbol for unknown bases; support partial call type substitution" + "description": "check ellipsis type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMemberReadOnly", - "name": "isMemberReadOnly", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMemberReadOnly", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isIncompleteUnknown", + "name": "isIncompleteUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isIncompleteUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isMemberReadOnly", + "func_name": "isIncompleteUnknown", "line_range": [ - 1969, - 1982 + 316, + 318 ] }, - "description": "determine if member is readonly; treat named tuple entries as readonly; treat frozen dataclass entries as readonly" + "description": "check incomplete unknown" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getClassIterator", - "name": "getClassIterator", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getClassIterator", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isInstantiableMetaclass", + "name": "isInstantiableMetaclass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isInstantiableMetaclass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getClassIterator", + "func_name": "isInstantiableMetaclass", "line_range": [ - 1984, - 2032 + 2342, + 2347 ] }, - "description": "iterate classes along mro; partially specialize mro entries against class; support skipping to a specific mro class; stop after base classes when requested; ignore object or type base classes" + "description": "determine instantiable metaclass" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getClassFieldsRecursive", - "name": "getClassFieldsRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getClassFieldsRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isLiteralLikeType", + "name": "isLiteralLikeType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isLiteralLikeType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getClassFieldsRecursive", + "func_name": "isLiteralLikeType", "line_range": [ - 2034, - 2066 + 1247, + 1257 ] }, - "description": "collect declared member fields recursively; iterate reverse mro to prioritize bases; partially specialize ancestor classes for context; clear collected fields on unknown ancestor" + "description": "check literal like type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addTypeVarsToListIfUnique", - "name": "addTypeVarsToListIfUnique", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addTypeVarsToListIfUnique", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isLiteralType", + "name": "isLiteralType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isLiteralType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "addTypeVarsToListIfUnique", + "func_name": "isLiteralType", "line_range": [ - 2070, - 2080 + 1217, + 1219 ] }, - "description": "append unique type variables to list; filter type variables by scope id; avoid duplicate type variables using equality" + "description": "check literal type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getTypeVarArgsRecursive", - "name": "getTypeVarArgsRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getTypeVarArgsRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isLiteralTypeOrUnion", + "name": "isLiteralTypeOrUnion", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isLiteralTypeOrUnion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getTypeVarArgsRecursive", + "func_name": "isLiteralTypeOrUnion", "line_range": [ - 2087, - 2172 + 1221, + 1245 ] }, - "description": "collect type variables recursively from type; extract type vars from aliases and params; exclude bound and recursive alias type vars; handle paramspec access specially; recurse into class type arguments; recurse into union and function subtypes" + "description": "check literal type or union" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeWithDefaultTypeArgs", - "name": "specializeWithDefaultTypeArgs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeWithDefaultTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMaybeDescriptorClass", + "name": "isMaybeDescriptorClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMaybeDescriptorClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "specializeWithDefaultTypeArgs", + "func_name": "isMaybeDescriptorClass", "line_range": [ - 2176, - 2186 + 1425, + 1435 ] }, - "description": "specialize class with default type arguments; return original type when already specialized; apply only for types with scope id" + "description": "check possible descriptor class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::buildSolutionFromSpecializedClass", - "name": "buildSolutionFromSpecializedClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/buildSolutionFromSpecializedClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMaybeDescriptorInstance", + "name": "isMaybeDescriptorInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMaybeDescriptorInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "buildSolutionFromSpecializedClass", + "func_name": "isMaybeDescriptorInstance", "line_range": [ - 2192, - 2212 + 1391, + 1414 ] }, - "description": "build constraint solution from specialized class; derive type arguments from tuple and regular forms; map type parameters to arguments" + "description": "check possible descriptor instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::buildSolution", - "name": "buildSolution", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/buildSolution", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMemberReadOnly", + "name": "isMemberReadOnly", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMemberReadOnly", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "buildSolution", + "func_name": "isMemberReadOnly", "line_range": [ - 2214, - 2228 + 1969, + 1982 ] }, - "description": "build constraint solution; assign type args to type parameters" + "description": "determine if member is readonly; treat named tuple entries as readonly; treat frozen dataclass entries as readonly" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeForBaseClass", - "name": "specializeForBaseClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeForBaseClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMetaclassInstance", + "name": "isMetaclassInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMetaclassInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "specializeForBaseClass", + "func_name": "isMetaclassInstance", "line_range": [ - 2231, - 2244 + 2349, + 2354 ] }, - "description": "specialize base class for source class" + "description": "detect metaclass instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::derivesFromStdlibClass", - "name": "derivesFromStdlibClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/derivesFromStdlibClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isNoneInstance", + "name": "isNoneInstance", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isNoneInstance", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "derivesFromStdlibClass", + "func_name": "isNoneInstance", "line_range": [ - 2246, - 2248 + 302, + 304 ] }, - "description": "detect derivation from standard library class" + "description": "identify none instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::derivesFromClassRecursive", - "name": "derivesFromClassRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/derivesFromClassRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isNoneTypeClass", + "name": "isNoneTypeClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isNoneTypeClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "derivesFromClassRecursive", + "func_name": "isNoneTypeClass", "line_range": [ - 2253, - 2270 + 306, + 308 ] }, - "description": "determine recursive inheritance relationship; assume inheritance when base class unknown" + "description": "identify none type class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::synthesizeTypeVarForSelfCls", - "name": "synthesizeTypeVarForSelfCls", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/synthesizeTypeVarForSelfCls", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isOptionalType", + "name": "isOptionalType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isOptionalType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "synthesizeTypeVarForSelfCls", + "func_name": "isOptionalType", "line_range": [ - 2272, - 2291 + 294, + 300 ] }, - "description": "synthesize type variable for self; bind synthesized type variable to class instance; produce instantiable form for cls parameter" + "description": "detect optional union type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getDeclaredGeneratorReturnType", - "name": "getDeclaredGeneratorReturnType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getDeclaredGeneratorReturnType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isPartlyUnknown", + "name": "isPartlyUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isPartlyUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getDeclaredGeneratorReturnType", + "func_name": "isPartlyUnknown", "line_range": [ - 2295, - 2307 + 2656, + 2733 ] }, - "description": "extract declared generator return type" + "description": "detect partial unknowns within a type; inspect generics and function signatures for unknowns" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getGeneratorYieldType", - "name": "getGeneratorYieldType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getGeneratorYieldType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isProperty", + "name": "isProperty", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isProperty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getGeneratorYieldType", + "func_name": "isProperty", "line_range": [ - 2312, - 2340 + 1354, + 1356 ] }, - "description": "infer generator yield type; validate generator return type form" + "description": "check property type" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isInstantiableMetaclass", - "name": "isInstantiableMetaclass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isInstantiableMetaclass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isSentinelLiteral", + "name": "isSentinelLiteral", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isSentinelLiteral", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isInstantiableMetaclass", + "func_name": "isSentinelLiteral", "line_range": [ - 2342, - 2347 + 1259, + 1261 ] }, - "description": "determine instantiable metaclass" + "description": "check sentinel literal instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isMetaclassInstance", - "name": "isMetaclassInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isMetaclassInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isStubOnlySubscriptable", + "name": "isStubOnlySubscriptable", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isStubOnlySubscriptable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isMetaclassInstance", + "func_name": "isStubOnlySubscriptable", "line_range": [ - 2349, - 2354 + 1451, + 1457 ] }, - "description": "detect metaclass instance" + "description": "check stub only subscriptable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isEffectivelyInstantiable", - "name": "isEffectivelyInstantiable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isEffectivelyInstantiable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTupleClass", + "name": "isTupleClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTupleClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isEffectivelyInstantiable", + "func_name": "isTupleClass", "line_range": [ - 2356, - 2384 + 1459, + 1461 ] }, - "description": "determine effective instantiability of type; honor type variable bounds when checking" + "description": "check tuple class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::convertToInstance", - "name": "convertToInstance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/convertToInstance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTupleGradualForm", + "name": "isTupleGradualForm", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTupleGradualForm", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "convertToInstance", + "func_name": "isTupleGradualForm", "line_range": [ - 2390, - 2474 + 1437, + 1446 ] }, - "description": "convert type to instance form; preserve type alias information; cache converted instance type" + "description": "check tuple gradual form" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::convertToInstantiable", - "name": "convertToInstantiable", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/convertToInstantiable", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTupleIndexUnambiguous", + "name": "isTupleIndexUnambiguous", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTupleIndexUnambiguous", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "convertToInstantiable", + "func_name": "isTupleIndexUnambiguous", "line_range": [ - 2476, - 2509 + 1474, + 1491 ] }, - "description": "convert type to instantiable form; cache converted instantiable type" + "description": "determine if tuple index unambiguous" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getMembersForClass", - "name": "getMembersForClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getMembersForClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTypeAliasPlaceholder", + "name": "isTypeAliasPlaceholder", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTypeAliasPlaceholder", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getMembersForClass", + "func_name": "isTypeAliasPlaceholder", "line_range": [ - 2511, - 2559 + 994, + 996 ] }, - "description": "collect class members into symbol table; prefer parent typed declarations over unannotated members; include metaclass members when appropriate" + "description": "check type alias placeholder" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getMembersForModule", - "name": "getMembersForModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getMembersForModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTypeAliasRecursive", + "name": "isTypeAliasRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTypeAliasRecursive", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getMembersForModule", + "func_name": "isTypeAliasRecursive", "line_range": [ - 2561, - 2574 + 1001, + 1022 ] }, - "description": "collect module members into symbol table; override loader fields with module definitions" + "description": "detect recursive type alias; detect alias reference inside unions" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::containsAnyRecursive", - "name": "containsAnyRecursive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/containsAnyRecursive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isTypeVarSame", + "name": "isTypeVarSame", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isTypeVarSame", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "containsAnyRecursive", + "func_name": "isTypeVarSame", "line_range": [ - 2577, - 2601 + 323, + 357 ] }, - "description": "detect presence of any type recursively; optionally detect unknown types" + "description": "compare typevar to type; check bound typevar union compatibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::containsAnyOrUnknown", - "name": "containsAnyOrUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/containsAnyOrUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isUnboundedTupleClass", + "name": "isUnboundedTupleClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isUnboundedTupleClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "containsAnyOrUnknown", + "func_name": "isUnboundedTupleClass", "line_range": [ - 2607, - 2650 + 1466, + 1470 ] }, - "description": "find any or unknown type within type; optionally recurse into nested types; treat gradual callable forms as any" + "description": "check unbounded tuple class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isPartlyUnknown", - "name": "isPartlyUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isPartlyUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isUnionableType", + "name": "isUnionableType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isUnionableType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isPartlyUnknown", + "func_name": "isUnionableType", "line_range": [ - 2656, - 2733 + 851, + 869 ] }, - "description": "detect partial unknowns within a type; inspect generics and function signatures for unknowns" + "description": "determine if subtypes can union" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::explodeGenericClass", - "name": "explodeGenericClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/explodeGenericClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isVarianceOfTypeArgCompatible", + "name": "isVarianceOfTypeArgCompatible", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isVarianceOfTypeArgCompatible", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "explodeGenericClass", + "func_name": "isVarianceOfTypeArgCompatible", "line_range": [ - 2738, - 2748 + 3122, + 3172 ] }, - "description": "expand generic class over union type argument; produce union of specialized class variants" + "description": "check variance compatibility of type arguments; propagate variances to class type arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::combineSameSizedTuples", - "name": "combineSameSizedTuples", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/combineSameSizedTuples", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::lookUpClassMember", + "name": "lookUpClassMember", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/lookUpClassMember", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "combineSameSizedTuples", + "func_name": "lookUpClassMember", "line_range": [ - 2752, - 2807 + 1763, + 1791 ] }, - "description": "combine tuple element types across union subtypes; specialize tuple class to combined entries" + "description": "prioritize metaclass member lookup; treat metaclass members as class members; fall back to mro lookup" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::combineTupleTypeArgs", - "name": "combineTupleTypeArgs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/combineTupleTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::lookUpObjectMember", + "name": "lookUpObjectMember", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/lookUpObjectMember", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "combineTupleTypeArgs", + "func_name": "lookUpObjectMember", "line_range": [ - 2809, - 2837 + 1748, + 1759 ] }, - "description": "combine tuple type arguments; treat unpacked typevar tuples as union; expand unpacked bounded typevar tuple" + "description": "dispatch instance member lookup to class; return undefined for non instances" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeTupleClass", - "name": "specializeTupleClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeTupleClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeFunctionTypeVarsBound", + "name": "makeFunctionTypeVarsBound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeFunctionTypeVarsBound", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "specializeTupleClass", + "func_name": "makeFunctionTypeVarsBound", "line_range": [ - 2842, - 2861 + 1581, + 1591 ] }, - "description": "specialize tuple class with combined type arguments; mark class as unpacked when specified" + "description": "make function type vars bound" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::_expandUnpackedTypeVarTupleUnion", - "name": "_expandUnpackedTypeVarTupleUnion", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/_expandUnpackedTypeVarTupleUnion", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeInferenceContext", + "name": "makeInferenceContext", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeInferenceContext", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_expandUnpackedTypeVarTupleUnion", + "func_name": "makeInferenceContext", "line_range": [ - 2863, - 2869 + 375, + 385 ] }, - "description": "expand unpacked typevar tuple unions; return original type when not applicable" + "description": "create inference context" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makePacked", @@ -26893,183 +27128,169 @@ "description": "create packed version of type; clone unpacked typevar tuple as packed when appropriate; clone unpacked typevar as packed when appropriate" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeUnpacked", - "name": "makeUnpacked", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeUnpacked", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "makeUnpacked", - "line_range": [ - 2888, - 2902 - ] - }, - "description": "create unpacked version of type; clone typevar tuple as unpacked when appropriate; clone typevar as unpacked when appropriate" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getGeneratorTypeArgs", - "name": "getGeneratorTypeArgs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getGeneratorTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeTypeVarsBound", + "name": "makeTypeVarsBound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeTypeVarsBound", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getGeneratorTypeArgs", + "func_name": "makeTypeVarsBound", "line_range": [ - 2906, - 2918 + 1594, + 1601 ] }, - "description": "extract generator type arguments from return type; map awaitablegenerator args to generator args" + "description": "make type vars bound" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::requiresTypeArgs", - "name": "requiresTypeArgs", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/requiresTypeArgs", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeTypeVarsFree", + "name": "makeTypeVarsFree", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeTypeVarsFree", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "requiresTypeArgs", + "func_name": "makeTypeVarsFree", "line_range": [ - 2920, - 2962 + 1604, + 1611 ] }, - "description": "determine whether class requires type arguments; treat special builtins as requiring type args" + "description": "make type vars free" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::requiresSpecialization", - "name": "requiresSpecialization", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/requiresSpecialization", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::makeUnpacked", + "name": "makeUnpacked", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/makeUnpacked", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "requiresSpecialization", + "func_name": "makeUnpacked", "line_range": [ - 2964, - 2990 + 2888, + 2902 ] }, - "description": "determine if type requires specialization with caching; use cached specialization decision when applicable" + "description": "create unpacked version of type; clone typevar tuple as unpacked when appropriate; clone typevar as unpacked when appropriate" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::_requiresSpecialization", - "name": "_requiresSpecialization", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/_requiresSpecialization", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::mapSignatures", + "name": "mapSignatures", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/mapSignatures", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_requiresSpecialization", + "func_name": "mapSignatures", "line_range": [ - 2992, - 3087 + 465, + 512 ] }, - "description": "detect conditional types requiring specialization; assess class typeargs for specialization needs; inspect function parameters and return types; evaluate overloads and union subtype specialization; identify typevar alias specialization requirements" + "description": "transform function and overload signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::invertVariance", - "name": "invertVariance", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/invertVariance", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::mapSubtypes", + "name": "mapSubtypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/mapSubtypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "invertVariance", + "func_name": "mapSubtypes", "line_range": [ - 3091, - 3101 + 405, + 461 ] }, - "description": "invert variance for type parameters" + "description": "transform union subtypes by callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::combineVariances", - "name": "combineVariances", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/combineVariances", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::partiallySpecializeType", + "name": "partiallySpecializeType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/partiallySpecializeType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "combineVariances", + "func_name": "partiallySpecializeType", "line_range": [ - 3104, - 3118 + 1496, + 1545 ] }, - "description": "combine two variances into effective variance" + "description": "partially specialize type by context; specialize property access methods" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::isVarianceOfTypeArgCompatible", - "name": "isVarianceOfTypeArgCompatible", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/isVarianceOfTypeArgCompatible", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::preserveUnknown", + "name": "preserveUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/preserveUnknown", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "isVarianceOfTypeArgCompatible", + "func_name": "preserveUnknown", "line_range": [ - 3122, - 3172 + 837, + 847 ] }, - "description": "check variance compatibility of type arguments; propagate variances to class type arguments" + "description": "prefer incomplete unknown over any" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::computeMroLinearization", - "name": "computeMroLinearization", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/computeMroLinearization", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::removeNoneFromUnion", + "name": "removeNoneFromUnion", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/removeNoneFromUnion", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "computeMroLinearization", + "func_name": "removeNoneFromUnion", "line_range": [ - 3178, - 3332 + 312, + 314 ] }, - "description": "compute class mro linearization; apply solved type variables during merging; handle generic base class special cases; provide fallback ordering for unresolved mro" + "description": "remove none from union" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::getDeclaringModulesForType", - "name": "getDeclaringModulesForType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/getDeclaringModulesForType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::requiresSpecialization", + "name": "requiresSpecialization", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/requiresSpecialization", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "getDeclaringModulesForType", + "func_name": "requiresSpecialization", "line_range": [ - 3337, - 3341 + 2964, + 2990 ] }, - "description": "collect declaring module names for type" + "description": "determine if type requires specialization with caching; use cached specialization decision when applicable" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::addDeclaringModuleNamesForType", - "name": "addDeclaringModuleNamesForType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/addDeclaringModuleNamesForType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::requiresTypeArgs", + "name": "requiresTypeArgs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/requiresTypeArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "addDeclaringModuleNamesForType", + "func_name": "requiresTypeArgs", "line_range": [ - 3343, - 3390 + 2920, + 2962 ] }, - "description": "accumulate declaring module names recursively; add unique module names only once; limit recursion depth for safety; extract module name from class and function types" + "description": "determine whether class requires type arguments; treat special builtins as requiring type args" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::convertTypeToParamSpecValue", - "name": "convertTypeToParamSpecValue", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/convertTypeToParamSpecValue", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::selfSpecializeClass", + "name": "selfSpecializeClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/selfSpecializeClass", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "convertTypeToParamSpecValue", + "func_name": "selfSpecializeClass", "line_range": [ - 3395, - 3440 + 1166, + 1185 ] - } + }, + "description": "specialize class for self" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::simplifyFunctionToParamSpec", @@ -27086,195 +27307,169 @@ } }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer", - "name": "TypeVarTransformer", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::someSubtypes", + "name": "someSubtypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/someSubtypes", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "TypeVarTransformer", + "func_name": "someSubtypes", "line_range": [ - 3469, - 4035 + 786, + 794 ] }, - "description": "initialize pending transformation state; initialize pending function queue" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.apply", - "name": "TypeVarTransformer.apply", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.apply", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "apply", - "line_range": [ - 3477, - 3669 - ], - "class_name": "TypeVarTransformer" - }, - "description": "apply type variable transformations; specialize nested types recursively; avoid retransforming pending scopes; expand unpacked type variable tuples; specialize union and overload members; preserve variadic parameter access" + "description": "check any subtype satisfies predicate" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.canSkipTransform", - "name": "TypeVarTransformer.canSkipTransform", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.canSkipTransform", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::sortTypes", + "name": "sortTypes", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/sortTypes", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "canSkipTransform", + "func_name": "sortTypes", "line_range": [ - 3671, - 3673 - ], - "class_name": "TypeVarTransformer" + 581, + 585 + ] }, - "description": "determine if type requires specialization" + "description": "sort types for deterministic ordering" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTypeVar", - "name": "TypeVarTransformer.transformTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeForBaseClass", + "name": "specializeForBaseClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeForBaseClass", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVar", + "func_name": "specializeForBaseClass", "line_range": [ - 3675, - 3677 - ], - "class_name": "TypeVarTransformer" + 2231, + 2244 + ] }, - "description": "specialize type variable to concrete type" + "description": "specialize base class for source class" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTupleTypeVar", - "name": "TypeVarTransformer.transformTupleTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTupleTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeTupleClass", + "name": "specializeTupleClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeTupleClass", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTupleTypeVar", + "func_name": "specializeTupleClass", "line_range": [ - 3679, - 3681 - ], - "class_name": "TypeVarTransformer" + 2842, + 2861 + ] }, - "description": "unpack tuple type variable into arguments" + "description": "specialize tuple class with combined type arguments; mark class as unpacked when specified" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformUnionSubtype", - "name": "TypeVarTransformer.transformUnionSubtype", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformUnionSubtype", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeWithDefaultTypeArgs", + "name": "specializeWithDefaultTypeArgs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeWithDefaultTypeArgs", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformUnionSubtype", + "func_name": "specializeWithDefaultTypeArgs", "line_range": [ - 3683, - 3685 - ], - "class_name": "TypeVarTransformer" + 2176, + 2186 + ] }, - "description": "adjust union subtype after specialization" + "description": "specialize class with default type arguments; return original type when already specialized; apply only for types with scope id" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.doForEachConstraintSet", - "name": "TypeVarTransformer.doForEachConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.doForEachConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::specializeWithUnknownTypeArgs", + "name": "specializeWithUnknownTypeArgs", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/specializeWithUnknownTypeArgs", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "doForEachConstraintSet", + "func_name": "specializeWithUnknownTypeArgs", "line_range": [ - 3687, - 3691 - ], - "class_name": "TypeVarTransformer" + 1105, + 1127 + ] }, - "description": "iterate constraint sets for specialization" + "description": "specialize class with unknown type args; handle tuple class special case" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformGenericTypeAlias", - "name": "TypeVarTransformer.transformGenericTypeAlias", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformGenericTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::stripTypeForm", + "name": "stripTypeForm", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/stripTypeForm", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformGenericTypeAlias", + "func_name": "stripTypeForm", "line_range": [ - 3693, - 3709 - ], - "class_name": "TypeVarTransformer" + 1321, + 1327 + ] }, - "description": "specialize type arguments in generic aliases" + "description": "strip type form" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformConditionalType", - "name": "TypeVarTransformer.transformConditionalType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformConditionalType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::stripTypeFormRecursive", + "name": "stripTypeFormRecursive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/stripTypeFormRecursive", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformConditionalType", + "func_name": "stripTypeFormRecursive", "line_range": [ - 3711, - 3714 - ], - "class_name": "TypeVarTransformer" + 1329, + 1340 + ] }, - "description": "reevaluate conditional type applicability" + "description": "recursively strip type form" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTypeVarsInClassType", - "name": "TypeVarTransformer.transformTypeVarsInClassType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTypeVarsInClassType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::synthesizeTypeVarForSelfCls", + "name": "synthesizeTypeVarForSelfCls", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/synthesizeTypeVarForSelfCls", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVarsInClassType", + "func_name": "synthesizeTypeVarForSelfCls", "line_range": [ - 3716, - 3838 - ], - "class_name": "TypeVarTransformer" + 2272, + 2291 + ] }, - "description": "specialize type parameters in class types; preserve explicit and inferred type arguments; expand tuple type variables in tuple classes; apply transformations to nested type arguments" + "description": "synthesize type variable for self; bind synthesized type variable to class instance; produce instantiable form for cls parameter" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTypeVarsInFunctionType", - "name": "TypeVarTransformer.transformTypeVarsInFunctionType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTypeVarsInFunctionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::transformExpectedType", + "name": "transformExpectedType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/transformExpectedType", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVarsInFunctionType", + "func_name": "transformExpectedType", "line_range": [ - 3840, - 4030 - ], - "class_name": "TypeVarTransformer" + 1645, + 1652 + ] }, - "description": "specialize parameter and return types in functions; apply variadic parameter transformations to signatures; unpack variadic type variables into parameters; specialize inferred return type information; synthesize new function signatures for unpacked variadics; update bound and stripped parameter types" + "description": "transform expected type for unification" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer._isTypeVarScopePending", - "name": "TypeVarTransformer._isTypeVarScopePending", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer._isTypeVarScopePending", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::transformPossibleRecursiveTypeAlias", + "name": "transformPossibleRecursiveTypeAlias", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/transformPossibleRecursiveTypeAlias", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_isTypeVarScopePending", + "func_name": "transformPossibleRecursiveTypeAlias", "line_range": [ - 4032, - 4034 - ], - "class_name": "TypeVarTransformer" + 1028, + 1066 + ] }, - "description": "check pending type variable scope" + "description": "transform possible recursive type alias; apply solved type vars to recursive alias" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarDefaultValidator", @@ -27308,383 +27503,399 @@ "description": "resolve corresponding live type parameter; verify param spec compatibility; mark invalid type variable; replace type variable with unknown" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer", - "name": "UniqueFunctionSignatureTransformer", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer", + "name": "TypeVarTransformer", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "UniqueFunctionSignatureTransformer", + "func_name": "TypeVarTransformer", "line_range": [ - 4054, - 4113 + 3469, + 4035 ] }, - "description": "store signature tracker and offset" + "description": "initialize pending transformation state; initialize pending function queue" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer.transformGenericTypeAlias", - "name": "UniqueFunctionSignatureTransformer.transformGenericTypeAlias", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer.transformGenericTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer._isTypeVarScopePending", + "name": "TypeVarTransformer._isTypeVarScopePending", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer._isTypeVarScopePending", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformGenericTypeAlias", + "func_name": "_isTypeVarScopePending", "line_range": [ - 4059, - 4062 + 4032, + 4034 ], - "class_name": "UniqueFunctionSignatureTransformer" + "class_name": "TypeVarTransformer" }, - "description": "preserve generic type aliases" + "description": "check pending type variable scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer.transformTypeVarsInClassType", - "name": "UniqueFunctionSignatureTransformer.transformTypeVarsInClassType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer.transformTypeVarsInClassType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.apply", + "name": "TypeVarTransformer.apply", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.apply", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVarsInClassType", + "func_name": "apply", "line_range": [ - 4064, - 4067 + 3477, + 3669 ], - "class_name": "UniqueFunctionSignatureTransformer" + "class_name": "TypeVarTransformer" }, - "description": "preserve class types" + "description": "apply type variable transformations; specialize nested types recursively; avoid retransforming pending scopes; expand unpacked type variable tuples; specialize union and overload members; preserve variadic parameter access" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer.transformTypeVarsInFunctionType", - "name": "UniqueFunctionSignatureTransformer.transformTypeVarsInFunctionType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer.transformTypeVarsInFunctionType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.canSkipTransform", + "name": "TypeVarTransformer.canSkipTransform", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.canSkipTransform", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVarsInFunctionType", + "func_name": "canSkipTransform", "line_range": [ - 4069, - 4112 + 3671, + 3673 ], - "class_name": "UniqueFunctionSignatureTransformer" + "class_name": "TypeVarTransformer" }, - "description": "preserve nongeneric function types; identify existing function signatures; compute expression offset index; clone and rename function type variables; apply type variable substitutions; record signature occurrence" + "description": "determine if type requires specialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform", - "name": "BoundTypeVarTransform", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.doForEachConstraintSet", + "name": "TypeVarTransformer.doForEachConstraintSet", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.doForEachConstraintSet", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "BoundTypeVarTransform", + "func_name": "doForEachConstraintSet", "line_range": [ - 4118, - 4147 - ] + 3687, + 3691 + ], + "class_name": "TypeVarTransformer" }, - "description": "set scope identifiers for transform" + "description": "iterate constraint sets for specialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform.transformTypeVar", - "name": "BoundTypeVarTransform.transformTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform.transformTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformConditionalType", + "name": "TypeVarTransformer.transformConditionalType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformConditionalType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVar", + "func_name": "transformConditionalType", "line_range": [ - 4123, - 4129 + 3711, + 3714 ], - "class_name": "BoundTypeVarTransform" + "class_name": "TypeVarTransformer" }, - "description": "convert type variable to bound type" + "description": "reevaluate conditional type applicability" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform._isTypeVarInScope", - "name": "BoundTypeVarTransform._isTypeVarInScope", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform._isTypeVarInScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformGenericTypeAlias", + "name": "TypeVarTransformer.transformGenericTypeAlias", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformGenericTypeAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_isTypeVarInScope", + "func_name": "transformGenericTypeAlias", "line_range": [ - 4131, - 4142 + 3693, + 3709 ], - "class_name": "BoundTypeVarTransform" + "class_name": "TypeVarTransformer" }, - "description": "check type variable scope membership" + "description": "specialize type arguments in generic aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::BoundTypeVarTransform._replaceTypeVar", - "name": "BoundTypeVarTransform._replaceTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/BoundTypeVarTransform._replaceTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTupleTypeVar", + "name": "TypeVarTransformer.transformTupleTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTupleTypeVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_replaceTypeVar", + "func_name": "transformTupleTypeVar", "line_range": [ - 4144, - 4146 + 3679, + 3681 ], - "class_name": "BoundTypeVarTransform" + "class_name": "TypeVarTransformer" }, - "description": "clone type variable as bound" + "description": "unpack tuple type variable into arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::FreeTypeVarTransform", - "name": "FreeTypeVarTransform", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/FreeTypeVarTransform", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTypeVar", + "name": "TypeVarTransformer.transformTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTypeVar", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "FreeTypeVarTransform", + "func_name": "transformTypeVar", "line_range": [ - 4151, - 4171 - ] + 3675, + 3677 + ], + "class_name": "TypeVarTransformer" + }, + "description": "specialize type variable to concrete type" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTypeVarsInClassType", + "name": "TypeVarTransformer.transformTypeVarsInClassType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTypeVarsInClassType", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", + "func_name": "transformTypeVarsInClassType", + "line_range": [ + 3716, + 3838 + ], + "class_name": "TypeVarTransformer" }, - "description": "capture type variable scope ids" + "description": "specialize type parameters in class types; preserve explicit and inferred type arguments; expand tuple type variables in tuple classes; apply transformations to nested type arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::FreeTypeVarTransform.transformTypeVar", - "name": "FreeTypeVarTransform.transformTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/FreeTypeVarTransform.transformTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformTypeVarsInFunctionType", + "name": "TypeVarTransformer.transformTypeVarsInFunctionType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformTypeVarsInFunctionType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVar", + "func_name": "transformTypeVarsInFunctionType", "line_range": [ - 4156, - 4162 + 3840, + 4030 ], - "class_name": "FreeTypeVarTransform" + "class_name": "TypeVarTransformer" }, - "description": "substitute type variable with free type" + "description": "specialize parameter and return types in functions; apply variadic parameter transformations to signatures; unpack variadic type variables into parameters; specialize inferred return type information; synthesize new function signatures for unpacked variadics; update bound and stripped parameter types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::FreeTypeVarTransform._isTypeVarInScope", - "name": "FreeTypeVarTransform._isTypeVarInScope", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/FreeTypeVarTransform._isTypeVarInScope", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::TypeVarTransformer.transformUnionSubtype", + "name": "TypeVarTransformer.transformUnionSubtype", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/TypeVarTransformer.transformUnionSubtype", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_isTypeVarInScope", + "func_name": "transformUnionSubtype", "line_range": [ - 4164, - 4170 + 3683, + 3685 ], - "class_name": "FreeTypeVarTransform" + "class_name": "TypeVarTransformer" }, - "description": "check type variable scope membership" + "description": "adjust union subtype after specialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer", - "name": "ApplySolvedTypeVarsTransformer", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UnificationTypeTransformer", + "name": "UnificationTypeTransformer", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UnificationTypeTransformer", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "ApplySolvedTypeVarsTransformer", + "func_name": "UnificationTypeTransformer", "line_range": [ - 4175, - 4502 + 4504, + 4522 ] }, - "description": "store constraint solution and options" + "description": "store live type variable scopes; record usage offset for unification variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformTypeVar", - "name": "ApplySolvedTypeVarsTransformer.transformTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UnificationTypeTransformer._isTypeVarLive", + "name": "UnificationTypeTransformer._isTypeVarLive", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UnificationTypeTransformer._isTypeVarLive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVar", + "func_name": "_isTypeVarLive", "line_range": [ - 4183, - 4296 + 4517, + 4521 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UnificationTypeTransformer" }, - "description": "apply solved type variables; lookup replacement by typevar name; preserve paramspec replacements; specialize instantiable class types; specialize generic class instances with defaults; combine tuple type arguments; handle unpacked type variables; replace unsolved type variables" + "description": "determine type variable liveness from scopes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformUnionSubtype", - "name": "ApplySolvedTypeVarsTransformer.transformUnionSubtype", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformUnionSubtype", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UnificationTypeTransformer.transformTypeVar", + "name": "UnificationTypeTransformer.transformTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UnificationTypeTransformer.transformTypeVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformUnionSubtype", + "func_name": "transformTypeVar", "line_range": [ - 4298, - 4346 + 4509, + 4515 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UnificationTypeTransformer" }, - "description": "eliminate unsolved type variables in unions; remove types conditioned on unsolved type variables; preserve transformed union members" + "description": "convert inactive type variable to unification variable; preserve live type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformTupleTypeVar", - "name": "ApplySolvedTypeVarsTransformer.transformTupleTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformTupleTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer", + "name": "UniqueFunctionSignatureTransformer", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTupleTypeVar", + "func_name": "UniqueFunctionSignatureTransformer", "line_range": [ - 4348, - 4365 - ], - "class_name": "ApplySolvedTypeVarsTransformer" + 4054, + 4113 + ] }, - "description": "extract tuple type args from defaults; extract tuple type args from solution" + "description": "store signature tracker and offset" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.transformConditionalType", - "name": "ApplySolvedTypeVarsTransformer.transformConditionalType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.transformConditionalType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer.transformGenericTypeAlias", + "name": "UniqueFunctionSignatureTransformer.transformGenericTypeAlias", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer.transformGenericTypeAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformConditionalType", + "func_name": "transformGenericTypeAlias", "line_range": [ - 4367, - 4399 + 4059, + 4062 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UniqueFunctionSignatureTransformer" }, - "description": "evaluate conditional types against constraints; substitute never when constraint violated" + "description": "preserve generic type aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer.doForEachConstraintSet", - "name": "ApplySolvedTypeVarsTransformer.doForEachConstraintSet", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer.doForEachConstraintSet", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer.transformTypeVarsInClassType", + "name": "UniqueFunctionSignatureTransformer.transformTypeVarsInClassType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer.transformTypeVarsInClassType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "doForEachConstraintSet", + "func_name": "transformTypeVarsInClassType", "line_range": [ - 4401, - 4435 + 4064, + 4067 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UniqueFunctionSignatureTransformer" }, - "description": "iterate constraint solution sets; build overloads from each context; prevent redundant recursive iteration" + "description": "preserve class types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._getReplacementForDefaultByName", - "name": "ApplySolvedTypeVarsTransformer._getReplacementForDefaultByName", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._getReplacementForDefaultByName", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueFunctionSignatureTransformer.transformTypeVarsInFunctionType", + "name": "UniqueFunctionSignatureTransformer.transformTypeVarsInFunctionType", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueFunctionSignatureTransformer.transformTypeVarsInFunctionType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_getReplacementForDefaultByName", + "func_name": "transformTypeVarsInFunctionType", "line_range": [ - 4442, - 4456 + 4069, + 4112 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UniqueFunctionSignatureTransformer" }, - "description": "lookup replacement by partial typevar name; scan solution set for matching entries" + "description": "preserve nongeneric function types; identify existing function signatures; compute expression offset index; clone and rename function type variables; apply type variable substitutions; record signature occurrence" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._shouldReplaceTypeVar", - "name": "ApplySolvedTypeVarsTransformer._shouldReplaceTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._shouldReplaceTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker", + "name": "UniqueSignatureTracker", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_shouldReplaceTypeVar", + "func_name": "UniqueSignatureTracker", "line_range": [ - 4458, - 4464 - ], - "class_name": "ApplySolvedTypeVarsTransformer" + 248, + 292 + ] }, - "description": "determine replaceability of type variables" + "description": "initialize tracked signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._shouldReplaceUnsolvedTypeVar", - "name": "ApplySolvedTypeVarsTransformer._shouldReplaceUnsolvedTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._shouldReplaceUnsolvedTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.addSignature", + "name": "UniqueSignatureTracker.addSignature", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.addSignature", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_shouldReplaceUnsolvedTypeVar", + "func_name": "addSignature", "line_range": [ - 4466, - 4492 + 279, + 291 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UniqueSignatureTracker" }, - "description": "decide unsolved type variable replacement; respect replacement scope id list; exclude exempted unsolved type variables" + "description": "add or update tracked signature; associate offset with signature" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::ApplySolvedTypeVarsTransformer._solveDefaultType", - "name": "ApplySolvedTypeVarsTransformer._solveDefaultType", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/ApplySolvedTypeVarsTransformer._solveDefaultType", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.addTrackedSignatures", + "name": "UniqueSignatureTracker.addTrackedSignatures", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.addTrackedSignatures", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_solveDefaultType", + "func_name": "addTrackedSignatures", "line_range": [ - 4494, - 4501 + 259, + 265 ], - "class_name": "ApplySolvedTypeVarsTransformer" + "class_name": "UniqueSignatureTracker" }, - "description": "apply default type values recursively; manage default solving state" + "description": "register signatures with offsets" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UnificationTypeTransformer", - "name": "UnificationTypeTransformer", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UnificationTypeTransformer", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.findSignature", + "name": "UniqueSignatureTracker.findSignature", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.findSignature", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "UnificationTypeTransformer", + "func_name": "findSignature", "line_range": [ - 4504, - 4522 - ] + 267, + 277 + ], + "class_name": "UniqueSignatureTracker" }, - "description": "store live type variable scopes; record usage offset for unification variables" + "description": "resolve overload to effective signature; find matching tracked signature" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UnificationTypeTransformer.transformTypeVar", - "name": "UnificationTypeTransformer.transformTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UnificationTypeTransformer.transformTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UniqueSignatureTracker.getTrackedSignatures", + "name": "UniqueSignatureTracker.getTrackedSignatures", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UniqueSignatureTracker.getTrackedSignatures", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "transformTypeVar", + "func_name": "getTrackedSignatures", "line_range": [ - 4509, - 4515 + 255, + 257 ], - "class_name": "UnificationTypeTransformer" + "class_name": "UniqueSignatureTracker" }, - "description": "convert inactive type variable to unification variable; preserve live type variables" + "description": "return tracked signatures list" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::UnificationTypeTransformer._isTypeVarLive", - "name": "UnificationTypeTransformer._isTypeVarLive", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/UnificationTypeTransformer._isTypeVarLive", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts::validateTypeVarDefault", + "name": "validateTypeVarDefault", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeUtils.ts/validateTypeVarDefault", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts", - "func_name": "_isTypeVarLive", + "func_name": "validateTypeVarDefault", "line_range": [ - 4517, - 4521 - ], - "class_name": "UnificationTypeTransformer" + 1627, + 1638 + ] }, - "description": "determine type variable liveness from scopes" + "description": "validate type var default" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::__file__", @@ -27716,22 +27927,6 @@ }, "description": "initialize traversal state; track recursion and cancellation" }, - { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.walk", - "name": "TypeWalker.walk", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.walk", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "walk", - "line_range": [ - 41, - 103 - ], - "class_name": "TypeWalker" - }, - "description": "traverse type graph; enforce recursion limit; respect walk cancellation; visit type alias arguments; dispatch based on category" - }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.cancelWalk", "name": "TypeWalker.cancelWalk", @@ -27749,68 +27944,68 @@ "description": "cancel ongoing traversal" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitTypeAlias", - "name": "TypeWalker.visitTypeAlias", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitAny", + "name": "TypeWalker.visitAny", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitAny", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitTypeAlias", + "func_name": "visitAny", "line_range": [ - 109, - 121 + 127, + 129 ], "class_name": "TypeWalker" }, - "description": "traverse alias type arguments" + "description": "ignore any types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitUnbound", - "name": "TypeWalker.visitUnbound", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitUnbound", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitClass", + "name": "TypeWalker.visitClass", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitUnbound", + "func_name": "visitClass", "line_range": [ - 123, - 125 + 174, + 186 ], "class_name": "TypeWalker" }, - "description": "ignore unbound types" + "description": "traverse class type arguments; skip pseudo generic classes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitAny", - "name": "TypeWalker.visitAny", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitAny", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitFunction", + "name": "TypeWalker.visitFunction", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitAny", + "func_name": "visitFunction", "line_range": [ - 127, - 129 + 139, + 157 ], "class_name": "TypeWalker" }, - "description": "ignore any types" + "description": "traverse function parameter types; traverse function return type; skip unnamed function parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitUnknown", - "name": "TypeWalker.visitUnknown", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitUnknown", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitModule", + "name": "TypeWalker.visitModule", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitUnknown", + "func_name": "visitModule", "line_range": [ - 131, - 133 + 188, + 190 ], "class_name": "TypeWalker" }, - "description": "ignore unknown types" + "description": "ignore module types" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitNever", @@ -27829,68 +28024,68 @@ "description": "ignore never types" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitFunction", - "name": "TypeWalker.visitFunction", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitFunction", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitOverloaded", + "name": "TypeWalker.visitOverloaded", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitOverloaded", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitFunction", + "func_name": "visitOverloaded", "line_range": [ - 139, - 157 + 159, + 172 ], "class_name": "TypeWalker" }, - "description": "traverse function parameter types; traverse function return type; skip unnamed function parameters" + "description": "traverse overload signatures; traverse overload implementation" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitOverloaded", - "name": "TypeWalker.visitOverloaded", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitOverloaded", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitTypeAlias", + "name": "TypeWalker.visitTypeAlias", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitTypeAlias", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitOverloaded", + "func_name": "visitTypeAlias", "line_range": [ - 159, - 172 + 109, + 121 ], "class_name": "TypeWalker" }, - "description": "traverse overload signatures; traverse overload implementation" + "description": "traverse alias type arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitClass", - "name": "TypeWalker.visitClass", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitClass", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitTypeVar", + "name": "TypeWalker.visitTypeVar", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitTypeVar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitClass", + "func_name": "visitTypeVar", "line_range": [ - 174, - 186 + 201, + 203 ], "class_name": "TypeWalker" }, - "description": "traverse class type arguments; skip pseudo generic classes" + "description": "ignore type variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitModule", - "name": "TypeWalker.visitModule", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitModule", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitUnbound", + "name": "TypeWalker.visitUnbound", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitUnbound", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitModule", + "func_name": "visitUnbound", "line_range": [ - 188, - 190 + 123, + 125 ], "class_name": "TypeWalker" }, - "description": "ignore module types" + "description": "ignore unbound types" }, { "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitUnion", @@ -27909,20 +28104,36 @@ "description": "traverse union subtypes" }, { - "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitTypeVar", - "name": "TypeWalker.visitTypeVar", - "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitTypeVar", + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.visitUnknown", + "name": "TypeWalker.visitUnknown", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.visitUnknown", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", - "func_name": "visitTypeVar", + "func_name": "visitUnknown", "line_range": [ - 201, - 203 + 131, + 133 ], "class_name": "TypeWalker" }, - "description": "ignore type variables" + "description": "ignore unknown types" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::TypeWalker.walk", + "name": "TypeWalker.walk", + "feature_path": "pyright-whole-repo/TypeEvaluation/Evaluate type logic/type analysis/typeWalker.ts/TypeWalker.walk", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts", + "func_name": "walk", + "line_range": [ + 41, + 103 + ], + "class_name": "TypeWalker" + }, + "description": "traverse type graph; enforce recursion limit; respect walk cancellation; visit type alias arguments; dispatch based on category" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts::__file__", @@ -28032,116 +28243,84 @@ "description": "create background message channel; initialize analysis cancellation map" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.dispose", - "name": "BackgroundAnalysisBase.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.dispose", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "dispose", - "line_range": [ - 100, - 108 - ], - "class_name": "BackgroundAnalysisBase" - }, - "description": "close message channels; terminate background worker" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setProgramView", - "name": "BackgroundAnalysisBase.setProgramView", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setProgramView", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setProgramView", - "line_range": [ - 110, - 112 - ], - "class_name": "BackgroundAnalysisBase" - }, - "description": "set program view" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setCompletionCallback", - "name": "BackgroundAnalysisBase.setCompletionCallback", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setCompletionCallback", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.addInterimFile", + "name": "BackgroundAnalysisBase.addInterimFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.addInterimFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setCompletionCallback", + "func_name": "addInterimFile", "line_range": [ - 114, - 116 + 156, + 158 ], "class_name": "BackgroundAnalysisBase" }, - "description": "set analysis completion callback" + "description": "register interim file with worker" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setImportResolver", - "name": "BackgroundAnalysisBase.setImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.analyzeFile", + "name": "BackgroundAnalysisBase.analyzeFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.analyzeFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setImportResolver", + "func_name": "analyzeFile", "line_range": [ - 118, - 120 + 183, + 202 ], "class_name": "BackgroundAnalysisBase" }, - "description": "update worker import resolver" + "description": "validate cancellation token; analyze single file in background" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setConfigOptions", - "name": "BackgroundAnalysisBase.setConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.analyzeFileAndGetDiagnostics", + "name": "BackgroundAnalysisBase.analyzeFileAndGetDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.analyzeFileAndGetDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setConfigOptions", + "func_name": "analyzeFileAndGetDiagnostics", "line_range": [ - 122, - 124 + 204, + 223 ], "class_name": "BackgroundAnalysisBase" }, - "description": "update worker config options" + "description": "validate cancellation token; analyze file and return diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setTrackedFiles", - "name": "BackgroundAnalysisBase.setTrackedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setTrackedFiles", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.dispose", + "name": "BackgroundAnalysisBase.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.dispose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setTrackedFiles", + "func_name": "dispose", "line_range": [ - 126, - 128 + 100, + 108 ], "class_name": "BackgroundAnalysisBase" }, - "description": "update worker tracked files" + "description": "close message channels; terminate background worker" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setAllowedThirdPartyImports", - "name": "BackgroundAnalysisBase.setAllowedThirdPartyImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setAllowedThirdPartyImports", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.enqueueRequest", + "name": "BackgroundAnalysisBase.enqueueRequest", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.enqueueRequest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setAllowedThirdPartyImports", + "func_name": "enqueueRequest", "line_range": [ - 130, - 132 + 330, + 334 ], "class_name": "BackgroundAnalysisBase" }, - "description": "set allowed third party imports" + "description": "enqueue request to worker" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.ensurePartialStubPackages", @@ -28160,68 +28339,68 @@ "description": "ensure partial stub packages" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setFileOpened", - "name": "BackgroundAnalysisBase.setFileOpened", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setFileOpened", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.getDiagnosticsForRange", + "name": "BackgroundAnalysisBase.getDiagnosticsForRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.getDiagnosticsForRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setFileOpened", + "func_name": "getDiagnosticsForRange", "line_range": [ - 138, - 143 + 225, + 244 ], "class_name": "BackgroundAnalysisBase" }, - "description": "notify worker of opened file" + "description": "validate cancellation token; get diagnostics for range" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.updateChainedUri", - "name": "BackgroundAnalysisBase.updateChainedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.updateChainedUri", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.handleBackgroundResponse", + "name": "BackgroundAnalysisBase.handleBackgroundResponse", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.handleBackgroundResponse", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "updateChainedUri", + "func_name": "handleBackgroundResponse", "line_range": [ - 145, - 150 + 340, + 376 ], "class_name": "BackgroundAnalysisBase" }, - "description": "update chained file uri" + "description": "deliver analysis results to callback; resume paused analysis work; cleanup and dispose cancelled token" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setFileClosed", - "name": "BackgroundAnalysisBase.setFileClosed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setFileClosed", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.invalidateAndForceReanalysis", + "name": "BackgroundAnalysisBase.invalidateAndForceReanalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.invalidateAndForceReanalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "setFileClosed", + "func_name": "invalidateAndForceReanalysis", "line_range": [ - 152, - 154 + 275, + 277 ], "class_name": "BackgroundAnalysisBase" }, - "description": "notify worker of closed file" + "description": "invalidate and force reanalysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.addInterimFile", - "name": "BackgroundAnalysisBase.addInterimFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.addInterimFile", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.log", + "name": "BackgroundAnalysisBase.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "addInterimFile", + "func_name": "log", "line_range": [ - 156, - 158 + 336, + 338 ], "class_name": "BackgroundAnalysisBase" }, - "description": "register interim file with worker" + "description": "log messages to console" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.markAllFilesDirty", @@ -28256,132 +28435,164 @@ "description": "mark given files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.startAnalysis", - "name": "BackgroundAnalysisBase.startAnalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.startAnalysis", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.onMessage", + "name": "BackgroundAnalysisBase.onMessage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.onMessage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "startAnalysis", + "func_name": "onMessage", "line_range": [ - 171, - 181 + 310, + 328 ], "class_name": "BackgroundAnalysisBase" }, - "description": "register analysis cancellation token; enqueue analysis request" + "description": "route incoming worker messages; invoke analysis completion callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.analyzeFile", - "name": "BackgroundAnalysisBase.analyzeFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.analyzeFile", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.restart", + "name": "BackgroundAnalysisBase.restart", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.restart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "analyzeFile", + "func_name": "restart", "line_range": [ - 183, - 202 + 279, + 281 ], "class_name": "BackgroundAnalysisBase" }, - "description": "validate cancellation token; analyze single file in background" + "description": "restart background analysis worker" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.analyzeFileAndGetDiagnostics", - "name": "BackgroundAnalysisBase.analyzeFileAndGetDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.analyzeFileAndGetDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setAllowedThirdPartyImports", + "name": "BackgroundAnalysisBase.setAllowedThirdPartyImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setAllowedThirdPartyImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "analyzeFileAndGetDiagnostics", + "func_name": "setAllowedThirdPartyImports", "line_range": [ - 204, - 223 + 130, + 132 ], "class_name": "BackgroundAnalysisBase" }, - "description": "validate cancellation token; analyze file and return diagnostics" + "description": "set allowed third party imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.getDiagnosticsForRange", - "name": "BackgroundAnalysisBase.getDiagnosticsForRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.getDiagnosticsForRange", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setCompletionCallback", + "name": "BackgroundAnalysisBase.setCompletionCallback", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setCompletionCallback", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "getDiagnosticsForRange", + "func_name": "setCompletionCallback", "line_range": [ - 225, - 244 + 114, + 116 ], "class_name": "BackgroundAnalysisBase" }, - "description": "validate cancellation token; get diagnostics for range" + "description": "set analysis completion callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.writeTypeStub", - "name": "BackgroundAnalysisBase.writeTypeStub", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.writeTypeStub", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setConfigOptions", + "name": "BackgroundAnalysisBase.setConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "writeTypeStub", + "func_name": "setConfigOptions", "line_range": [ - 246, - 273 + 122, + 124 ], "class_name": "BackgroundAnalysisBase" }, - "description": "validate cancellation token; write type stub file" + "description": "update worker config options" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.invalidateAndForceReanalysis", - "name": "BackgroundAnalysisBase.invalidateAndForceReanalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.invalidateAndForceReanalysis", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setFileClosed", + "name": "BackgroundAnalysisBase.setFileClosed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setFileClosed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "invalidateAndForceReanalysis", + "func_name": "setFileClosed", "line_range": [ - 275, - 277 + 152, + 154 ], "class_name": "BackgroundAnalysisBase" }, - "description": "invalidate and force reanalysis" + "description": "notify worker of closed file" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.restart", - "name": "BackgroundAnalysisBase.restart", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.restart", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setFileOpened", + "name": "BackgroundAnalysisBase.setFileOpened", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setFileOpened", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "restart", + "func_name": "setFileOpened", "line_range": [ - 279, - 281 + 138, + 143 ], "class_name": "BackgroundAnalysisBase" }, - "description": "restart background analysis worker" + "description": "notify worker of opened file" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.shutdown", - "name": "BackgroundAnalysisBase.shutdown", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.shutdown", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setImportResolver", + "name": "BackgroundAnalysisBase.setImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "shutdown", + "func_name": "setImportResolver", "line_range": [ - 283, - 287 + 118, + 120 ], "class_name": "BackgroundAnalysisBase" }, - "description": "shutdown background worker" + "description": "update worker import resolver" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setProgramView", + "name": "BackgroundAnalysisBase.setProgramView", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setProgramView", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", + "func_name": "setProgramView", + "line_range": [ + 110, + 112 + ], + "class_name": "BackgroundAnalysisBase" + }, + "description": "set program view" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setTrackedFiles", + "name": "BackgroundAnalysisBase.setTrackedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.setTrackedFiles", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", + "func_name": "setTrackedFiles", + "line_range": [ + 126, + 128 + ], + "class_name": "BackgroundAnalysisBase" + }, + "description": "update worker tracked files" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.setup", @@ -28400,68 +28611,68 @@ "description": "attach worker event handlers; send message port to worker" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.onMessage", - "name": "BackgroundAnalysisBase.onMessage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.onMessage", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.shutdown", + "name": "BackgroundAnalysisBase.shutdown", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.shutdown", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "onMessage", + "func_name": "shutdown", "line_range": [ - 310, - 328 + 283, + 287 ], "class_name": "BackgroundAnalysisBase" }, - "description": "route incoming worker messages; invoke analysis completion callback" + "description": "shutdown background worker" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.enqueueRequest", - "name": "BackgroundAnalysisBase.enqueueRequest", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.enqueueRequest", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.startAnalysis", + "name": "BackgroundAnalysisBase.startAnalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.startAnalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "enqueueRequest", + "func_name": "startAnalysis", "line_range": [ - 330, - 334 + 171, + 181 ], "class_name": "BackgroundAnalysisBase" }, - "description": "enqueue request to worker" + "description": "register analysis cancellation token; enqueue analysis request" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.log", - "name": "BackgroundAnalysisBase.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.log", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.updateChainedUri", + "name": "BackgroundAnalysisBase.updateChainedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.updateChainedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "log", + "func_name": "updateChainedUri", "line_range": [ - 336, - 338 + 145, + 150 ], "class_name": "BackgroundAnalysisBase" }, - "description": "log messages to console" + "description": "update chained file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.handleBackgroundResponse", - "name": "BackgroundAnalysisBase.handleBackgroundResponse", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.handleBackgroundResponse", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisBase.writeTypeStub", + "name": "BackgroundAnalysisBase.writeTypeStub", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisBase.writeTypeStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleBackgroundResponse", + "func_name": "writeTypeStub", "line_range": [ - 340, - 376 + 246, + 273 ], "class_name": "BackgroundAnalysisBase" }, - "description": "deliver analysis results to callback; resume paused analysis work; cleanup and dispose cancelled token" + "description": "validate cancellation token; write type stub file" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase", @@ -28479,36 +28690,68 @@ "description": "initialize config options; create import resolver; initialize log tracker; initialize program instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.start", - "name": "BackgroundAnalysisRunnerBase.start", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.start", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase._analysisPaused", + "name": "BackgroundAnalysisRunnerBase._analysisPaused", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase._analysisPaused", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "start", + "func_name": "_analysisPaused", "line_range": [ - 418, - 429 + 811, + 813 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "register message handlers; register error and exit handlers; log analysis start" + "description": "signal analysis paused" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.onMessage", - "name": "BackgroundAnalysisRunnerBase.onMessage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.onMessage", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase._onMessageWrapper", + "name": "BackgroundAnalysisRunnerBase._onMessageWrapper", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase._onMessageWrapper", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "onMessage", + "func_name": "_onMessageWrapper", "line_range": [ - 431, - 579 + 773, + 790 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "dispatch background requests; deserialize incoming data; route requests to handlers; take ownership of response port" + "description": "wrap message handling with error capture; capture and report exceptions; translate cancellations into cancel messages" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase._reportDiagnostics", + "name": "BackgroundAnalysisRunnerBase._reportDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase._reportDiagnostics", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", + "func_name": "_reportDiagnostics", + "line_range": [ + 792, + 809 + ], + "class_name": "BackgroundAnalysisRunnerBase" + }, + "description": "report diagnostics tracking results" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.analysisDone", + "name": "BackgroundAnalysisRunnerBase.analysisDone", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.analysisDone", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", + "func_name": "analysisDone", + "line_range": [ + 761, + 763 + ], + "class_name": "BackgroundAnalysisRunnerBase" + }, + "description": "notify analysis completion" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.createHost", @@ -28543,36 +28786,36 @@ "description": "create import resolver with options" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleAnalyze", - "name": "BackgroundAnalysisRunnerBase.handleAnalyze", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleAnalyze", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleAddInterimFile", + "name": "BackgroundAnalysisRunnerBase.handleAddInterimFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleAddInterimFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleAnalyze", + "func_name": "handleAddInterimFile", "line_range": [ - 589, - 605 + 726, + 728 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "report analysis start metrics; initiate resume analysis" + "description": "add interim file to program" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleResumeAnalysis", - "name": "BackgroundAnalysisRunnerBase.handleResumeAnalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleResumeAnalysis", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleAnalyze", + "name": "BackgroundAnalysisRunnerBase.handleAnalyze", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleAnalyze", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleResumeAnalysis", + "func_name": "handleAnalyze", "line_range": [ - 607, - 627 + 589, + 605 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "perform incremental program analysis; report intermediate analysis results; signal analysis paused state; signal analysis completion" + "description": "report analysis start metrics; initiate resume analysis" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleAnalyzeFile", @@ -28607,244 +28850,212 @@ "description": "analyze file and return diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleGetDiagnosticsForRange", - "name": "BackgroundAnalysisRunnerBase.handleGetDiagnosticsForRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleGetDiagnosticsForRange", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleGetDiagnosticsForRange", - "line_range": [ - 638, - 641 - ], - "class_name": "BackgroundAnalysisRunnerBase" - }, - "description": "retrieve diagnostics for range" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleWriteTypeStub", - "name": "BackgroundAnalysisRunnerBase.handleWriteTypeStub", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleWriteTypeStub", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleWriteTypeStub", - "line_range": [ - 643, - 657 - ], - "class_name": "BackgroundAnalysisRunnerBase" - }, - "description": "generate type stub file" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetImportResolver", - "name": "BackgroundAnalysisRunnerBase.handleSetImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleEnsurePartialStubPackages", + "name": "BackgroundAnalysisRunnerBase.handleEnsurePartialStubPackages", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleEnsurePartialStubPackages", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleSetImportResolver", + "func_name": "handleEnsurePartialStubPackages", "line_range": [ - 659, - 666 + 689, + 696 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "reset import resolver; apply resolver to program" + "description": "ensure partial stub packages" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetConfigOptions", - "name": "BackgroundAnalysisRunnerBase.handleSetConfigOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleGetDiagnosticsForRange", + "name": "BackgroundAnalysisRunnerBase.handleGetDiagnosticsForRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleGetDiagnosticsForRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleSetConfigOptions", + "func_name": "handleGetDiagnosticsForRange", "line_range": [ - 668, - 678 + 638, + 641 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "update configuration options; recreate import resolver with host; apply config to program" + "description": "retrieve diagnostics for range" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetTrackedFiles", - "name": "BackgroundAnalysisRunnerBase.handleSetTrackedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetTrackedFiles", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleInvalidateAndForceReanalysis", + "name": "BackgroundAnalysisRunnerBase.handleInvalidateAndForceReanalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleInvalidateAndForceReanalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleSetTrackedFiles", + "func_name": "handleInvalidateAndForceReanalysis", "line_range": [ - 680, - 683 + 738, + 745 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "update tracked files; report diagnostics for tracked files" + "description": "invalidate import resolver cache; force reanalysis of all files" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetAllowedThirdPartyImports", - "name": "BackgroundAnalysisRunnerBase.handleSetAllowedThirdPartyImports", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetAllowedThirdPartyImports", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleMarkAllFilesDirty", + "name": "BackgroundAnalysisRunnerBase.handleMarkAllFilesDirty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleMarkAllFilesDirty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleSetAllowedThirdPartyImports", + "func_name": "handleMarkAllFilesDirty", "line_range": [ - 685, - 687 + 734, + 736 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "configure allowed third party imports" + "description": "mark all files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleEnsurePartialStubPackages", - "name": "BackgroundAnalysisRunnerBase.handleEnsurePartialStubPackages", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleEnsurePartialStubPackages", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleMarkFilesDirty", + "name": "BackgroundAnalysisRunnerBase.handleMarkFilesDirty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleMarkFilesDirty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleEnsurePartialStubPackages", + "func_name": "handleMarkFilesDirty", "line_range": [ - 689, - 696 + 730, + 732 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "ensure partial stub packages" + "description": "mark files dirty" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetFileOpened", - "name": "BackgroundAnalysisRunnerBase.handleSetFileOpened", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetFileOpened", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleRestart", + "name": "BackgroundAnalysisRunnerBase.handleRestart", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleRestart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleSetFileOpened", + "func_name": "handleRestart", "line_range": [ - 698, - 715 + 747, + 754 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "register opened file with contents; manage chained file mapping" + "description": "reinitialize import resolver; apply resolver to program" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleUpdateChainedFileUri", - "name": "BackgroundAnalysisRunnerBase.handleUpdateChainedFileUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleUpdateChainedFileUri", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleResumeAnalysis", + "name": "BackgroundAnalysisRunnerBase.handleResumeAnalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleResumeAnalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleUpdateChainedFileUri", + "func_name": "handleResumeAnalysis", "line_range": [ - 717, - 719 + 607, + 627 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "update chained file uri" + "description": "perform incremental program analysis; report intermediate analysis results; signal analysis paused state; signal analysis completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetFileClosed", - "name": "BackgroundAnalysisRunnerBase.handleSetFileClosed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetFileClosed", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetAllowedThirdPartyImports", + "name": "BackgroundAnalysisRunnerBase.handleSetAllowedThirdPartyImports", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetAllowedThirdPartyImports", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleSetFileClosed", + "func_name": "handleSetAllowedThirdPartyImports", "line_range": [ - 721, - 724 + 685, + 687 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "close file in program; report diagnostics after close" + "description": "configure allowed third party imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleAddInterimFile", - "name": "BackgroundAnalysisRunnerBase.handleAddInterimFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleAddInterimFile", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetConfigOptions", + "name": "BackgroundAnalysisRunnerBase.handleSetConfigOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetConfigOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleAddInterimFile", + "func_name": "handleSetConfigOptions", "line_range": [ - 726, - 728 + 668, + 678 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "add interim file to program" + "description": "update configuration options; recreate import resolver with host; apply config to program" }, - { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleMarkFilesDirty", - "name": "BackgroundAnalysisRunnerBase.handleMarkFilesDirty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleMarkFilesDirty", + { + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetFileClosed", + "name": "BackgroundAnalysisRunnerBase.handleSetFileClosed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetFileClosed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleMarkFilesDirty", + "func_name": "handleSetFileClosed", "line_range": [ - 730, - 732 + 721, + 724 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "mark files dirty" + "description": "close file in program; report diagnostics after close" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleMarkAllFilesDirty", - "name": "BackgroundAnalysisRunnerBase.handleMarkAllFilesDirty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleMarkAllFilesDirty", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetFileOpened", + "name": "BackgroundAnalysisRunnerBase.handleSetFileOpened", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetFileOpened", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleMarkAllFilesDirty", + "func_name": "handleSetFileOpened", "line_range": [ - 734, - 736 + 698, + 715 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "mark all files dirty" + "description": "register opened file with contents; manage chained file mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleInvalidateAndForceReanalysis", - "name": "BackgroundAnalysisRunnerBase.handleInvalidateAndForceReanalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleInvalidateAndForceReanalysis", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetImportResolver", + "name": "BackgroundAnalysisRunnerBase.handleSetImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleInvalidateAndForceReanalysis", + "func_name": "handleSetImportResolver", "line_range": [ - 738, - 745 + 659, + 666 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "invalidate import resolver cache; force reanalysis of all files" + "description": "reset import resolver; apply resolver to program" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleRestart", - "name": "BackgroundAnalysisRunnerBase.handleRestart", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleRestart", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleSetTrackedFiles", + "name": "BackgroundAnalysisRunnerBase.handleSetTrackedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleSetTrackedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "handleRestart", + "func_name": "handleSetTrackedFiles", "line_range": [ - 747, - 754 + 680, + 683 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "reinitialize import resolver; apply resolver to program" + "description": "update tracked files; report diagnostics for tracked files" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleShutdown", @@ -28863,84 +29074,84 @@ "description": "dispose program resources; perform shutdown sequence" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.analysisDone", - "name": "BackgroundAnalysisRunnerBase.analysisDone", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.analysisDone", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleUpdateChainedFileUri", + "name": "BackgroundAnalysisRunnerBase.handleUpdateChainedFileUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleUpdateChainedFileUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "analysisDone", + "func_name": "handleUpdateChainedFileUri", "line_range": [ - 761, - 763 + 717, + 719 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "notify analysis completion" + "description": "update chained file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.onAnalysisCompletion", - "name": "BackgroundAnalysisRunnerBase.onAnalysisCompletion", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.onAnalysisCompletion", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.handleWriteTypeStub", + "name": "BackgroundAnalysisRunnerBase.handleWriteTypeStub", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.handleWriteTypeStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "onAnalysisCompletion", + "func_name": "handleWriteTypeStub", "line_range": [ - 765, - 771 + 643, + 657 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "report analysis completion with results" + "description": "generate type stub file" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase._onMessageWrapper", - "name": "BackgroundAnalysisRunnerBase._onMessageWrapper", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase._onMessageWrapper", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.onAnalysisCompletion", + "name": "BackgroundAnalysisRunnerBase.onAnalysisCompletion", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.onAnalysisCompletion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "_onMessageWrapper", + "func_name": "onAnalysisCompletion", "line_range": [ - 773, - 790 + 765, + 771 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "wrap message handling with error capture; capture and report exceptions; translate cancellations into cancel messages" + "description": "report analysis completion with results" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase._reportDiagnostics", - "name": "BackgroundAnalysisRunnerBase._reportDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase._reportDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.onMessage", + "name": "BackgroundAnalysisRunnerBase.onMessage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.onMessage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "_reportDiagnostics", + "func_name": "onMessage", "line_range": [ - 792, - 809 + 431, + 579 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "report diagnostics tracking results" + "description": "dispatch background requests; deserialize incoming data; route requests to handlers; take ownership of response port" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase._analysisPaused", - "name": "BackgroundAnalysisRunnerBase._analysisPaused", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase._analysisPaused", + "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::BackgroundAnalysisRunnerBase.start", + "name": "BackgroundAnalysisRunnerBase.start", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundAnalysisBase.ts/BackgroundAnalysisRunnerBase.start", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts", - "func_name": "_analysisPaused", + "func_name": "start", "line_range": [ - 811, - 813 + 418, + 429 ], "class_name": "BackgroundAnalysisRunnerBase" }, - "description": "signal analysis paused" + "description": "register message handlers; register error and exit handlers; log analysis start" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts::convertAnalysisResults", @@ -29003,20 +29214,20 @@ "description": "initialize console with parent communicator" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.log", - "name": "BackgroundConsole.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.log", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.error", + "name": "BackgroundConsole.error", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.error", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "log", + "func_name": "error", "line_range": [ - 42, - 44 + 54, + 56 ], "class_name": "BackgroundConsole" }, - "description": "dispatch default level log message" + "description": "dispatch error log message" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.info", @@ -29035,52 +29246,52 @@ "description": "dispatch informational log message" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.warn", - "name": "BackgroundConsole.warn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.warn", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.log", + "name": "BackgroundConsole.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "warn", + "func_name": "log", "line_range": [ - 50, - 52 + 42, + 44 ], "class_name": "BackgroundConsole" }, - "description": "dispatch warning log message" + "description": "dispatch default level log message" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.error", - "name": "BackgroundConsole.error", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.error", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.post", + "name": "BackgroundConsole.post", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.post", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "error", + "func_name": "post", "line_range": [ - 54, - 56 + 58, + 60 ], "class_name": "BackgroundConsole" }, - "description": "dispatch error log message" + "description": "label message as background source; forward log message to parent communicator" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.post", - "name": "BackgroundConsole.post", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.post", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundConsole.warn", + "name": "BackgroundConsole.warn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundConsole.warn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "post", + "func_name": "warn", "line_range": [ - 58, - 60 + 50, + 52 ], "class_name": "BackgroundConsole" }, - "description": "label message as background source; forward log message to parent communicator" + "description": "dispatch warning log message" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundThreadBase", @@ -29097,22 +29308,6 @@ }, "description": "configure cancellation folder name; ensure console service available; ensure temp file service available; ensure case sensitivity detector service; initialize filesystem service; initialize cache manager service; store root directory globally" }, - { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundThreadBase.log", - "name": "BackgroundThreadBase.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundThreadBase.log", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "log", - "line_range": [ - 106, - 108 - ], - "class_name": "BackgroundThreadBase" - }, - "description": "publish log messages to host" - }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundThreadBase.getConsole", "name": "BackgroundThreadBase.getConsole", @@ -29162,34 +29357,35 @@ "description": "dispose services and close channels" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::serializeReplacer", - "name": "serializeReplacer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/serializeReplacer", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::BackgroundThreadBase.log", + "name": "BackgroundThreadBase.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/BackgroundThreadBase.log", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "serializeReplacer", + "func_name": "log", "line_range": [ - 126, - 148 - ] + 106, + 108 + ], + "class_name": "BackgroundThreadBase" }, - "description": "convert special values for serialization; encode complex objects for transport; represent cancellation tokens for transfer" + "description": "publish log messages to host" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::serialize", - "name": "serialize", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/serialize", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::deserialize", + "name": "deserialize", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/deserialize", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "serialize", + "func_name": "deserialize", "line_range": [ - 150, - 153 + 181, + 187 ] }, - "description": "stringify object for message passing; convert runtime values to transferable form" + "description": "parse string into runtime objects; apply custom conversion to rebuild values" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::deserializeReviver", @@ -29207,19 +29403,19 @@ "description": "reconstruct special values from markers; restore complex objects after transmission; recreate cancellation tokens from identifiers" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::deserialize", - "name": "deserialize", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/deserialize", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::getBackgroundWaiter", + "name": "getBackgroundWaiter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/getBackgroundWaiter", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "deserialize", + "func_name": "getBackgroundWaiter", "line_range": [ - 181, - 187 + 234, + 266 ] }, - "description": "parse string into runtime objects; apply custom conversion to rebuild values" + "description": "await response messages from worker; resolve or reject based on message kind; dispatch streaming data to provided handler; deserialize incoming payloads before resolving" }, { "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::run", @@ -29237,19 +29433,34 @@ "description": "execute code and return outcome; handle synchronous and asynchronous results; report success failure or cancellation" }, { - "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::getBackgroundWaiter", - "name": "getBackgroundWaiter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/getBackgroundWaiter", + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::serialize", + "name": "serialize", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/serialize", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", - "func_name": "getBackgroundWaiter", + "func_name": "serialize", "line_range": [ - 234, - 266 + 150, + 153 ] }, - "description": "await response messages from worker; resolve or reject based on message kind; dispatch streaming data to provided handler; deserialize incoming payloads before resolving" + "description": "stringify object for message passing; convert runtime values to transferable form" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts::serializeReplacer", + "name": "serializeReplacer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/backgroundThreadBase.ts/serializeReplacer", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts", + "func_name": "serializeReplacer", + "line_range": [ + 126, + 148 + ] + }, + "description": "convert special values for serialization; encode complex objects for transport; represent cancellation tokens for transfer" }, { "id": "packages/pyright/packages/pyright-internal/src/commands/commandController.ts::__file__", @@ -29406,52 +29617,52 @@ "description": "create type stub for import; invoke post creation hook; notify user on success; trigger workspace reanalysis after creation; detect and log cancellation events; log errors and show error messages; dispose cloned analyzer service" }, { - "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getCloneOptions", - "name": "BaseCreateTypeStubCommand.getCloneOptions", - "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.getCloneOptions", + "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getCancellationMessage", + "name": "BaseCreateTypeStubCommand.getCancellationMessage", + "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.getCancellationMessage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts", - "func_name": "getCloneOptions", + "func_name": "getCancellationMessage", "line_range": [ - 60, - 65 + 92, + 94 ], "class_name": "BaseCreateTypeStubCommand" }, - "description": "provide clone options for stub creation" + "description": "compose cancellation message for user" }, { - "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.onTypeStubCreated", - "name": "BaseCreateTypeStubCommand.onTypeStubCreated", - "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.onTypeStubCreated", + "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getCloneOptions", + "name": "BaseCreateTypeStubCommand.getCloneOptions", + "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.getCloneOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts", - "func_name": "onTypeStubCreated", + "func_name": "getCloneOptions", "line_range": [ - 67, - 69 + 60, + 65 ], "class_name": "BaseCreateTypeStubCommand" }, - "description": "execute post creation hook" + "description": "provide clone options for stub creation" }, { - "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.writeTypeStub", - "name": "BaseCreateTypeStubCommand.writeTypeStub", - "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.writeTypeStub", + "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getErrorPrefix", + "name": "BaseCreateTypeStubCommand.getErrorPrefix", + "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.getErrorPrefix", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts", - "func_name": "writeTypeStub", + "func_name": "getErrorPrefix", "line_range": [ - 71, - 86 + 96, + 98 ], "class_name": "BaseCreateTypeStubCommand" }, - "description": "generate and write type stub; perform stub generation in background" + "description": "compose error message prefix" }, { "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getSuccessMessage", @@ -29470,36 +29681,36 @@ "description": "compose success message for user" }, { - "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getCancellationMessage", - "name": "BaseCreateTypeStubCommand.getCancellationMessage", - "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.getCancellationMessage", + "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.onTypeStubCreated", + "name": "BaseCreateTypeStubCommand.onTypeStubCreated", + "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.onTypeStubCreated", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts", - "func_name": "getCancellationMessage", + "func_name": "onTypeStubCreated", "line_range": [ - 92, - 94 + 67, + 69 ], "class_name": "BaseCreateTypeStubCommand" }, - "description": "compose cancellation message for user" + "description": "execute post creation hook" }, { - "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.getErrorPrefix", - "name": "BaseCreateTypeStubCommand.getErrorPrefix", - "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.getErrorPrefix", + "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::BaseCreateTypeStubCommand.writeTypeStub", + "name": "BaseCreateTypeStubCommand.writeTypeStub", + "feature_path": "pyright-whole-repo/ImportResolution/Register editor features/commands and listeners/createTypeStub.ts/BaseCreateTypeStubCommand.writeTypeStub", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts", - "func_name": "getErrorPrefix", + "func_name": "writeTypeStub", "line_range": [ - 96, - 98 + 71, + 86 ], "class_name": "BaseCreateTypeStubCommand" }, - "description": "compose error message prefix" + "description": "generate and write type stub; perform stub generation in background" }, { "id": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::CreateTypeStubCommand", @@ -29547,6 +29758,36 @@ }, "description": "Dumps tokens, syntax nodes, type info (including cached) and code-flow graph for a given file" }, + { + "id": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts::DumpFileDebugInfo", + "name": "DumpFileDebugInfo", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Bridge filesystem access/virtual and sandbox files/dumpFileDebugInfoCommand.ts/DumpFileDebugInfo", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts", + "func_name": "DumpFileDebugInfo", + "line_range": [ + 36, + 120 + ] + } + }, + { + "id": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts::DumpFileDebugInfo.dump", + "name": "DumpFileDebugInfo.dump", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Bridge filesystem access/virtual and sandbox files/dumpFileDebugInfoCommand.ts/DumpFileDebugInfo.dump", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts", + "func_name": "dump", + "line_range": [ + 37, + 119 + ], + "class_name": "DumpFileDebugInfo" + }, + "description": "determine dump kind; validate parse results existence; verify required arguments for dump kind; collect debug output messages; dump token information; dump syntax node information; dump type information for range; dump cached type information for range; dump code flow graph at offset; aggregate output and print to console" + }, { "id": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts::DumpFileDebugInfoCommand", "name": "DumpFileDebugInfoCommand", @@ -29578,36 +29819,6 @@ }, "description": "check cancellation token; validate command arguments count; parse file uri from arguments; resolve workspace for file; invoke dump file debug info" }, - { - "id": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts::DumpFileDebugInfo", - "name": "DumpFileDebugInfo", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Bridge filesystem access/virtual and sandbox files/dumpFileDebugInfoCommand.ts/DumpFileDebugInfo", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts", - "func_name": "DumpFileDebugInfo", - "line_range": [ - 36, - 120 - ] - } - }, - { - "id": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts::DumpFileDebugInfo.dump", - "name": "DumpFileDebugInfo.dump", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Bridge filesystem access/virtual and sandbox files/dumpFileDebugInfoCommand.ts/DumpFileDebugInfo.dump", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts", - "func_name": "dump", - "line_range": [ - 37, - 119 - ], - "class_name": "DumpFileDebugInfo" - }, - "description": "determine dump kind; validate parse results existence; verify required arguments for dump kind; collect debug output messages; dump token information; dump syntax node information; dump type information for range; dump cached type information for range; dump code flow graph at offset; aggregate output and print to console" - }, { "id": "packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts::__file__", "name": "quickActionCommand", @@ -29699,157 +29910,51 @@ "class_name": "RestartServerCommand" }, "description": "restart language server instance" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts::__file__", - "name": "asyncInitialization", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/asyncInitialization.ts", - "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts", - "func_name": "asyncInitialization", - "line_range": [ - 1, - 20 - ] - }, - "description": "Initializes runtime dependencies for Pyright, including TOML support and production source-map support" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts::initializeDependencies", - "name": "initializeDependencies", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/asyncInitialization.ts/initializeDependencies", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts", - "func_name": "initializeDependencies", - "line_range": [ - 11, - 19 - ] - }, - "description": "load optional configuration parser module; enable enhanced error mapping in production" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::__file__", - "name": "cancellationUtils", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts", - "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "cancellationUtils", - "line_range": [ - 1, - 298 - ] - }, - "description": "Cancellation utilities: combining tokens, file-based tokens, throttling, timeouts, and cancellation-aware racing" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::getCancellationFolderName", - "name": "getCancellationFolderName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationFolderName", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "getCancellationFolderName", - "line_range": [ - 28, - 30 - ] - }, - "description": "get cancellation folder name" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::setCancellationFolderName", - "name": "setCancellationFolderName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/setCancellationFolderName", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "setCancellationFolderName", - "line_range": [ - 32, - 34 - ] - }, - "description": "set cancellation folder name" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::invalidateTypeCacheIfCanceled", - "name": "invalidateTypeCacheIfCanceled", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/invalidateTypeCacheIfCanceled", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "invalidateTypeCacheIfCanceled", - "line_range": [ - 36, - 48 - ] - }, - "description": "execute callback with cancellation handling; mark type cache invalid on cancellation" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::OperationCanceledException", - "name": "OperationCanceledException", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/OperationCanceledException", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "OperationCanceledException", - "line_range": [ - 50, - 62 - ] - }, - "description": "create operation cancelled exception; provide default cancellation message" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::OperationCanceledException.is", - "name": "OperationCanceledException.is", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/OperationCanceledException.is", + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts::__file__", + "name": "asyncInitialization", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/asyncInitialization.ts", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "is", + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts", + "func_name": "asyncInitialization", "line_range": [ - 59, - 61 - ], - "class_name": "OperationCanceledException" + 1, + 20 + ] }, - "description": "identify operation cancelled errors" + "description": "Initializes runtime dependencies for Pyright, including TOML support and production source-map support" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::throwIfCancellationRequested", - "name": "throwIfCancellationRequested", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/throwIfCancellationRequested", + "id": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts::initializeDependencies", + "name": "initializeDependencies", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/asyncInitialization.ts/initializeDependencies", "meta": { "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "throwIfCancellationRequested", + "path": "packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts", + "func_name": "initializeDependencies", "line_range": [ - 64, - 70 + 11, + 19 ] }, - "description": "throw if cancellation requested" + "description": "load optional configuration parser module; enable enhanced error mapping in production" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::onCancellationRequested", - "name": "onCancellationRequested", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/onCancellationRequested", + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::__file__", + "name": "cancellationUtils", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts", "meta": { - "type": "function", + "type": "file", "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "onCancellationRequested", + "func_name": "cancellationUtils", "line_range": [ - 74, - 83 + 1, + 298 ] }, - "description": "attach cancellation listener safely" + "description": "Cancellation utilities: combining tokens, file-based tokens, throttling, timeouts, and cancellation-aware racing" }, { "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::CancelAfter", @@ -29866,6 +29971,37 @@ }, "description": "create cancellation source from provider" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::CancellationThrottle", + "name": "CancellationThrottle", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/CancellationThrottle", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "CancellationThrottle", + "line_range": [ + 211, + 231 + ] + }, + "description": "initialize throttle timestamp" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::CancellationThrottle.shouldCheck", + "name": "CancellationThrottle.shouldCheck", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/CancellationThrottle.shouldCheck", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "shouldCheck", + "line_range": [ + 214, + 230 + ], + "class_name": "CancellationThrottle" + }, + "description": "throttle cancellation checks; enforce minimum check interval; update last check timestamp" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::createCombinedToken", "name": "createCombinedToken", @@ -29882,19 +30018,19 @@ "description": "create combined cancellation token" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::setupCombinedTokensFor", - "name": "setupCombinedTokensFor", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/setupCombinedTokensFor", + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::createCombinedTokenWithTimeout", + "name": "createCombinedTokenWithTimeout", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/createCombinedTokenWithTimeout", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "setupCombinedTokensFor", + "func_name": "createCombinedTokenWithTimeout", "line_range": [ - 97, - 122 + 270, + 275 ] }, - "description": "cancel source if any token canceled; dispose listeners when source cancels" + "description": "create timeout bound cancellation source" }, { "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::DefaultCancellationProvider", @@ -29927,21 +30063,6 @@ }, "description": "create cancellation token source" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::getCancellationTokenId", - "name": "getCancellationTokenId", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationTokenId", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "getCancellationTokenId", - "line_range": [ - 132, - 139 - ] - }, - "description": "get cancellation token id" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::FileBasedToken", "name": "FileBasedToken", @@ -29957,6 +30078,38 @@ }, "description": "create file based cancellation token; store filesystem interface dependency" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::FileBasedToken._disposeEmitter", + "name": "FileBasedToken._disposeEmitter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedToken._disposeEmitter", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "_disposeEmitter", + "line_range": [ + 194, + 199 + ], + "class_name": "FileBasedToken" + }, + "description": "dispose event emitter; clear emitter reference" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::FileBasedToken._pipeExists", + "name": "FileBasedToken._pipeExists", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedToken._pipeExists", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "_pipeExists", + "line_range": [ + 201, + 208 + ], + "class_name": "FileBasedToken" + }, + "description": "check cancellation file existence" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::FileBasedToken.cancel", "name": "FileBasedToken.cancel", @@ -29990,67 +30143,155 @@ "description": "release cancellation resources" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::FileBasedToken._disposeEmitter", - "name": "FileBasedToken._disposeEmitter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedToken._disposeEmitter", + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::getCancellationFolderName", + "name": "getCancellationFolderName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationFolderName", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "_disposeEmitter", + "func_name": "getCancellationFolderName", "line_range": [ - 194, - 199 - ], - "class_name": "FileBasedToken" + 28, + 30 + ] }, - "description": "dispose event emitter; clear emitter reference" + "description": "get cancellation folder name" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::FileBasedToken._pipeExists", - "name": "FileBasedToken._pipeExists", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedToken._pipeExists", + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::getCancellationTokenId", + "name": "getCancellationTokenId", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationTokenId", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "_pipeExists", + "func_name": "getCancellationTokenId", "line_range": [ - 201, - 208 - ], - "class_name": "FileBasedToken" + 132, + 139 + ] }, - "description": "check cancellation file existence" + "description": "get cancellation token id" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::CancellationThrottle", - "name": "CancellationThrottle", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/CancellationThrottle", + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::invalidateTypeCacheIfCanceled", + "name": "invalidateTypeCacheIfCanceled", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/invalidateTypeCacheIfCanceled", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "invalidateTypeCacheIfCanceled", + "line_range": [ + 36, + 48 + ] + }, + "description": "execute callback with cancellation handling; mark type cache invalid on cancellation" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::onCancellationRequested", + "name": "onCancellationRequested", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/onCancellationRequested", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "onCancellationRequested", + "line_range": [ + 74, + 83 + ] + }, + "description": "attach cancellation listener safely" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::OperationCanceledException", + "name": "OperationCanceledException", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/OperationCanceledException", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "CancellationThrottle", + "func_name": "OperationCanceledException", "line_range": [ - 211, - 231 + 50, + 62 ] }, - "description": "initialize throttle timestamp" + "description": "create operation cancelled exception; provide default cancellation message" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::CancellationThrottle.shouldCheck", - "name": "CancellationThrottle.shouldCheck", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/CancellationThrottle.shouldCheck", + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::OperationCanceledException.is", + "name": "OperationCanceledException.is", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/OperationCanceledException.is", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "shouldCheck", + "func_name": "is", "line_range": [ - 214, - 230 + 59, + 61 ], - "class_name": "CancellationThrottle" + "class_name": "OperationCanceledException" }, - "description": "throttle cancellation checks; enforce minimum check interval; update last check timestamp" + "description": "identify operation cancelled errors" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::raceCancellation", + "name": "raceCancellation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/raceCancellation", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "raceCancellation", + "line_range": [ + 277, + 297 + ] + }, + "description": "race promises with cancellation support" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::setCancellationFolderName", + "name": "setCancellationFolderName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/setCancellationFolderName", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "setCancellationFolderName", + "line_range": [ + 32, + 34 + ] + }, + "description": "set cancellation folder name" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::setupCombinedTokensFor", + "name": "setupCombinedTokensFor", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/setupCombinedTokensFor", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "setupCombinedTokensFor", + "line_range": [ + 97, + 122 + ] + }, + "description": "cancel source if any token canceled; dispose listeners when source cancels" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::throwIfCancellationRequested", + "name": "throwIfCancellationRequested", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/throwIfCancellationRequested", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", + "func_name": "throwIfCancellationRequested", + "line_range": [ + 64, + 70 + ] + }, + "description": "throw if cancellation requested" }, { "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::TimeoutCancellationTokenSource", @@ -30099,36 +30340,6 @@ }, "description": "clear pending timeout timer; dispose underlying cancellation source" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::createCombinedTokenWithTimeout", - "name": "createCombinedTokenWithTimeout", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/createCombinedTokenWithTimeout", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "createCombinedTokenWithTimeout", - "line_range": [ - 270, - 275 - ] - }, - "description": "create timeout bound cancellation source" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts::raceCancellation", - "name": "raceCancellation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/cancellationUtils.ts/raceCancellation", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts", - "func_name": "raceCancellation", - "line_range": [ - 277, - 297 - ] - }, - "description": "race promises with cancellation support" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts::__file__", "name": "caseSensitivityDetector", @@ -30190,36 +30401,36 @@ "description": "store console interface" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts::ChokidarFileWatcherProvider.createFileWatcher", - "name": "ChokidarFileWatcherProvider.createFileWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/chokidarFileWatcherProvider.ts/ChokidarFileWatcherProvider.createFileWatcher", + "id": "packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts::ChokidarFileWatcherProvider._createFileSystemWatcher", + "name": "ChokidarFileWatcherProvider._createFileSystemWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/chokidarFileWatcherProvider.ts/ChokidarFileWatcherProvider._createFileSystemWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts", - "func_name": "createFileWatcher", + "func_name": "_createFileSystemWatcher", "line_range": [ - 20, - 22 + 24, + 69 ], "class_name": "ChokidarFileWatcherProvider" }, - "description": "create file watcher for paths; attach listener to file watcher events" + "description": "create file system watcher for paths; configure watcher performance and stability options; exclude system directories from watching; log watcher errors to console; detect native watcher availability and log" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts::ChokidarFileWatcherProvider._createFileSystemWatcher", - "name": "ChokidarFileWatcherProvider._createFileSystemWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/chokidarFileWatcherProvider.ts/ChokidarFileWatcherProvider._createFileSystemWatcher", + "id": "packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts::ChokidarFileWatcherProvider.createFileWatcher", + "name": "ChokidarFileWatcherProvider.createFileWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/chokidarFileWatcherProvider.ts/ChokidarFileWatcherProvider.createFileWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts", - "func_name": "_createFileSystemWatcher", + "func_name": "createFileWatcher", "line_range": [ - 24, - 69 + 20, + 22 ], "class_name": "ChokidarFileWatcherProvider" }, - "description": "create file system watcher for paths; configure watcher performance and stability options; exclude system directories from watching; log watcher errors to console; detect native watcher availability and log" + "description": "create file watcher for paths; attach listener to file watcher events" }, { "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::__file__", @@ -30237,94 +30448,34 @@ "description": "Provides utility helpers for arrays and maps, including searching, sorting, transforming, and mutating collections" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::contains", - "name": "contains", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/contains", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "contains", - "line_range": [ - 14, - 27 - ] - }, - "description": "check array contains value" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::append", - "name": "append", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/append", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "append", - "line_range": [ - 49, - 58 - ] - }, - "description": "append value to array" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::appendArray", - "name": "appendArray", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/appendArray", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "appendArray", - "line_range": [ - 65, - 74 - ] - }, - "description": "append elements to array" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::partition", - "name": "partition", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/partition", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "partition", - "line_range": [ - 77, - 90 - ] - }, - "description": "partition array by predicate" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::find", - "name": "find", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/find", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::addIfNotNull", + "name": "addIfNotNull", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/addIfNotNull", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "find", + "func_name": "addIfNotNull", "line_range": [ - 98, - 106 + 397, + 404 ] }, - "description": "find first matching element" + "description": "append value when defined" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::toOffset", - "name": "toOffset", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/toOffset", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::addIfUnique", + "name": "addIfUnique", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/addIfUnique", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "toOffset", + "func_name": "addIfUnique", "line_range": [ - 112, - 114 + 377, + 384 ] }, - "description": "normalize offset relative to array" + "description": "add element if unique in array" }, { "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::addRange", @@ -30342,124 +30493,124 @@ "description": "append slice from source array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::insertAt", - "name": "insertAt", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/insertAt", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::append", + "name": "append", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/append", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "insertAt", + "func_name": "append", "line_range": [ - 155, - 167 + 49, + 58 ] }, - "description": "insert element at index" + "description": "append value to array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::cloneAndSort", - "name": "cloneAndSort", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/cloneAndSort", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::appendArray", + "name": "appendArray", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/appendArray", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "cloneAndSort", + "func_name": "appendArray", "line_range": [ - 182, - 184 + 65, + 74 ] }, - "description": "return sorted copy of array" + "description": "append elements to array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::selectIndex", - "name": "selectIndex", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/selectIndex", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::arrayEquals", + "name": "arrayEquals", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/arrayEquals", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "selectIndex", + "func_name": "arrayEquals", "line_range": [ - 186, - 188 + 406, + 412 ] }, - "description": "return element index" + "description": "compare arrays by element predicate" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::indicesOf", - "name": "indicesOf", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/indicesOf", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::binarySearch", + "name": "binarySearch", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/binarySearch", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "indicesOf", + "func_name": "binarySearch", "line_range": [ - 190, - 192 + 254, + 262 ] }, - "description": "compute indices of array" + "description": "find index for value in sorted array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::stableSort", - "name": "stableSort", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/stableSort", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::binarySearchKey", + "name": "binarySearchKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/binarySearchKey", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "stableSort", + "func_name": "binarySearchKey", "line_range": [ - 197, - 201 + 274, + 303 ] }, - "description": "stable sort array preserving order" + "description": "binary search for key in sorted array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::stableSortIndices", - "name": "stableSortIndices", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/stableSortIndices", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::cloneAndSort", + "name": "cloneAndSort", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/cloneAndSort", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "stableSortIndices", + "func_name": "cloneAndSort", "line_range": [ - 203, - 206 + 182, + 184 ] }, - "description": "stable sort indices by values" + "description": "return sorted copy of array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::map", - "name": "map", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/map", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::contains", + "name": "contains", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/contains", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "map", + "func_name": "contains", "line_range": [ - 210, - 215 + 14, + 27 ] }, - "description": "map function over optional array" + "description": "check array contains value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::some", - "name": "some", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/some", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::createMapFromItems", + "name": "createMapFromItems", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/createMapFromItems", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "some", + "func_name": "createMapFromItems", "line_range": [ - 219, - 228 + 368, + 375 ] }, - "description": "test predicate over array; check array nonempty" + "description": "group items into map by key" }, { "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::every", @@ -30477,49 +30628,49 @@ "description": "test all elements satisfy predicate; treat undefined array as true" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::binarySearch", - "name": "binarySearch", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/binarySearch", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::find", + "name": "find", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/find", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "binarySearch", + "func_name": "find", "line_range": [ - 254, - 262 + 98, + 106 ] }, - "description": "find index for value in sorted array" + "description": "find first matching element" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::binarySearchKey", - "name": "binarySearchKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/binarySearchKey", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::flatten", + "name": "flatten", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/flatten", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "binarySearchKey", + "func_name": "flatten", "line_range": [ - 274, - 303 + 310, + 322 ] }, - "description": "binary search for key in sorted array" + "description": "flatten nested arrays and values" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::flatten", - "name": "flatten", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/flatten", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::getMapValues", + "name": "getMapValues", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/getMapValues", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "flatten", + "func_name": "getMapValues", "line_range": [ - 310, - 322 + 386, + 395 ] }, - "description": "flatten nested arrays and values" + "description": "collect map values matching predicate" }, { "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::getNestedProperty", @@ -30551,6 +30702,66 @@ }, "description": "get or add value to map" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::indicesOf", + "name": "indicesOf", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/indicesOf", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", + "func_name": "indicesOf", + "line_range": [ + 190, + 192 + ] + }, + "description": "compute indices of array" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::insertAt", + "name": "insertAt", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/insertAt", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", + "func_name": "insertAt", + "line_range": [ + 155, + 167 + ] + }, + "description": "insert element at index" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::map", + "name": "map", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/map", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", + "func_name": "map", + "line_range": [ + 210, + 215 + ] + }, + "description": "map function over optional array" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::partition", + "name": "partition", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/partition", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", + "func_name": "partition", + "line_range": [ + 77, + 90 + ] + }, + "description": "partition array by predicate" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::removeArrayElements", "name": "removeArrayElements", @@ -30567,79 +30778,79 @@ "description": "remove elements from array by predicate" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::createMapFromItems", - "name": "createMapFromItems", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/createMapFromItems", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::selectIndex", + "name": "selectIndex", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/selectIndex", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "createMapFromItems", + "func_name": "selectIndex", "line_range": [ - 368, - 375 + 186, + 188 ] }, - "description": "group items into map by key" + "description": "return element index" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::addIfUnique", - "name": "addIfUnique", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/addIfUnique", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::some", + "name": "some", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/some", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "addIfUnique", + "func_name": "some", "line_range": [ - 377, - 384 + 219, + 228 ] }, - "description": "add element if unique in array" + "description": "test predicate over array; check array nonempty" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::getMapValues", - "name": "getMapValues", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/getMapValues", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::stableSort", + "name": "stableSort", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/stableSort", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "getMapValues", + "func_name": "stableSort", "line_range": [ - 386, - 395 + 197, + 201 ] }, - "description": "collect map values matching predicate" + "description": "stable sort array preserving order" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::addIfNotNull", - "name": "addIfNotNull", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/addIfNotNull", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::stableSortIndices", + "name": "stableSortIndices", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/stableSortIndices", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "addIfNotNull", + "func_name": "stableSortIndices", "line_range": [ - 397, - 404 + 203, + 206 ] }, - "description": "append value when defined" + "description": "stable sort indices by values" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::arrayEquals", - "name": "arrayEquals", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/arrayEquals", + "id": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::toOffset", + "name": "toOffset", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/collectionUtils.ts/toOffset", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts", - "func_name": "arrayEquals", + "func_name": "toOffset", "line_range": [ - 406, - 412 + 112, + 114 ] }, - "description": "compare arrays by element predicate" + "description": "normalize offset relative to array" }, { "id": "packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts::__file__", @@ -30656,21 +30867,6 @@ }, "description": "Defines command-line and language-server configuration option types for Pyright including config and server settings" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts::getDiagnosticSeverityOverrides", - "name": "getDiagnosticSeverityOverrides", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Register editor features/commands and listeners/commandLineOptions.ts/getDiagnosticSeverityOverrides", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts", - "func_name": "getDiagnosticSeverityOverrides", - "line_range": [ - 23, - 30 - ] - }, - "description": "list diagnostic severity overrides; provide severity options in priority order" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts::CommandLineConfigOptions", "name": "CommandLineConfigOptions", @@ -30716,6 +30912,21 @@ }, "description": "initialize default config settings; initialize default language server settings; set execution root; flag settings as from language server; provide storage for config file path" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts::getDiagnosticSeverityOverrides", + "name": "getDiagnosticSeverityOverrides", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Register editor features/commands and listeners/commandLineOptions.ts/getDiagnosticSeverityOverrides", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts", + "func_name": "getDiagnosticSeverityOverrides", + "line_range": [ + 23, + 30 + ] + }, + "description": "list diagnostic severity overrides; provide severity options in priority order" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/commandUtils.ts::__file__", "name": "commandUtils", @@ -30761,21 +30972,6 @@ }, "description": "Defines ExecutionEnvironment and ConfigOptions along with helpers for diagnostic rule sets and file-spec matching" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ExecutionEnvironment", - "name": "ExecutionEnvironment", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ExecutionEnvironment", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "ExecutionEnvironment", - "line_range": [ - 42, - 86 - ] - }, - "description": "set environment name; set root directory; set default python version; set python platform; configure extra import paths; apply diagnostic rule set; set skip native libraries flag" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::cloneDiagnosticRuleSet", "name": "cloneDiagnosticRuleSet", @@ -30792,155 +30988,163 @@ "description": "clone diagnostic rule set" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getBooleanDiagnosticRules", - "name": "getBooleanDiagnosticRules", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getBooleanDiagnosticRules", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions", + "name": "ConfigOptions", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getBooleanDiagnosticRules", + "func_name": "ConfigOptions", "line_range": [ - 410, - 431 + 951, + 1777 ] }, - "description": "retrieve boolean diagnostic rules; include non overridable rules when requested" + "description": "initialize project root; initialize diagnostic rule set; set default signature display" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getDiagLevelDiagnosticRules", - "name": "getDiagLevelDiagnosticRules", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getDiagLevelDiagnosticRules", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._convertBoolean", + "name": "ConfigOptions._convertBoolean", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._convertBoolean", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getDiagLevelDiagnosticRules", + "func_name": "_convertBoolean", "line_range": [ - 435, - 519 - ] + 1628, + 1637 + ], + "class_name": "ConfigOptions" }, - "description": "retrieve diagnostic level rules" + "description": "convert value to boolean; log invalid boolean entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getStrictModeNotOverriddenRules", - "name": "getStrictModeNotOverriddenRules", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getStrictModeNotOverriddenRules", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._convertDiagnosticLevel", + "name": "ConfigOptions._convertDiagnosticLevel", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._convertDiagnosticLevel", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getStrictModeNotOverriddenRules", + "func_name": "_convertDiagnosticLevel", "line_range": [ - 521, - 525 - ] + 1639, + 1652 + ], + "class_name": "ConfigOptions" }, - "description": "retrieve strict mode non overridden rules" + "description": "convert value to diagnostic level; validate diagnostic level entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getOffDiagnosticRuleSet", - "name": "getOffDiagnosticRuleSet", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getOffDiagnosticRuleSet", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._getEnvironmentName", + "name": "ConfigOptions._getEnvironmentName", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._getEnvironmentName", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getOffDiagnosticRuleSet", + "func_name": "_getEnvironmentName", "line_range": [ - 527, - 628 - ] + 1624, + 1626 + ], + "class_name": "ConfigOptions" }, - "description": "return off diagnostic rule set; suppress most diagnostics by default" + "description": "compute execution environment name" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getBasicDiagnosticRuleSet", - "name": "getBasicDiagnosticRuleSet", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getBasicDiagnosticRuleSet", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._initExecutionEnvironmentFromJson", + "name": "ConfigOptions._initExecutionEnvironmentFromJson", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._initExecutionEnvironmentFromJson", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getBasicDiagnosticRuleSet", + "func_name": "_initExecutionEnvironmentFromJson", "line_range": [ - 630, - 731 - ] + 1654, + 1776 + ], + "class_name": "ConfigOptions" }, - "description": "return basic diagnostic rule set; configure basic diagnostic severities" + "description": "initialize execution environment from config; validate environment fields and values; apply environment diagnostic overrides; report unrecognized environment settings" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getStandardDiagnosticRuleSet", - "name": "getStandardDiagnosticRuleSet", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getStandardDiagnosticRuleSet", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.applyDiagnosticOverrides", + "name": "ConfigOptions.applyDiagnosticOverrides", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.applyDiagnosticOverrides", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getStandardDiagnosticRuleSet", + "func_name": "applyDiagnosticOverrides", "line_range": [ - 733, - 834 - ] + 1571, + 1591 + ], + "class_name": "ConfigOptions" }, - "description": "return standard diagnostic rule set; set stricter diagnostic severities for standard mode" + "description": "apply diagnostic severity overrides; apply boolean diagnostic overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getStrictDiagnosticRuleSet", - "name": "getStrictDiagnosticRuleSet", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getStrictDiagnosticRuleSet", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.ensureDefaultExtraPaths", + "name": "ConfigOptions.ensureDefaultExtraPaths", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.ensureDefaultExtraPaths", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getStrictDiagnosticRuleSet", + "func_name": "ensureDefaultExtraPaths", "line_range": [ - 836, - 937 - ] + 1545, + 1569 + ], + "class_name": "ConfigOptions" }, - "description": "create strict diagnostic rule set; enable strict type inference; treat many diagnostics as errors; preserve explicit non strict settings" + "description": "populate default extra search paths; include auto detected source path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::matchFileSpecs", - "name": "matchFileSpecs", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/matchFileSpecs", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.ensureDefaultPythonPlatform", + "name": "ConfigOptions.ensureDefaultPythonPlatform", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.ensureDefaultPythonPlatform", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "matchFileSpecs", + "func_name": "ensureDefaultPythonPlatform", "line_range": [ - 939, - 947 - ] + 1514, + 1525 + ], + "class_name": "ConfigOptions" }, - "description": "match uri against include specs; respect configured exclude patterns; determine file inclusion status" + "description": "determine and set default platform" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions", - "name": "ConfigOptions", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.ensureDefaultPythonVersion", + "name": "ConfigOptions.ensureDefaultPythonVersion", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.ensureDefaultPythonVersion", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "ConfigOptions", + "func_name": "ensureDefaultPythonVersion", "line_range": [ - 951, - 1777 - ] + 1527, + 1543 + ], + "class_name": "ConfigOptions" }, - "description": "initialize project root; initialize diagnostic rule set; set default signature display" + "description": "detect and set python version; log assumed python version" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.getDiagnosticRuleSet", - "name": "ConfigOptions.getDiagnosticRuleSet", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.getDiagnosticRuleSet", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.findExecEnvironment", + "name": "ConfigOptions.findExecEnvironment", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.findExecEnvironment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "getDiagnosticRuleSet", + "func_name": "findExecEnvironment", "line_range": [ - 1091, - 1105 + 1123, + 1130 ], "class_name": "ConfigOptions" }, - "description": "select diagnostic rule set based on mode" + "description": "find matching execution environment for file; fall back to default execution environment" }, { "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.getDefaultExecEnvironment", @@ -30959,20 +31163,20 @@ "description": "create default execution environment; use config defaults for environment" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.findExecEnvironment", - "name": "ConfigOptions.findExecEnvironment", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.findExecEnvironment", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.getDiagnosticRuleSet", + "name": "ConfigOptions.getDiagnosticRuleSet", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.getDiagnosticRuleSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "findExecEnvironment", + "func_name": "getDiagnosticRuleSet", "line_range": [ - 1123, - 1130 + 1091, + 1105 ], "class_name": "ConfigOptions" }, - "description": "find matching execution environment for file; fall back to default execution environment" + "description": "select diagnostic rule set based on mode" }, { "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.getExecutionEnvironments", @@ -30991,36 +31195,36 @@ "description": "list configured execution environments; provide default environment when empty" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.initializeTypeCheckingMode", - "name": "ConfigOptions.initializeTypeCheckingMode", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.initializeTypeCheckingMode", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.initializeFromJson", + "name": "ConfigOptions.initializeFromJson", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.initializeFromJson", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "initializeTypeCheckingMode", + "func_name": "initializeFromJson", "line_range": [ - 1140, - 1150 + 1153, + 1500 ], "class_name": "ConfigOptions" }, - "description": "set diagnostic rules by mode; apply diagnostic severity overrides; set effective type checking mode" + "description": "load configuration from file; validate and normalize configuration values; populate config properties and lists; report configuration parsing errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.initializeFromJson", - "name": "ConfigOptions.initializeFromJson", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.initializeFromJson", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.initializeTypeCheckingMode", + "name": "ConfigOptions.initializeTypeCheckingMode", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.initializeTypeCheckingMode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "initializeFromJson", + "func_name": "initializeTypeCheckingMode", "line_range": [ - 1153, - 1500 + 1140, + 1150 ], "class_name": "ConfigOptions" }, - "description": "load configuration from file; validate and normalize configuration values; populate config properties and lists; report configuration parsing errors" + "description": "set diagnostic rules by mode; apply diagnostic severity overrides; set effective type checking mode" }, { "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.resolveExtends", @@ -31039,148 +31243,155 @@ "description": "resolve extended configuration references; merge extended configuration settings" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.ensureDefaultPythonPlatform", - "name": "ConfigOptions.ensureDefaultPythonPlatform", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.ensureDefaultPythonPlatform", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.setupExecutionEnvironments", + "name": "ConfigOptions.setupExecutionEnvironments", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.setupExecutionEnvironments", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "ensureDefaultPythonPlatform", + "func_name": "setupExecutionEnvironments", "line_range": [ - 1514, - 1525 + 1593, + 1622 ], "class_name": "ConfigOptions" }, - "description": "determine and set default platform" + "description": "configure execution environments from config; initialize and validate each environment" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ExecutionEnvironment", + "name": "ExecutionEnvironment", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ExecutionEnvironment", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", + "func_name": "ExecutionEnvironment", + "line_range": [ + 42, + 86 + ] + }, + "description": "set environment name; set root directory; set default python version; set python platform; configure extra import paths; apply diagnostic rule set; set skip native libraries flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.ensureDefaultPythonVersion", - "name": "ConfigOptions.ensureDefaultPythonVersion", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.ensureDefaultPythonVersion", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getBasicDiagnosticRuleSet", + "name": "getBasicDiagnosticRuleSet", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getBasicDiagnosticRuleSet", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "ensureDefaultPythonVersion", + "func_name": "getBasicDiagnosticRuleSet", "line_range": [ - 1527, - 1543 - ], - "class_name": "ConfigOptions" + 630, + 731 + ] }, - "description": "detect and set python version; log assumed python version" + "description": "return basic diagnostic rule set; configure basic diagnostic severities" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.ensureDefaultExtraPaths", - "name": "ConfigOptions.ensureDefaultExtraPaths", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.ensureDefaultExtraPaths", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getBooleanDiagnosticRules", + "name": "getBooleanDiagnosticRules", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getBooleanDiagnosticRules", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "ensureDefaultExtraPaths", + "func_name": "getBooleanDiagnosticRules", "line_range": [ - 1545, - 1569 - ], - "class_name": "ConfigOptions" + 410, + 431 + ] }, - "description": "populate default extra search paths; include auto detected source path" + "description": "retrieve boolean diagnostic rules; include non overridable rules when requested" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.applyDiagnosticOverrides", - "name": "ConfigOptions.applyDiagnosticOverrides", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.applyDiagnosticOverrides", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getDiagLevelDiagnosticRules", + "name": "getDiagLevelDiagnosticRules", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getDiagLevelDiagnosticRules", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "applyDiagnosticOverrides", + "func_name": "getDiagLevelDiagnosticRules", "line_range": [ - 1571, - 1591 - ], - "class_name": "ConfigOptions" + 435, + 519 + ] }, - "description": "apply diagnostic severity overrides; apply boolean diagnostic overrides" + "description": "retrieve diagnostic level rules" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions.setupExecutionEnvironments", - "name": "ConfigOptions.setupExecutionEnvironments", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions.setupExecutionEnvironments", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getOffDiagnosticRuleSet", + "name": "getOffDiagnosticRuleSet", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getOffDiagnosticRuleSet", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "setupExecutionEnvironments", + "func_name": "getOffDiagnosticRuleSet", "line_range": [ - 1593, - 1622 - ], - "class_name": "ConfigOptions" + 527, + 628 + ] }, - "description": "configure execution environments from config; initialize and validate each environment" + "description": "return off diagnostic rule set; suppress most diagnostics by default" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._getEnvironmentName", - "name": "ConfigOptions._getEnvironmentName", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._getEnvironmentName", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getStandardDiagnosticRuleSet", + "name": "getStandardDiagnosticRuleSet", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getStandardDiagnosticRuleSet", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "_getEnvironmentName", + "func_name": "getStandardDiagnosticRuleSet", "line_range": [ - 1624, - 1626 - ], - "class_name": "ConfigOptions" + 733, + 834 + ] }, - "description": "compute execution environment name" + "description": "return standard diagnostic rule set; set stricter diagnostic severities for standard mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._convertBoolean", - "name": "ConfigOptions._convertBoolean", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._convertBoolean", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getStrictDiagnosticRuleSet", + "name": "getStrictDiagnosticRuleSet", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getStrictDiagnosticRuleSet", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "_convertBoolean", + "func_name": "getStrictDiagnosticRuleSet", "line_range": [ - 1628, - 1637 - ], - "class_name": "ConfigOptions" + 836, + 937 + ] }, - "description": "convert value to boolean; log invalid boolean entries" + "description": "create strict diagnostic rule set; enable strict type inference; treat many diagnostics as errors; preserve explicit non strict settings" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._convertDiagnosticLevel", - "name": "ConfigOptions._convertDiagnosticLevel", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._convertDiagnosticLevel", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::getStrictModeNotOverriddenRules", + "name": "getStrictModeNotOverriddenRules", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/getStrictModeNotOverriddenRules", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "_convertDiagnosticLevel", + "func_name": "getStrictModeNotOverriddenRules", "line_range": [ - 1639, - 1652 - ], - "class_name": "ConfigOptions" + 521, + 525 + ] }, - "description": "convert value to diagnostic level; validate diagnostic level entries" + "description": "retrieve strict mode non overridden rules" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::ConfigOptions._initExecutionEnvironmentFromJson", - "name": "ConfigOptions._initExecutionEnvironmentFromJson", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/ConfigOptions._initExecutionEnvironmentFromJson", + "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::matchFileSpecs", + "name": "matchFileSpecs", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/configOptions.ts/matchFileSpecs", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts", - "func_name": "_initExecutionEnvironmentFromJson", + "func_name": "matchFileSpecs", "line_range": [ - 1654, - 1776 - ], - "class_name": "ConfigOptions" + 939, + 947 + ] }, - "description": "initialize execution environment from config; validate environment fields and values; apply environment diagnostic overrides; report unrecognized environment settings" + "description": "match uri against include specs; respect configured exclude patterns; determine file inclusion status" }, { "id": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::parseDiagLevel", @@ -31213,477 +31424,477 @@ "description": "Provides a logging abstraction with levels, multiple console implementations, chaining, cloning, and disposable support" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::getLevelNumber", - "name": "getLevelNumber", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/getLevelNumber", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "getLevelNumber", - "line_range": [ - 46, - 48 - ] - }, - "description": "map log level to number; return default number when missing" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole", - "name": "NullConsole", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel", + "name": "ConsoleWithLogLevel", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "NullConsole", + "func_name": "ConsoleWithLogLevel", "line_range": [ - 53, - 74 + 171, + 265 ] }, - "description": "initialize message counters; provide silent console instance" + "description": "initialize named console wrapper; store underlying console reference" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.log", - "name": "NullConsole.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.log", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel._getNumericalLevel", + "name": "ConsoleWithLogLevel._getNumericalLevel", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel._getNumericalLevel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "log", + "func_name": "_getNumericalLevel", "line_range": [ - 59, - 61 + 256, + 260 ], - "class_name": "NullConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "increment log call count; suppress log output" + "description": "map log level to numeric value; validate log level value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.info", - "name": "NullConsole.info", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.info", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel._log", + "name": "ConsoleWithLogLevel._log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel._log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "info", + "func_name": "_log", "line_range": [ - 63, - 65 + 242, + 254 ], - "class_name": "NullConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "increment info call count; suppress info output" + "description": "dispatch messages to chained destinations; filter messages by configured level; write messages to primary console; abort logging when disposed" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.warn", - "name": "NullConsole.warn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.warn", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel._processChains", + "name": "ConsoleWithLogLevel._processChains", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel._processChains", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "warn", + "func_name": "_processChains", "line_range": [ - 67, - 69 + 262, + 264 ], - "class_name": "NullConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "increment warn call count; suppress warn output" + "description": "forward messages to chained destinations" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.error", - "name": "NullConsole.error", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.error", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.addChain", + "name": "ConsoleWithLogLevel.addChain", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.addChain", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "error", + "func_name": "addChain", "line_range": [ - 71, - 73 + 230, + 232 ], - "class_name": "NullConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "increment error call count; suppress error output" + "description": "register chained log destination" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole", - "name": "StandardConsole", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.clone", + "name": "ConsoleWithLogLevel.clone", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.clone", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "StandardConsole", + "func_name": "clone", "line_range": [ - 76, - 106 - ] + 207, + 212 + ], + "class_name": "ConsoleWithLogLevel" }, - "description": "set maximum log level" + "description": "create new named console clone; preserve configured log level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.log", - "name": "StandardConsole.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.log", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.dispose", + "name": "ConsoleWithLogLevel.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.dispose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "log", + "func_name": "dispose", "line_range": [ - 83, - 87 + 203, + 205 ], - "class_name": "StandardConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "write log messages when level permits" + "description": "mark console as disposed; prevent further logging" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.info", - "name": "StandardConsole.info", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.info", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.error", + "name": "ConsoleWithLogLevel.error", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.error", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "info", + "func_name": "error", "line_range": [ - 89, - 93 + 214, + 216 ], - "class_name": "StandardConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "write info messages when level permits" + "description": "emit error level messages; prefix messages with logger name" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.warn", - "name": "StandardConsole.warn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.warn", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.info", + "name": "ConsoleWithLogLevel.info", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.info", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "warn", + "func_name": "info", "line_range": [ - 95, - 99 + 222, + 224 ], - "class_name": "StandardConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "write warning messages when level permits" + "description": "emit informational level messages; prefix messages with logger name" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.error", - "name": "StandardConsole.error", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.error", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.log", + "name": "ConsoleWithLogLevel.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "error", + "func_name": "log", "line_range": [ - 101, - 105 + 226, + 228 ], - "class_name": "StandardConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "write error messages when level permits" + "description": "emit standard log messages; prefix messages with logger name" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole", - "name": "StderrConsole", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.removeChain", + "name": "ConsoleWithLogLevel.removeChain", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.removeChain", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "StderrConsole", + "func_name": "removeChain", "line_range": [ - 108, - 138 - ] + 234, + 236 + ], + "class_name": "ConsoleWithLogLevel" }, - "description": "set maximum log level" + "description": "unregister chained log destination" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.log", - "name": "StderrConsole.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.log", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.warn", + "name": "ConsoleWithLogLevel.warn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.warn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "log", + "func_name": "warn", "line_range": [ - 115, - 119 + 218, + 220 ], - "class_name": "StderrConsole" + "class_name": "ConsoleWithLogLevel" }, - "description": "output message at log level" + "description": "emit warning level messages; prefix messages with logger name" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.info", - "name": "StderrConsole.info", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.info", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::convertLogLevel", + "name": "convertLogLevel", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/convertLogLevel", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "info", + "func_name": "convertLogLevel", "line_range": [ - 121, - 125 - ], - "class_name": "StderrConsole" + 290, + 311 + ] }, - "description": "output message at info level" + "description": "convert string to log level; default to information level when missing" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.warn", - "name": "StderrConsole.warn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.warn", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::getLevelNumber", + "name": "getLevelNumber", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/getLevelNumber", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "warn", + "func_name": "getLevelNumber", "line_range": [ - 127, - 131 - ], - "class_name": "StderrConsole" + 46, + 48 + ] }, - "description": "output message at warn level" + "description": "map log level to number; return default number when missing" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.error", - "name": "StderrConsole.error", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.error", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::log", + "name": "log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/log", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "error", + "func_name": "log", "line_range": [ - 133, - 137 - ], - "class_name": "StderrConsole" + 267, + 288 + ] }, - "description": "output message at error level" + "description": "emit message using corresponding console method; assert on unexpected log type" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel", - "name": "ConsoleWithLogLevel", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole", + "name": "NullConsole", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "ConsoleWithLogLevel", + "func_name": "NullConsole", "line_range": [ - 171, - 265 + 53, + 74 ] }, - "description": "initialize named console wrapper; store underlying console reference" + "description": "initialize message counters; provide silent console instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.dispose", - "name": "ConsoleWithLogLevel.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.dispose", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.error", + "name": "NullConsole.error", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.error", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "dispose", + "func_name": "error", "line_range": [ - 203, - 205 + 71, + 73 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "NullConsole" }, - "description": "mark console as disposed; prevent further logging" + "description": "increment error call count; suppress error output" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.clone", - "name": "ConsoleWithLogLevel.clone", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.clone", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.info", + "name": "NullConsole.info", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.info", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "clone", + "func_name": "info", "line_range": [ - 207, - 212 + 63, + 65 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "NullConsole" }, - "description": "create new named console clone; preserve configured log level" + "description": "increment info call count; suppress info output" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.error", - "name": "ConsoleWithLogLevel.error", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.error", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.log", + "name": "NullConsole.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "error", + "func_name": "log", "line_range": [ - 214, - 216 + 59, + 61 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "NullConsole" }, - "description": "emit error level messages; prefix messages with logger name" + "description": "increment log call count; suppress log output" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.warn", - "name": "ConsoleWithLogLevel.warn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.warn", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::NullConsole.warn", + "name": "NullConsole.warn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/NullConsole.warn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", "func_name": "warn", "line_range": [ - 218, - 220 + 67, + 69 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "NullConsole" + }, + "description": "increment warn call count; suppress warn output" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole", + "name": "StandardConsole", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", + "func_name": "StandardConsole", + "line_range": [ + 76, + 106 + ] }, - "description": "emit warning level messages; prefix messages with logger name" + "description": "set maximum log level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.info", - "name": "ConsoleWithLogLevel.info", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.info", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.error", + "name": "StandardConsole.error", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.error", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "info", + "func_name": "error", "line_range": [ - 222, - 224 + 101, + 105 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "StandardConsole" }, - "description": "emit informational level messages; prefix messages with logger name" + "description": "write error messages when level permits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.log", - "name": "ConsoleWithLogLevel.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.log", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.info", + "name": "StandardConsole.info", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.info", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "log", + "func_name": "info", "line_range": [ - 226, - 228 + 89, + 93 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "StandardConsole" }, - "description": "emit standard log messages; prefix messages with logger name" + "description": "write info messages when level permits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.addChain", - "name": "ConsoleWithLogLevel.addChain", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.addChain", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.log", + "name": "StandardConsole.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "addChain", + "func_name": "log", "line_range": [ - 230, - 232 + 83, + 87 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "StandardConsole" }, - "description": "register chained log destination" + "description": "write log messages when level permits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel.removeChain", - "name": "ConsoleWithLogLevel.removeChain", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel.removeChain", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StandardConsole.warn", + "name": "StandardConsole.warn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StandardConsole.warn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "removeChain", + "func_name": "warn", "line_range": [ - 234, - 236 + 95, + 99 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "StandardConsole" }, - "description": "unregister chained log destination" + "description": "write warning messages when level permits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel._log", - "name": "ConsoleWithLogLevel._log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel._log", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole", + "name": "StderrConsole", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "_log", + "func_name": "StderrConsole", "line_range": [ - 242, - 254 - ], - "class_name": "ConsoleWithLogLevel" + 108, + 138 + ] }, - "description": "dispatch messages to chained destinations; filter messages by configured level; write messages to primary console; abort logging when disposed" + "description": "set maximum log level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel._getNumericalLevel", - "name": "ConsoleWithLogLevel._getNumericalLevel", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel._getNumericalLevel", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.error", + "name": "StderrConsole.error", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.error", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "_getNumericalLevel", + "func_name": "error", "line_range": [ - 256, - 260 + 133, + 137 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "StderrConsole" }, - "description": "map log level to numeric value; validate log level value" + "description": "output message at error level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::ConsoleWithLogLevel._processChains", - "name": "ConsoleWithLogLevel._processChains", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/ConsoleWithLogLevel._processChains", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.info", + "name": "StderrConsole.info", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.info", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "_processChains", + "func_name": "info", "line_range": [ - 262, - 264 + 121, + 125 ], - "class_name": "ConsoleWithLogLevel" + "class_name": "StderrConsole" }, - "description": "forward messages to chained destinations" + "description": "output message at info level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::log", - "name": "log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/log", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.log", + "name": "StderrConsole.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.log", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", "func_name": "log", "line_range": [ - 267, - 288 - ] + 115, + 119 + ], + "class_name": "StderrConsole" }, - "description": "emit message using corresponding console method; assert on unexpected log type" + "description": "output message at log level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::convertLogLevel", - "name": "convertLogLevel", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/convertLogLevel", + "id": "packages/pyright/packages/pyright-internal/src/common/console.ts::StderrConsole.warn", + "name": "StderrConsole.warn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/console.ts/StderrConsole.warn", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/console.ts", - "func_name": "convertLogLevel", + "func_name": "warn", "line_range": [ - 290, - 311 - ] + 127, + 131 + ], + "class_name": "StderrConsole" }, - "description": "convert string to log level; default to information level when missing" + "description": "output message at warn level" }, { "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::__file__", @@ -31701,124 +31912,124 @@ "description": "Utility helpers and type guards for core operations like comparisons, type checks, cloning, and promise detection" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::returnFalse", - "name": "returnFalse", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/returnFalse", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::cloneStr", + "name": "cloneStr", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/cloneStr", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "returnFalse", + "func_name": "cloneStr", "line_range": [ - 22, - 24 + 186, + 202 ] }, - "description": "return false value" + "description": "create independent string copy; avoid retaining original memory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::returnTrue", - "name": "returnTrue", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/returnTrue", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::compareComparableValues", + "name": "compareComparableValues", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/compareComparableValues", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "returnTrue", + "func_name": "compareComparableValues", "line_range": [ - 27, - 29 + 52, + 62 ] }, - "description": "return true value" + "description": "compare values and return ordering" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::returnUndefined", - "name": "returnUndefined", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/returnUndefined", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::compareValues", + "name": "compareValues", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/compareValues", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "returnUndefined", + "func_name": "compareValues", "line_range": [ - 32, - 34 + 68, + 70 ] }, - "description": "return undefined value" + "description": "compare numeric values" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::identity", - "name": "identity", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/identity", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::containsOnlyWhitespace", + "name": "containsOnlyWhitespace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/containsOnlyWhitespace", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "identity", + "func_name": "containsOnlyWhitespace", "line_range": [ - 37, - 39 + 178, + 184 ] }, - "description": "return input value" + "description": "check substring contains only whitespace" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::toLowerCase", - "name": "toLowerCase", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/toLowerCase", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::equateValues", + "name": "equateValues", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/equateValues", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "toLowerCase", + "func_name": "equateValues", "line_range": [ - 42, - 44 + 46, + 48 ] }, - "description": "convert string to lowercase" + "description": "compare values for equality" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::equateValues", - "name": "equateValues", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/equateValues", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::getEnumNames", + "name": "getEnumNames", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/getEnumNames", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "equateValues", + "func_name": "getEnumNames", "line_range": [ - 46, - 48 + 167, + 176 ] }, - "description": "compare values for equality" + "description": "get enum names" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::compareComparableValues", - "name": "compareComparableValues", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/compareComparableValues", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::hasProperty", + "name": "hasProperty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/hasProperty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "compareComparableValues", + "func_name": "hasProperty", "line_range": [ - 52, - 62 + 114, + 116 ] }, - "description": "compare values and return ordering" + "description": "check object has property" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::compareValues", - "name": "compareValues", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/compareValues", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::identity", + "name": "identity", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/identity", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "compareValues", + "func_name": "identity", "line_range": [ - 68, - 70 + 37, + 39 ] }, - "description": "compare numeric values" + "description": "return input value" }, { "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isArray", @@ -31836,109 +32047,109 @@ "description": "check if value is array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isString", - "name": "isString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isString", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isBoolean", + "name": "isBoolean", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isBoolean", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isString", + "func_name": "isBoolean", "line_range": [ - 82, - 84 + 90, + 92 ] }, - "description": "check if value is string" + "description": "check if value is boolean" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isNumber", - "name": "isNumber", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isNumber", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isDebugMode", + "name": "isDebugMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isDebugMode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isNumber", + "func_name": "isDebugMode", "line_range": [ - 86, - 88 + 138, + 146 ] }, - "description": "check if value is number" + "description": "determine debug mode state; cache debug mode result" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isBoolean", - "name": "isBoolean", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isBoolean", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isDefined", + "name": "isDefined", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isDefined", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isBoolean", + "func_name": "isDefined", "line_range": [ - 90, - 92 + 163, + 165 ] }, - "description": "check if value is boolean" + "description": "check if value is defined" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::hasProperty", - "name": "hasProperty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/hasProperty", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isMap", + "name": "isMap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isMap", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "hasProperty", + "func_name": "isMap", "line_range": [ - 114, - 116 + 210, + 212 ] }, - "description": "check object has property" + "description": "check if value is map" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::toBoolean", - "name": "toBoolean", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/toBoolean", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isNumber", + "name": "isNumber", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isNumber", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "toBoolean", + "func_name": "isNumber", "line_range": [ - 122, - 129 + 86, + 88 ] }, - "description": "convert string to boolean" + "description": "check if value is number" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::test_setDebugMode", - "name": "test_setDebugMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/test_setDebugMode", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isPromise", + "name": "isPromise", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isPromise", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "test_setDebugMode", + "func_name": "isPromise", "line_range": [ - 132, - 136 + 214, + 221 ] }, - "description": "set debug mode flag; return previous debug mode" + "description": "check if value is promise" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isDebugMode", - "name": "isDebugMode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isDebugMode", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isString", + "name": "isString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isDebugMode", + "func_name": "isString", "line_range": [ - 138, - 146 + 82, + 84 ] }, - "description": "determine debug mode state; cache debug mode result" + "description": "check if value is string" }, { "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isThenable", @@ -31956,94 +32167,94 @@ "description": "check if value is thenable" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isDefined", - "name": "isDefined", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isDefined", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::returnFalse", + "name": "returnFalse", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/returnFalse", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isDefined", + "func_name": "returnFalse", "line_range": [ - 163, - 165 + 22, + 24 ] }, - "description": "check if value is defined" + "description": "return false value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::getEnumNames", - "name": "getEnumNames", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/getEnumNames", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::returnTrue", + "name": "returnTrue", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/returnTrue", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "getEnumNames", + "func_name": "returnTrue", "line_range": [ - 167, - 176 + 27, + 29 ] }, - "description": "get enum names" + "description": "return true value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::containsOnlyWhitespace", - "name": "containsOnlyWhitespace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/containsOnlyWhitespace", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::returnUndefined", + "name": "returnUndefined", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/returnUndefined", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "containsOnlyWhitespace", + "func_name": "returnUndefined", "line_range": [ - 178, - 184 + 32, + 34 ] }, - "description": "check substring contains only whitespace" + "description": "return undefined value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::cloneStr", - "name": "cloneStr", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/cloneStr", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::test_setDebugMode", + "name": "test_setDebugMode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/test_setDebugMode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "cloneStr", + "func_name": "test_setDebugMode", "line_range": [ - 186, - 202 + 132, + 136 ] }, - "description": "create independent string copy; avoid retaining original memory" + "description": "set debug mode flag; return previous debug mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isMap", - "name": "isMap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isMap", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::toBoolean", + "name": "toBoolean", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/toBoolean", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isMap", + "func_name": "toBoolean", "line_range": [ - 210, - 212 + 122, + 129 ] }, - "description": "check if value is map" + "description": "convert string to boolean" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::isPromise", - "name": "isPromise", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/isPromise", + "id": "packages/pyright/packages/pyright-internal/src/common/core.ts::toLowerCase", + "name": "toLowerCase", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/core.ts/toLowerCase", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/core.ts", - "func_name": "isPromise", + "func_name": "toLowerCase", "line_range": [ - 214, - 221 + 42, + 44 ] }, - "description": "check if value is promise" + "description": "convert string to lowercase" }, { "id": "packages/pyright/packages/pyright-internal/src/common/crypto.ts::__file__", @@ -32120,21 +32331,6 @@ }, "description": "assert expression truthiness; append verbose debug information" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::fail", - "name": "fail", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/fail", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/debug.ts", - "func_name": "fail", - "line_range": [ - 28, - 35 - ] - }, - "description": "report debug failure; capture error stack trace" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::assertDefined", "name": "assertDefined", @@ -32181,19 +32377,19 @@ "description": "assert unreachable code path; include value detail in message" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getFunctionName", - "name": "getFunctionName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/getFunctionName", + "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::fail", + "name": "fail", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/fail", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/debug.ts", - "func_name": "getFunctionName", + "func_name": "fail", "line_range": [ - 69, - 79 + 28, + 35 ] }, - "description": "get function name" + "description": "report debug failure; capture error stack trace" }, { "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::formatEnum", @@ -32210,6 +32406,21 @@ }, "description": "format enum value; format flag combinations" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getEnumMembers", + "name": "getEnumMembers", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/getEnumMembers", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/debug.ts", + "func_name": "getEnumMembers", + "line_range": [ + 141, + 151 + ] + }, + "description": "get enum members; sort members by numeric value" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getErrorString", "name": "getErrorString", @@ -32226,34 +32437,34 @@ "description": "get error string representation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getSerializableError", - "name": "getSerializableError", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/getSerializableError", + "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getFunctionName", + "name": "getFunctionName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/getFunctionName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/debug.ts", - "func_name": "getSerializableError", + "func_name": "getFunctionName", "line_range": [ - 122, - 139 + 69, + 79 ] }, - "description": "normalize error to serializable shape" + "description": "get function name" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getEnumMembers", - "name": "getEnumMembers", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/getEnumMembers", + { + "id": "packages/pyright/packages/pyright-internal/src/common/debug.ts::getSerializableError", + "name": "getSerializableError", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/debug.ts/getSerializableError", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/debug.ts", - "func_name": "getEnumMembers", + "func_name": "getSerializableError", "line_range": [ - 141, - 151 + 122, + 139 ] }, - "description": "get enum members; sort members by numeric value" + "description": "normalize error to serializable shape" }, { "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::__file__", @@ -32270,53 +32481,6 @@ }, "description": "Provides Deferred promise utilities with resolve/reject/completion state and helpers to create from promises" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::DeferredImpl", - "name": "DeferredImpl", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/deferred.ts/DeferredImpl", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/common/deferred.ts", - "func_name": "DeferredImpl", - "line_range": [ - 18, - 59 - ] - }, - "description": "create deferred promise object; capture resolve and reject callbacks; initialize completion state flags; store optional callback scope" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::DeferredImpl.resolve", - "name": "DeferredImpl.resolve", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/deferred.ts/DeferredImpl.resolve", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/deferred.ts", - "func_name": "resolve", - "line_range": [ - 48, - 52 - ], - "class_name": "DeferredImpl" - }, - "description": "fulfill deferred promise with value; invoke resolve callback with arguments; mark promise as resolved" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::DeferredImpl.reject", - "name": "DeferredImpl.reject", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/deferred.ts/DeferredImpl.reject", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/deferred.ts", - "func_name": "reject", - "line_range": [ - 54, - 58 - ], - "class_name": "DeferredImpl" - }, - "description": "reject deferred promise with reason; invoke reject callback with arguments; mark promise as rejected" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::createDeferred", "name": "createDeferred", @@ -32362,6 +32526,53 @@ }, "description": "wrap promise into deferred; propagate promise outcome to deferred" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::DeferredImpl", + "name": "DeferredImpl", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/deferred.ts/DeferredImpl", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/deferred.ts", + "func_name": "DeferredImpl", + "line_range": [ + 18, + 59 + ] + }, + "description": "create deferred promise object; capture resolve and reject callbacks; initialize completion state flags; store optional callback scope" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::DeferredImpl.reject", + "name": "DeferredImpl.reject", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/deferred.ts/DeferredImpl.reject", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/deferred.ts", + "func_name": "reject", + "line_range": [ + 54, + 58 + ], + "class_name": "DeferredImpl" + }, + "description": "reject deferred promise with reason; invoke reject callback with arguments; mark promise as rejected" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/deferred.ts::DeferredImpl.resolve", + "name": "DeferredImpl.resolve", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/deferred.ts/DeferredImpl.resolve", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/deferred.ts", + "func_name": "resolve", + "line_range": [ + 48, + 52 + ], + "class_name": "DeferredImpl" + }, + "description": "fulfill deferred promise with value; invoke resolve callback with arguments; mark promise as resolved" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::__file__", "name": "diagnostic", @@ -32377,6 +32588,21 @@ }, "description": "Defines Diagnostic types, serialization, comparison, and addendum helpers for building and formatting diagnostics" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::compareDiagnostics", + "name": "compareDiagnostics", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/compareDiagnostics", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", + "func_name": "compareDiagnostics", + "line_range": [ + 173, + 187 + ] + }, + "description": "order diagnostics by start position" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::convertLevelToCategory", "name": "convertLevelToCategory", @@ -32408,68 +32634,68 @@ "description": "create diagnostic with core attributes" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.toJsonObj", - "name": "Diagnostic.toJsonObj", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.toJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.addAction", + "name": "Diagnostic.addAction", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.addAction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "toJsonObj", + "func_name": "addAction", "line_range": [ - 113, - 124 + 135, + 141 ], "class_name": "Diagnostic" }, - "description": "serialize diagnostic to json object" + "description": "add action to diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.fromJsonObj", - "name": "Diagnostic.fromJsonObj", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.fromJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.addRelatedInfo", + "name": "Diagnostic.addRelatedInfo", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.addRelatedInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "fromJsonObj", + "func_name": "addRelatedInfo", "line_range": [ - 126, - 133 + 163, + 165 ], "class_name": "Diagnostic" }, - "description": "create diagnostic from json object" + "description": "attach related file info to diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.addAction", - "name": "Diagnostic.addAction", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.addAction", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.fromJsonObj", + "name": "Diagnostic.fromJsonObj", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.fromJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "addAction", + "func_name": "fromJsonObj", "line_range": [ - 135, - 141 + 126, + 133 ], "class_name": "Diagnostic" }, - "description": "add action to diagnostic" + "description": "create diagnostic from json object" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.setData", - "name": "Diagnostic.setData", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.setData", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.getActions", + "name": "Diagnostic.getActions", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.getActions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "setData", + "func_name": "getActions", "line_range": [ - 143, - 145 + 151, + 153 ], "class_name": "Diagnostic" }, - "description": "attach arbitrary data to diagnostic" + "description": "retrieve actions from diagnostic" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.getData", @@ -32488,36 +32714,20 @@ "description": "retrieve attached data from diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.getActions", - "name": "Diagnostic.getActions", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.getActions", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "getActions", - "line_range": [ - 151, - 153 - ], - "class_name": "Diagnostic" - }, - "description": "retrieve actions from diagnostic" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.setRule", - "name": "Diagnostic.setRule", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.setRule", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.getRelatedInfo", + "name": "Diagnostic.getRelatedInfo", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.getRelatedInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "setRule", + "func_name": "getRelatedInfo", "line_range": [ - 155, - 157 + 167, + 169 ], "class_name": "Diagnostic" }, - "description": "assign rule identifier to diagnostic" + "description": "retrieve related information from diagnostic" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.getRule", @@ -32536,51 +32746,52 @@ "description": "retrieve rule identifier from diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.addRelatedInfo", - "name": "Diagnostic.addRelatedInfo", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.addRelatedInfo", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.setData", + "name": "Diagnostic.setData", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.setData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "addRelatedInfo", + "func_name": "setData", "line_range": [ - 163, - 165 + 143, + 145 ], "class_name": "Diagnostic" }, - "description": "attach related file info to diagnostic" + "description": "attach arbitrary data to diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.getRelatedInfo", - "name": "Diagnostic.getRelatedInfo", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.getRelatedInfo", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.setRule", + "name": "Diagnostic.setRule", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.setRule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "getRelatedInfo", + "func_name": "setRule", "line_range": [ - 167, - 169 + 155, + 157 ], "class_name": "Diagnostic" }, - "description": "retrieve related information from diagnostic" + "description": "assign rule identifier to diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::compareDiagnostics", - "name": "compareDiagnostics", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/compareDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::Diagnostic.toJsonObj", + "name": "Diagnostic.toJsonObj", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/Diagnostic.toJsonObj", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "compareDiagnostics", + "func_name": "toJsonObj", "line_range": [ - 173, - 187 - ] + 113, + 124 + ], + "class_name": "Diagnostic" }, - "description": "order diagnostics by start position" + "description": "serialize diagnostic to json object" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum", @@ -32597,6 +32808,70 @@ }, "description": "initialize addendum state" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum._getLinesRecursive", + "name": "DiagnosticAddendum._getLinesRecursive", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum._getLinesRecursive", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", + "func_name": "_getLinesRecursive", + "line_range": [ + 318, + 339 + ], + "class_name": "DiagnosticAddendum" + }, + "description": "assemble formatted lines for output; apply depth and line limits" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum._getMessageCount", + "name": "DiagnosticAddendum._getMessageCount", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum._getMessageCount", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", + "func_name": "_getMessageCount", + "line_range": [ + 303, + 316 + ], + "class_name": "DiagnosticAddendum" + }, + "description": "count messages including children" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum._getTextRangeRecursive", + "name": "DiagnosticAddendum._getTextRangeRecursive", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum._getTextRangeRecursive", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", + "func_name": "_getTextRangeRecursive", + "line_range": [ + 278, + 301 + ], + "class_name": "DiagnosticAddendum" + }, + "description": "aggregate child text ranges" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.addAddendum", + "name": "DiagnosticAddendum.addAddendum", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.addAddendum", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", + "func_name": "addAddendum", + "line_range": [ + 247, + 249 + ], + "class_name": "DiagnosticAddendum" + }, + "description": "add child addendum" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.addMessage", "name": "DiagnosticAddendum.addMessage", @@ -32662,68 +32937,36 @@ "description": "create nested addendum instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getString", - "name": "DiagnosticAddendum.getString", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.getString", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "getString", - "line_range": [ - 227, - 241 - ], - "class_name": "DiagnosticAddendum" - }, - "description": "format addendum as string; limit output depth and lines" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.isEmpty", - "name": "DiagnosticAddendum.isEmpty", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.isEmpty", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "isEmpty", - "line_range": [ - 243, - 245 - ], - "class_name": "DiagnosticAddendum" - }, - "description": "check if addendum is empty" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.addAddendum", - "name": "DiagnosticAddendum.addAddendum", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.addAddendum", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getChildren", + "name": "DiagnosticAddendum.getChildren", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.getChildren", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "addAddendum", + "func_name": "getChildren", "line_range": [ - 247, - 249 + 251, + 253 ], "class_name": "DiagnosticAddendum" }, - "description": "add child addendum" + "description": "retrieve nested child addenda list" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getChildren", - "name": "DiagnosticAddendum.getChildren", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.getChildren", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getEffectiveTextRange", + "name": "DiagnosticAddendum.getEffectiveTextRange", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.getEffectiveTextRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "getChildren", + "func_name": "getEffectiveTextRange", "line_range": [ - 251, - 253 + 266, + 276 ], "class_name": "DiagnosticAddendum" }, - "description": "retrieve nested child addenda list" + "description": "determine effective text range" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getMessages", @@ -32758,68 +33001,36 @@ "description": "get addendum nest level" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getEffectiveTextRange", - "name": "DiagnosticAddendum.getEffectiveTextRange", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.getEffectiveTextRange", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "getEffectiveTextRange", - "line_range": [ - 266, - 276 - ], - "class_name": "DiagnosticAddendum" - }, - "description": "determine effective text range" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum._getTextRangeRecursive", - "name": "DiagnosticAddendum._getTextRangeRecursive", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum._getTextRangeRecursive", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "_getTextRangeRecursive", - "line_range": [ - 278, - 301 - ], - "class_name": "DiagnosticAddendum" - }, - "description": "aggregate child text ranges" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum._getMessageCount", - "name": "DiagnosticAddendum._getMessageCount", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum._getMessageCount", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.getString", + "name": "DiagnosticAddendum.getString", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.getString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "_getMessageCount", + "func_name": "getString", "line_range": [ - 303, - 316 + 227, + 241 ], "class_name": "DiagnosticAddendum" }, - "description": "count messages including children" + "description": "format addendum as string; limit output depth and lines" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum._getLinesRecursive", - "name": "DiagnosticAddendum._getLinesRecursive", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum._getLinesRecursive", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts::DiagnosticAddendum.isEmpty", + "name": "DiagnosticAddendum.isEmpty", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnostic.ts/DiagnosticAddendum.isEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnostic.ts", - "func_name": "_getLinesRecursive", + "func_name": "isEmpty", "line_range": [ - 318, - 339 + 243, + 245 ], "class_name": "DiagnosticAddendum" }, - "description": "assemble formatted lines for output; apply depth and line limits" + "description": "check if addendum is empty" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts::__file__", @@ -32867,84 +33078,100 @@ "description": "initialize diagnostic collection" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.fetchAndClear", - "name": "DiagnosticSink.fetchAndClear", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.fetchAndClear", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink._getKey", + "name": "DiagnosticSink._getKey", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink._getKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "fetchAndClear", + "func_name": "_getKey", "line_range": [ - 58, - 63 + 101, + 108 ], "class_name": "DiagnosticSink" }, - "description": "fetch and clear diagnostics" + "description": "generate diagnostic uniqueness key" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addError", - "name": "DiagnosticSink.addError", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addError", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addDeprecated", + "name": "DiagnosticSink.addDeprecated", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addDeprecated", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addError", + "func_name": "addDeprecated", "line_range": [ - 65, - 67 + 93, + 99 ], "class_name": "DiagnosticSink" }, - "description": "add error diagnostic" + "description": "add deprecated diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addWarning", - "name": "DiagnosticSink.addWarning", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addWarning", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addDiagnostic", + "name": "DiagnosticSink.addDiagnostic", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addDiagnostic", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addWarning", + "func_name": "addDiagnostic", "line_range": [ - 69, - 71 + 110, + 118 ], "class_name": "DiagnosticSink" }, - "description": "add warning diagnostic" + "description": "add diagnostic with deduplication" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addInformation", - "name": "DiagnosticSink.addInformation", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addInformation", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addDiagnostics", + "name": "DiagnosticSink.addDiagnostics", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addInformation", + "func_name": "addDiagnostics", "line_range": [ - 73, - 75 + 120, + 124 ], "class_name": "DiagnosticSink" }, - "description": "add information diagnostic" + "description": "add multiple diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addUnusedCode", - "name": "DiagnosticSink.addUnusedCode", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addUnusedCode", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addError", + "name": "DiagnosticSink.addError", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addError", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", + "func_name": "addError", + "line_range": [ + 65, + 67 + ], + "class_name": "DiagnosticSink" + }, + "description": "add error diagnostic" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addInformation", + "name": "DiagnosticSink.addInformation", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addInformation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addUnusedCode", + "func_name": "addInformation", "line_range": [ - 77, - 83 + 73, + 75 ], "class_name": "DiagnosticSink" }, - "description": "add unused code diagnostic" + "description": "add information diagnostic" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addUnreachableCode", @@ -32963,68 +33190,68 @@ "description": "add unreachable code diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addDeprecated", - "name": "DiagnosticSink.addDeprecated", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addDeprecated", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addUnusedCode", + "name": "DiagnosticSink.addUnusedCode", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addUnusedCode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addDeprecated", + "func_name": "addUnusedCode", "line_range": [ - 93, - 99 + 77, + 83 ], "class_name": "DiagnosticSink" }, - "description": "add deprecated diagnostic" + "description": "add unused code diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink._getKey", - "name": "DiagnosticSink._getKey", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink._getKey", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addWarning", + "name": "DiagnosticSink.addWarning", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addWarning", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "_getKey", + "func_name": "addWarning", "line_range": [ - 101, - 108 + 69, + 71 ], "class_name": "DiagnosticSink" }, - "description": "generate diagnostic uniqueness key" + "description": "add warning diagnostic" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addDiagnostic", - "name": "DiagnosticSink.addDiagnostic", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addDiagnostic", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.fetchAndClear", + "name": "DiagnosticSink.fetchAndClear", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.fetchAndClear", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addDiagnostic", + "func_name": "fetchAndClear", "line_range": [ - 110, - 118 + 58, + 63 ], "class_name": "DiagnosticSink" }, - "description": "add diagnostic with deduplication" + "description": "fetch and clear diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.addDiagnostics", - "name": "DiagnosticSink.addDiagnostics", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.addDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getDeprecated", + "name": "DiagnosticSink.getDeprecated", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getDeprecated", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addDiagnostics", + "func_name": "getDeprecated", "line_range": [ - 120, - 124 + 146, + 148 ], "class_name": "DiagnosticSink" }, - "description": "add multiple diagnostics" + "description": "retrieve deprecated diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getErrors", @@ -33042,22 +33269,6 @@ }, "description": "retrieve error diagnostics" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getWarnings", - "name": "DiagnosticSink.getWarnings", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getWarnings", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "getWarnings", - "line_range": [ - 130, - 132 - ], - "class_name": "DiagnosticSink" - }, - "description": "retrieve warning diagnostics" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getInformation", "name": "DiagnosticSink.getInformation", @@ -33075,52 +33286,52 @@ "description": "retrieve information diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getUnusedCode", - "name": "DiagnosticSink.getUnusedCode", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getUnusedCode", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getUnreachableCode", + "name": "DiagnosticSink.getUnreachableCode", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getUnreachableCode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "getUnusedCode", + "func_name": "getUnreachableCode", "line_range": [ - 138, - 140 + 142, + 144 ], "class_name": "DiagnosticSink" }, - "description": "retrieve unused code diagnostics" + "description": "retrieve unreachable code diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getUnreachableCode", - "name": "DiagnosticSink.getUnreachableCode", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getUnreachableCode", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getUnusedCode", + "name": "DiagnosticSink.getUnusedCode", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getUnusedCode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "getUnreachableCode", + "func_name": "getUnusedCode", "line_range": [ - 142, - 144 + 138, + 140 ], "class_name": "DiagnosticSink" }, - "description": "retrieve unreachable code diagnostics" + "description": "retrieve unused code diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getDeprecated", - "name": "DiagnosticSink.getDeprecated", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getDeprecated", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::DiagnosticSink.getWarnings", + "name": "DiagnosticSink.getWarnings", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/DiagnosticSink.getWarnings", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "getDeprecated", + "func_name": "getWarnings", "line_range": [ - 146, - 148 + 130, + 132 ], "class_name": "DiagnosticSink" }, - "description": "retrieve deprecated diagnostics" + "description": "retrieve warning diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink", @@ -33138,36 +33349,36 @@ "description": "initialize text range collection; initialize diagnostics list" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addDiagnosticWithTextRange", - "name": "TextRangeDiagnosticSink.addDiagnosticWithTextRange", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/TextRangeDiagnosticSink.addDiagnosticWithTextRange", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addDeprecatedWithTextRange", + "name": "TextRangeDiagnosticSink.addDeprecatedWithTextRange", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/TextRangeDiagnosticSink.addDeprecatedWithTextRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addDiagnosticWithTextRange", + "func_name": "addDeprecatedWithTextRange", "line_range": [ - 161, - 176 + 194, + 200 ], "class_name": "TextRangeDiagnosticSink" }, - "description": "add diagnostic with text range; map diagnostic level to severity" + "description": "report deprecated usage with text range; attach optional diagnostic action" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addUnusedCodeWithTextRange", - "name": "TextRangeDiagnosticSink.addUnusedCodeWithTextRange", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/TextRangeDiagnosticSink.addUnusedCodeWithTextRange", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addDiagnosticWithTextRange", + "name": "TextRangeDiagnosticSink.addDiagnosticWithTextRange", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/TextRangeDiagnosticSink.addDiagnosticWithTextRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addUnusedCodeWithTextRange", + "func_name": "addDiagnosticWithTextRange", "line_range": [ - 178, - 184 + 161, + 176 ], "class_name": "TextRangeDiagnosticSink" }, - "description": "report unused code with text range; attach optional diagnostic action" + "description": "add diagnostic with text range; map diagnostic level to severity" }, { "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addUnreachableCodeWithTextRange", @@ -33186,20 +33397,20 @@ "description": "report unreachable code with text range; attach optional diagnostic action" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addDeprecatedWithTextRange", - "name": "TextRangeDiagnosticSink.addDeprecatedWithTextRange", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/TextRangeDiagnosticSink.addDeprecatedWithTextRange", + "id": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::TextRangeDiagnosticSink.addUnusedCodeWithTextRange", + "name": "TextRangeDiagnosticSink.addUnusedCodeWithTextRange", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/diagnosticSink.ts/TextRangeDiagnosticSink.addUnusedCodeWithTextRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts", - "func_name": "addDeprecatedWithTextRange", + "func_name": "addUnusedCodeWithTextRange", "line_range": [ - 194, - 200 + 178, + 184 ], "class_name": "TextRangeDiagnosticSink" }, - "description": "report deprecated usage with text range; attach optional diagnostic action" + "description": "report unused code with text range; attach optional diagnostic action" }, { "id": "packages/pyright/packages/pyright-internal/src/common/docRange.ts::__file__", @@ -33226,10 +33437,10 @@ "func_name": "docStringService", "line_range": [ 1, - 65 + 79 ] }, - "description": "Provides an interface and Pyright implementation to convert docstrings and extract parameter and attribute docs" + "description": "Defines Pyright docstring services for converting docstrings and extracting parameter, attribute, and return docs" }, { "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService", @@ -33240,27 +33451,26 @@ "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", "func_name": "PyrightDocStringService", "line_range": [ - 43, - 64 + 53, + 78 ] - }, - "description": "initialize docstring service instance" + } }, { - "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.convertDocStringToPlainText", - "name": "PyrightDocStringService.convertDocStringToPlainText", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.convertDocStringToPlainText", + "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.clone", + "name": "PyrightDocStringService.clone", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.clone", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", - "func_name": "convertDocStringToPlainText", + "func_name": "clone", "line_range": [ - 44, - 46 + 74, + 77 ], "class_name": "PyrightDocStringService" }, - "description": "convert docstring to plain text" + "description": "reuse stateless service instance" }, { "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.convertDocStringToMarkdown", @@ -33271,28 +33481,28 @@ "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", "func_name": "convertDocStringToMarkdown", "line_range": [ - 48, - 50 + 58, + 60 ], "class_name": "PyrightDocStringService" }, - "description": "convert docstring to markdown" + "description": "produce formatted documentation text" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.extractParameterDocumentation", - "name": "PyrightDocStringService.extractParameterDocumentation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.extractParameterDocumentation", + "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.convertDocStringToPlainText", + "name": "PyrightDocStringService.convertDocStringToPlainText", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.convertDocStringToPlainText", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", - "func_name": "extractParameterDocumentation", + "func_name": "convertDocStringToPlainText", "line_range": [ - 52, - 54 + 54, + 56 ], "class_name": "PyrightDocStringService" }, - "description": "extract parameter documentation" + "description": "produce readable documentation text" }, { "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.extractAttributeDocumentation", @@ -33303,28 +33513,44 @@ "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", "func_name": "extractAttributeDocumentation", "line_range": [ - 56, - 58 + 66, + 68 ], "class_name": "PyrightDocStringService" }, - "description": "extract attribute documentation" + "description": "find attribute documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.clone", - "name": "PyrightDocStringService.clone", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.clone", + "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.extractParameterDocumentation", + "name": "PyrightDocStringService.extractParameterDocumentation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.extractParameterDocumentation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", - "func_name": "clone", + "func_name": "extractParameterDocumentation", "line_range": [ - 60, - 63 + 62, + 64 + ], + "class_name": "PyrightDocStringService" + }, + "description": "find parameter documentation" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.extractReturnDocumentation", + "name": "PyrightDocStringService.extractReturnDocumentation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/docStringService.ts/PyrightDocStringService.extractReturnDocumentation", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts", + "func_name": "extractReturnDocumentation", + "line_range": [ + 70, + 72 ], "class_name": "PyrightDocStringService" }, - "description": "clone docstring service instance" + "description": "find return documentation" }, { "id": "packages/pyright/packages/pyright-internal/src/common/editAction.ts::__file__", @@ -33357,34 +33583,34 @@ "description": "Expands VS Code-style path variables and resolves the result to a Uri using workspace roots and environment variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts::resolvePathWithEnvVariables", - "name": "resolvePathWithEnvVariables", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/envVarUtils.ts/resolvePathWithEnvVariables", + "id": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts::expandPathVariables", + "name": "expandPathVariables", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/envVarUtils.ts/expandPathVariables", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts", - "func_name": "resolvePathWithEnvVariables", + "func_name": "expandPathVariables", "line_range": [ - 17, - 53 + 58, + 93 ] }, - "description": "expand path variables; normalize path slashes; parse uri strings; resolve relative paths against workspace root; reject unresolved variables; convert absolute disk path to uri; apply case sensitivity to uri creation" + "description": "expand default and named workspace folder variables; expand common environment variables; replace tilde with home directory; format replacements as uri paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts::expandPathVariables", - "name": "expandPathVariables", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/envVarUtils.ts/expandPathVariables", + "id": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts::resolvePathWithEnvVariables", + "name": "resolvePathWithEnvVariables", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/envVarUtils.ts/resolvePathWithEnvVariables", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts", - "func_name": "expandPathVariables", + "func_name": "resolvePathWithEnvVariables", "line_range": [ - 58, - 93 + 17, + 53 ] }, - "description": "expand default and named workspace folder variables; expand common environment variables; replace tilde with home directory; format replacements as uri paths" + "description": "expand path variables; normalize path slashes; parse uri strings; resolve relative paths against workspace root; reject unresolved variables; convert absolute disk path to uri; apply case sensitivity to uri creation" }, { "id": "packages/pyright/packages/pyright-internal/src/common/extensibility.ts::__file__", @@ -33396,10 +33622,10 @@ "func_name": "extensibility", "line_range": [ 1, - 175 + 191 ] }, - "description": "Defines interfaces for program views, mutators, symbol providers, and other language service extensibility APIs" + "description": "Defines Pyright language service extension interfaces for program views, source files, symbols, and status hooks" }, { "id": "packages/pyright/packages/pyright-internal/src/common/extensions.ts::__file__", @@ -33432,114 +33658,50 @@ "description": "File-based cancellation utilities and a provider for creating filesystem-backed cancellation tokens" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::StatSyncFromFs", - "name": "StatSyncFromFs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/StatSyncFromFs", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::disposeCancellationToken", + "name": "disposeCancellationToken", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/disposeCancellationToken", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "StatSyncFromFs", + "func_name": "disposeCancellationToken", "line_range": [ - 31, - 35 + 176, + 180 ] }, - "description": "create synchronous file metadata helper" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::StatSyncFromFs.statSync", - "name": "StatSyncFromFs.statSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/StatSyncFromFs.statSync", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "statSync", - "line_range": [ - 32, - 34 - ], - "class_name": "StatSyncFromFs" - }, - "description": "retrieve file system metadata" + "description": "dispose file based cancellation token" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken", - "name": "OwningFileToken", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::FileBasedCancellationProvider", + "name": "FileBasedCancellationProvider", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/FileBasedCancellationProvider", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "OwningFileToken", + "func_name": "FileBasedCancellationProvider", "line_range": [ - 37, - 79 + 195, + 213 ] }, - "description": "initialize owning cancellation token" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken.cancel", - "name": "OwningFileToken.cancel", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken.cancel", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "cancel", - "line_range": [ - 50, - 55 - ], - "class_name": "OwningFileToken" - }, - "description": "signal cancellation via file; mark token as cancelled" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken.dispose", - "name": "OwningFileToken.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken.dispose", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "dispose", - "line_range": [ - 57, - 62 - ], - "class_name": "OwningFileToken" - }, - "description": "mark token as disposed; invoke base disposal behavior; remove cancellation file" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken._createPipe", - "name": "OwningFileToken._createPipe", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken._createPipe", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "_createPipe", - "line_range": [ - 64, - 70 - ], - "class_name": "OwningFileToken" - }, - "description": "create cancellation file" + "description": "store cancellation file prefix" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken._removePipe", - "name": "OwningFileToken._removePipe", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken._removePipe", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::FileBasedCancellationProvider.createCancellationTokenSource", + "name": "FileBasedCancellationProvider.createCancellationTokenSource", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/FileBasedCancellationProvider.createCancellationTokenSource", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "_removePipe", + "func_name": "createCancellationTokenSource", "line_range": [ - 72, - 78 + 200, + 212 ], - "class_name": "OwningFileToken" + "class_name": "FileBasedCancellationProvider" }, - "description": "remove cancellation file" + "description": "create cancellation token source; use file based cancellation when enabled; fall back to regular token source; generate unique cancellation file uri; ensure token source owns its file" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::FileBasedCancellationTokenSource", @@ -33588,36 +33750,6 @@ }, "description": "initialize token when uninitialized; dispose underlying file resources; preserve non file tokens" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationFolderPath", - "name": "getCancellationFolderPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/getCancellationFolderPath", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "getCancellationFolderPath", - "line_range": [ - 123, - 125 - ] - }, - "description": "construct cancellation folder path" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationFileUri", - "name": "getCancellationFileUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/getCancellationFileUri", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "getCancellationFileUri", - "line_range": [ - 127, - 129 - ] - }, - "description": "construct cancellation file uri" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::FileCancellationReceiverStrategy", "name": "FileCancellationReceiverStrategy", @@ -33649,6 +33781,36 @@ }, "description": "create cancellation token source for id" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationFileUri", + "name": "getCancellationFileUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/getCancellationFileUri", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", + "func_name": "getCancellationFileUri", + "line_range": [ + 127, + 129 + ] + }, + "description": "construct cancellation file uri" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationFolderPath", + "name": "getCancellationFolderPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/getCancellationFolderPath", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", + "func_name": "getCancellationFolderPath", + "line_range": [ + 123, + 125 + ] + }, + "description": "construct cancellation folder path" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationStrategyFromArgv", "name": "getCancellationStrategyFromArgv", @@ -33665,65 +33827,129 @@ "description": "parse cancellation receiver from argv; extract file cancellation folder name; set global cancellation folder name; return cancellation strategy with message sender" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::disposeCancellationToken", - "name": "disposeCancellationToken", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/disposeCancellationToken", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationTokenFromId", + "name": "getCancellationTokenFromId", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/getCancellationTokenFromId", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "disposeCancellationToken", + "func_name": "getCancellationTokenFromId", "line_range": [ - 176, - 180 + 182, + 192 ] }, - "description": "dispose file based cancellation token" + "description": "resolve cancellation token from id; map empty id to none token; map cancelled id to cancelled token; create file based token for id" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::getCancellationTokenFromId", - "name": "getCancellationTokenFromId", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/getCancellationTokenFromId", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken", + "name": "OwningFileToken", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", + "func_name": "OwningFileToken", + "line_range": [ + 37, + 79 + ] + }, + "description": "initialize owning cancellation token" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken._createPipe", + "name": "OwningFileToken._createPipe", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken._createPipe", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", + "func_name": "_createPipe", + "line_range": [ + 64, + 70 + ], + "class_name": "OwningFileToken" + }, + "description": "create cancellation file" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken._removePipe", + "name": "OwningFileToken._removePipe", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken._removePipe", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", + "func_name": "_removePipe", + "line_range": [ + 72, + 78 + ], + "class_name": "OwningFileToken" + }, + "description": "remove cancellation file" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken.cancel", + "name": "OwningFileToken.cancel", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken.cancel", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", + "func_name": "cancel", + "line_range": [ + 50, + 55 + ], + "class_name": "OwningFileToken" + }, + "description": "signal cancellation via file; mark token as cancelled" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::OwningFileToken.dispose", + "name": "OwningFileToken.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/OwningFileToken.dispose", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "getCancellationTokenFromId", + "func_name": "dispose", "line_range": [ - 182, - 192 - ] + 57, + 62 + ], + "class_name": "OwningFileToken" }, - "description": "resolve cancellation token from id; map empty id to none token; map cancelled id to cancelled token; create file based token for id" + "description": "mark token as disposed; invoke base disposal behavior; remove cancellation file" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::FileBasedCancellationProvider", - "name": "FileBasedCancellationProvider", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/FileBasedCancellationProvider", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::StatSyncFromFs", + "name": "StatSyncFromFs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/StatSyncFromFs", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "FileBasedCancellationProvider", + "func_name": "StatSyncFromFs", "line_range": [ - 195, - 213 + 31, + 35 ] }, - "description": "store cancellation file prefix" + "description": "create synchronous file metadata helper" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::FileBasedCancellationProvider.createCancellationTokenSource", - "name": "FileBasedCancellationProvider.createCancellationTokenSource", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/FileBasedCancellationProvider.createCancellationTokenSource", + "id": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts::StatSyncFromFs.statSync", + "name": "StatSyncFromFs.statSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileBasedCancellationUtils.ts/StatSyncFromFs.statSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts", - "func_name": "createCancellationTokenSource", + "func_name": "statSync", "line_range": [ - 200, - 212 + 32, + 34 ], - "class_name": "FileBasedCancellationProvider" + "class_name": "StatSyncFromFs" }, - "description": "create cancellation token source; use file based cancellation when enabled; fall back to regular token source; generate unique cancellation file uri; ensure token source owns its file" + "description": "retrieve file system metadata" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::__file__", @@ -33755,38 +33981,6 @@ }, "description": "create virtual directory entry" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isFile", - "name": "VirtualDirent.isFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileSystem.ts/VirtualDirent.isFile", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts", - "func_name": "isFile", - "line_range": [ - 122, - 124 - ], - "class_name": "VirtualDirent" - }, - "description": "identify file entries" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isDirectory", - "name": "VirtualDirent.isDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileSystem.ts/VirtualDirent.isDirectory", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts", - "func_name": "isDirectory", - "line_range": [ - 126, - 128 - ], - "class_name": "VirtualDirent" - }, - "description": "identify directory entries" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isBlockDevice", "name": "VirtualDirent.isBlockDevice", @@ -33820,20 +34014,20 @@ "description": "identify character device entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isSymbolicLink", - "name": "VirtualDirent.isSymbolicLink", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileSystem.ts/VirtualDirent.isSymbolicLink", + "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isDirectory", + "name": "VirtualDirent.isDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileSystem.ts/VirtualDirent.isDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts", - "func_name": "isSymbolicLink", + "func_name": "isDirectory", "line_range": [ - 138, - 140 + 126, + 128 ], "class_name": "VirtualDirent" }, - "description": "identify symbolic link entries" + "description": "identify directory entries" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isFIFO", @@ -33851,6 +34045,22 @@ }, "description": "identify fifo entries" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isFile", + "name": "VirtualDirent.isFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileSystem.ts/VirtualDirent.isFile", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts", + "func_name": "isFile", + "line_range": [ + 122, + 124 + ], + "class_name": "VirtualDirent" + }, + "description": "identify file entries" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isSocket", "name": "VirtualDirent.isSocket", @@ -33867,6 +34077,22 @@ }, "description": "identify socket entries" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts::VirtualDirent.isSymbolicLink", + "name": "VirtualDirent.isSymbolicLink", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileSystem.ts/VirtualDirent.isSymbolicLink", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/fileSystem.ts", + "func_name": "isSymbolicLink", + "line_range": [ + 138, + 140 + ], + "class_name": "VirtualDirent" + }, + "description": "identify symbolic link entries" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts::__file__", "name": "fileWatcher", @@ -33907,55 +34133,73 @@ "func_name": "fullAccessHost", "line_range": [ 1, - 380 + 424 ] }, - "description": "Host for executing Python interpreters and external processes to get search paths, versions, and run code" + "description": "Provides host implementations for running Python executables and querying interpreter state" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::LimitedAccessHost", - "name": "LimitedAccessHost", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/LimitedAccessHost", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost", + "name": "FullAccessHost", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "LimitedAccessHost", + "func_name": "FullAccessHost", "line_range": [ - 49, - 67 + 82, + 423 ] - } + }, + "description": "store service provider" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::LimitedAccessHost.getPythonPlatform", - "name": "LimitedAccessHost.getPythonPlatform", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/LimitedAccessHost.getPythonPlatform", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost._executeCodeInInterpreter", + "name": "FullAccessHost._executeCodeInInterpreter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost._executeCodeInInterpreter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "getPythonPlatform", + "func_name": "_executeCodeInInterpreter", "line_range": [ - 54, - 66 + 331, + 374 ], - "class_name": "LimitedAccessHost" + "class_name": "FullAccessHost" }, - "description": "detect host operating system; map operating system to runtime platform; return platform for runtime selection; provide fallback for unsupported operating systems" + "description": "execute python code; respect requested working directory; propagate interpreter failures" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost", - "name": "FullAccessHost", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost._executePythonInterpreter", + "name": "FullAccessHost._executePythonInterpreter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost._executePythonInterpreter", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "FullAccessHost", + "func_name": "_executePythonInterpreter", "line_range": [ - 69, - 379 - ] + 297, + 323 + ], + "class_name": "FullAccessHost" + }, + "description": "select python interpreter; run interpreter action" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost._getSearchPathResultFromInterpreter", + "name": "FullAccessHost._getSearchPathResultFromInterpreter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost._getSearchPathResultFromInterpreter", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", + "func_name": "_getSearchPathResultFromInterpreter", + "line_range": [ + 376, + 422 + ], + "class_name": "FullAccessHost" }, - "description": "initialize service provider" + "description": "extract python import paths; validate import path directories; record python environment prefix" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.createHost", @@ -33966,12 +34210,12 @@ "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", "func_name": "createHost", "line_range": [ - 78, - 89 + 91, + 102 ], "class_name": "FullAccessHost" }, - "description": "create host instance; select implementation based on kind" + "description": "create access host" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.getPythonSearchPaths", @@ -33982,12 +34226,12 @@ "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", "func_name": "getPythonSearchPaths", "line_range": [ - 91, - 109 + 104, + 122 ], "class_name": "FullAccessHost" }, - "description": "determine python search paths; log discovered search path details" + "description": "discover python search paths; log discovered search paths" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.getPythonVersion", @@ -33998,60 +34242,60 @@ "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", "func_name": "getPythonVersion", "line_range": [ - 111, - 142 + 124, + 155 ], "class_name": "FullAccessHost" }, - "description": "retrieve python version from interpreter; parse and validate version output" + "description": "detect python version; reject unsupported python versions" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.runScript", - "name": "FullAccessHost.runScript", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.runScript", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.getUsableCwdPath", + "name": "FullAccessHost.getUsableCwdPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.getUsableCwdPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "runScript", + "func_name": "getUsableCwdPath", "line_range": [ - 144, - 189 + 293, + 295 ], "class_name": "FullAccessHost" }, - "description": "execute python script with args; capture script stdout stderr exit code; support execution cancellation" + "description": "resolve usable working directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.runSnippet", - "name": "FullAccessHost.runSnippet", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.runSnippet", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.runScript", + "name": "FullAccessHost.runScript", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.runScript", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "runSnippet", + "func_name": "runScript", "line_range": [ - 191, - 260 + 157, + 202 ], "class_name": "FullAccessHost" }, - "description": "execute python code snippet; capture snippet stdout stderr output; support execution cancellation; optionally run snippet in isolated mode" + "description": "run python script; collect script output; honor script cancellation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.spawnProcess", - "name": "FullAccessHost.spawnProcess", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.spawnProcess", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.runSnippet", + "name": "FullAccessHost.runSnippet", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.runSnippet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "spawnProcess", + "func_name": "runSnippet", "line_range": [ - 262, - 269 + 204, + 273 ], "class_name": "FullAccessHost" }, - "description": "spawn external process; return undefined on spawn failure" + "description": "run python snippet; collect snippet output; merge snippet output streams; honor snippet cancellation" }, { "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.shouldUseShellToRunInterpreter", @@ -34062,60 +34306,73 @@ "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", "func_name": "shouldUseShellToRunInterpreter", "line_range": [ - 271, - 278 + 284, + 291 ], "class_name": "FullAccessHost" }, - "description": "decide shell usage for interpreter; detect platform specific executable types" + "description": "select interpreter launch mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost._executePythonInterpreter", - "name": "FullAccessHost._executePythonInterpreter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost._executePythonInterpreter", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.spawnProcess", + "name": "FullAccessHost.spawnProcess", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost.spawnProcess", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "_executePythonInterpreter", + "func_name": "spawnProcess", "line_range": [ - 280, - 306 + 275, + 282 ], "class_name": "FullAccessHost" }, - "description": "attempt interpreter fallbacks and execute; invoke callback with interpreter path" + "description": "start external process" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost._executeCodeInInterpreter", - "name": "FullAccessHost._executeCodeInInterpreter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost._executeCodeInInterpreter", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::isUnusableCwdSpawnError", + "name": "isUnusableCwdSpawnError", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/isUnusableCwdSpawnError", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "_executeCodeInInterpreter", + "func_name": "isUnusableCwdSpawnError", "line_range": [ - 314, - 328 - ], - "class_name": "FullAccessHost" + 53, + 60 + ] }, - "description": "execute code using specified interpreter; return interpreter execution output" + "description": "detect unusable current directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost._getSearchPathResultFromInterpreter", - "name": "FullAccessHost._getSearchPathResultFromInterpreter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/FullAccessHost._getSearchPathResultFromInterpreter", + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::LimitedAccessHost", + "name": "LimitedAccessHost", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/LimitedAccessHost", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", + "func_name": "LimitedAccessHost", + "line_range": [ + 62, + 80 + ] + } + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::LimitedAccessHost.getPythonPlatform", + "name": "LimitedAccessHost.getPythonPlatform", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/fullAccessHost.ts/LimitedAccessHost.getPythonPlatform", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts", - "func_name": "_getSearchPathResultFromInterpreter", + "func_name": "getPythonPlatform", "line_range": [ - 330, - 378 + 67, + 79 ], - "class_name": "FullAccessHost" + "class_name": "LimitedAccessHost" }, - "description": "retrieve python sys paths from interpreter; normalize and filter valid directories; construct search path result object; log parsing failures and skipped paths" + "description": "detect python platform" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::__file__", @@ -34130,7 +34387,7 @@ 140 ] }, - "description": "Provides host environment abstractions: Host interface, HostKind, script/process types, and NoAccessHost implementation" + "description": "Defines host environment access APIs for Python discovery, script execution, and process spawning" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost", @@ -34144,8 +34401,23 @@ 92, 137 ] + } + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.getPythonPlatform", + "name": "NoAccessHost.getPythonPlatform", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/host.ts/NoAccessHost.getPythonPlatform", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/host.ts", + "func_name": "getPythonPlatform", + "line_range": [ + 110, + 112 + ], + "class_name": "NoAccessHost" }, - "description": "initialize no access host" + "description": "deny python platform detection" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.getPythonSearchPaths", @@ -34161,7 +34433,7 @@ ], "class_name": "NoAccessHost" }, - "description": "log python access failure; provide empty python search paths" + "description": "deny python path discovery" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.getPythonVersion", @@ -34177,23 +34449,7 @@ ], "class_name": "NoAccessHost" }, - "description": "indicate python version unavailable" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.getPythonPlatform", - "name": "NoAccessHost.getPythonPlatform", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/host.ts/NoAccessHost.getPythonPlatform", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/host.ts", - "func_name": "getPythonPlatform", - "line_range": [ - 110, - 112 - ], - "class_name": "NoAccessHost" - }, - "description": "indicate python platform unavailable" + "description": "deny python version detection" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.runScript", @@ -34209,7 +34465,7 @@ ], "class_name": "NoAccessHost" }, - "description": "return empty script output; avoid executing external scripts" + "description": "deny script execution" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.runSnippet", @@ -34225,7 +34481,7 @@ ], "class_name": "NoAccessHost" }, - "description": "return empty snippet output; avoid executing code snippets" + "description": "deny snippet execution" }, { "id": "packages/pyright/packages/pyright-internal/src/common/host.ts::NoAccessHost.spawnProcess", @@ -34236,87 +34492,282 @@ "path": "packages/pyright/packages/pyright-internal/src/common/host.ts", "func_name": "spawnProcess", "line_range": [ - 134, - 136 - ], - "class_name": "NoAccessHost" + 134, + 136 + ], + "class_name": "NoAccessHost" + }, + "description": "deny process creation" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::__file__", + "name": "languageInfoUtils", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts", + "meta": { + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "languageInfoUtils", + "line_range": [ + 1, + 1304 + ] + }, + "description": "Provides utilities to dump and format token syntax and type information for debugging and MCP tools" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::dumpSyntaxInfo", + "name": "dumpSyntaxInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/dumpSyntaxInfo", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "dumpSyntaxInfo", + "line_range": [ + 142, + 152 + ] + }, + "description": "dump syntax info; traverse parse tree; limit output to range" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::dumpTokenInfo", + "name": "dumpTokenInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/dumpTokenInfo", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "dumpTokenInfo", + "line_range": [ + 124, + 137 + ] + }, + "description": "dump token info; enumerate tokens with index; format token entries for display" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::dumpTypeInfo", + "name": "dumpTypeInfo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/dumpTypeInfo", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "dumpTypeInfo", + "line_range": [ + 157, + 170 + ] + }, + "description": "dump type info; include cache indicator; format evaluator result" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getArgCategoryString", + "name": "getArgCategoryString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getArgCategoryString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getArgCategoryString", + "line_range": [ + 963, + 974 + ] + }, + "description": "map argument category to string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getClassTypeFlagsString", + "name": "getClassTypeFlagsString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getClassTypeFlagsString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getClassTypeFlagsString", + "line_range": [ + 428, + 430 + ] + }, + "description": "format class type flags" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getErrorExpressionCategoryString", + "name": "getErrorExpressionCategoryString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getErrorExpressionCategoryString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getErrorExpressionCategoryString", + "line_range": [ + 976, + 1011 + ] + }, + "description": "map error expression category to string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getFlagEnumString", + "name": "getFlagEnumString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getFlagEnumString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getFlagEnumString", + "line_range": [ + 368, + 383 + ] + }, + "description": "format bitflag enum to string; handle none and unknown cases" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getFunctionTypeFlagsString", + "name": "getFunctionTypeFlagsString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getFunctionTypeFlagsString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getFunctionTypeFlagsString", + "line_range": [ + 404, + 406 + ] + }, + "description": "format function type flags" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getKeywordTypeString", + "name": "getKeywordTypeString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getKeywordTypeString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getKeywordTypeString", + "line_range": [ + 1210, + 1287 + ] + }, + "description": "map keyword type to string; format fallback for unknown keyword type" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getNewLineTypeString", + "name": "getNewLineTypeString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getNewLineTypeString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getNewLineTypeString", + "line_range": [ + 1102, + 1115 + ] + }, + "description": "map newline type to string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getOperatorTypeString", + "name": "getOperatorTypeString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getOperatorTypeString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getOperatorTypeString", + "line_range": [ + 1117, + 1208 + ] + }, + "description": "map operator type to string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getParameterCategoryString", + "name": "getParameterCategoryString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getParameterCategoryString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "getParameterCategoryString", + "line_range": [ + 952, + 961 + ] }, - "description": "prevent process spawning; indicate process spawn unsupported" + "description": "map parameter category to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::__file__", - "name": "languageInfoUtils", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getStringTokenFlagsString", + "name": "getStringTokenFlagsString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getStringTokenFlagsString", "meta": { - "type": "file", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "languageInfoUtils", + "func_name": "getStringTokenFlagsString", "line_range": [ - 1, - 1304 + 1301, + 1303 ] }, - "description": "Provides utilities to dump and format token syntax and type information for debugging and MCP tools" + "description": "convert string token flags to readable string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::dumpTokenInfo", - "name": "dumpTokenInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/dumpTokenInfo", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTextSpanString", + "name": "getTextSpanString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTextSpanString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "dumpTokenInfo", + "func_name": "getTextSpanString", "line_range": [ - 124, - 137 + 1044, + 1047 ] }, - "description": "dump token info; enumerate tokens with index; format token entries for display" + "description": "format text span as coordinates" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::dumpSyntaxInfo", - "name": "dumpSyntaxInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/dumpSyntaxInfo", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTokenString", + "name": "getTokenString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTokenString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "dumpSyntaxInfo", + "func_name": "getTokenString", "line_range": [ - 142, - 152 + 1013, + 1042 ] }, - "description": "dump syntax info; traverse parse tree; limit output to range" + "description": "format token as debug string; include token positional and flag details; serialize token payload as json" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::dumpTypeInfo", - "name": "dumpTypeInfo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/dumpTypeInfo", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTokenTypeString", + "name": "getTokenTypeString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTokenTypeString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "dumpTypeInfo", + "func_name": "getTokenTypeString", "line_range": [ - 157, - 170 + 1049, + 1100 ] }, - "description": "dump type info; include cache indicator; format evaluator result" + "description": "map token type to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::stringify", - "name": "stringify", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/stringify", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeCategoryString", + "name": "getTypeCategoryString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTypeCategoryString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "stringify", + "func_name": "getTypeCategoryString", "line_range": [ - 172, - 177 + 448, + 477 ] }, - "description": "stringify value with replacer; unescape path separators for output" + "description": "map type category to string; distinguish class versus object by instantiability" }, { "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeEvaluatorString", @@ -34334,125 +34785,127 @@ "description": "find parse node by offset; find enclosing expression node; retrieve class or function type; evaluate expression type using evaluator; retrieve cached type when requested; report expression node location and span; serialize evaluated type to json; handle cycles and annotate type fields; embed parse node dump when present" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getVarianceString", - "name": "getVarianceString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getVarianceString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeFlagsString", + "name": "getTypeFlagsString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTypeFlagsString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getVarianceString", + "func_name": "getTypeFlagsString", "line_range": [ - 355, - 366 + 432, + 446 ] }, - "description": "map variance enum to string" + "description": "map type flags to readable names" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getFlagEnumString", - "name": "getFlagEnumString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getFlagEnumString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeParameterCategoryString", + "name": "getTypeParameterCategoryString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTypeParameterCategoryString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getFlagEnumString", + "func_name": "getTypeParameterCategoryString", "line_range": [ - 368, - 383 + 941, + 950 ] }, - "description": "format bitflag enum to string; handle none and unknown cases" + "description": "map type parameter kind to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getFunctionTypeFlagsString", - "name": "getFunctionTypeFlagsString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getFunctionTypeFlagsString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getVarianceString", + "name": "getVarianceString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getVarianceString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getFunctionTypeFlagsString", + "func_name": "getVarianceString", "line_range": [ - 404, - 406 + 355, + 366 ] }, - "description": "format function type flags" + "description": "map variance enum to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getClassTypeFlagsString", - "name": "getClassTypeFlagsString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getClassTypeFlagsString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::stringify", + "name": "stringify", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/stringify", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getClassTypeFlagsString", + "func_name": "stringify", "line_range": [ - 428, - 430 + 172, + 177 ] }, - "description": "format class type flags" + "description": "stringify value with replacer; unescape path separators for output" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeFlagsString", - "name": "getTypeFlagsString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTypeFlagsString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper", + "name": "TreeDumper", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getTypeFlagsString", + "func_name": "TreeDumper", "line_range": [ - 432, - 446 + 479, + 939 ] }, - "description": "map type flags to readable names" + "description": "initialize dumper with source info" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeCategoryString", - "name": "getTypeCategoryString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTypeCategoryString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper._getPrefix", + "name": "TreeDumper._getPrefix", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper._getPrefix", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getTypeCategoryString", + "func_name": "_getPrefix", "line_range": [ - 448, - 477 - ] + 924, + 930 + ], + "class_name": "TreeDumper" }, - "description": "map type category to string; distinguish class versus object by instantiability" + "description": "compute node prefix with position and type" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper", - "name": "TreeDumper", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper._isNodeInRange", + "name": "TreeDumper._isNodeInRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper._isNodeInRange", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "TreeDumper", + "func_name": "_isNodeInRange", "line_range": [ - 479, - 939 - ] + 932, + 938 + ], + "class_name": "TreeDumper" }, - "description": "initialize dumper with source info" + "description": "determine node overlap with range" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.walk", - "name": "TreeDumper.walk", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.walk", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper._log", + "name": "TreeDumper._log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper._log", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "walk", + "func_name": "_log", "line_range": [ - 491, - 501 + 920, + 922 ], "class_name": "TreeDumper" }, - "description": "traverse parse tree recursively within range" + "description": "append formatted dump line" }, { "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.reset", @@ -34583,932 +35036,628 @@ "description": "record binary operator and parentheses" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitBreak", - "name": "TreeDumper.visitBreak", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitBreak", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitBreak", - "line_range": [ - 549, - 552 - ], - "class_name": "TreeDumper" - }, - "description": "record break statement location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitCall", - "name": "TreeDumper.visitCall", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitCall", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitCall", - "line_range": [ - 554, - 557 - ], - "class_name": "TreeDumper" - }, - "description": "record call expression location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitClass", - "name": "TreeDumper.visitClass", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitClass", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitClass", - "line_range": [ - 559, - 562 - ], - "class_name": "TreeDumper" - }, - "description": "record class definition location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitComprehension", - "name": "TreeDumper.visitComprehension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitComprehension", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitComprehension", - "line_range": [ - 564, - 567 - ], - "class_name": "TreeDumper" - }, - "description": "record comprehension expression location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitComprehensionFor", - "name": "TreeDumper.visitComprehensionFor", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitComprehensionFor", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitComprehensionFor", - "line_range": [ - 569, - 572 - ], - "class_name": "TreeDumper" - }, - "description": "record comprehension for async flag" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitComprehensionIf", - "name": "TreeDumper.visitComprehensionIf", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitComprehensionIf", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitComprehensionIf", - "line_range": [ - 574, - 577 - ], - "class_name": "TreeDumper" - }, - "description": "record comprehension if clause location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitContinue", - "name": "TreeDumper.visitContinue", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitContinue", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitContinue", - "line_range": [ - 579, - 582 - ], - "class_name": "TreeDumper" - }, - "description": "record continue statement location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitConstant", - "name": "TreeDumper.visitConstant", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitConstant", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitConstant", - "line_range": [ - 584, - 587 - ], - "class_name": "TreeDumper" - }, - "description": "record constant keyword type" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDecorator", - "name": "TreeDumper.visitDecorator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDecorator", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitDecorator", - "line_range": [ - 589, - 592 - ], - "class_name": "TreeDumper" - }, - "description": "record decorator expression location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDel", - "name": "TreeDumper.visitDel", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDel", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitDel", - "line_range": [ - 594, - 597 - ], - "class_name": "TreeDumper" - }, - "description": "record del statement location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDictionary", - "name": "TreeDumper.visitDictionary", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDictionary", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitDictionary", - "line_range": [ - 599, - 602 - ], - "class_name": "TreeDumper" - }, - "description": "record dictionary literal location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDictionaryKeyEntry", - "name": "TreeDumper.visitDictionaryKeyEntry", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDictionaryKeyEntry", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitDictionaryKeyEntry", - "line_range": [ - 604, - 607 - ], - "class_name": "TreeDumper" - }, - "description": "record dictionary key entry" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDictionaryExpandEntry", - "name": "TreeDumper.visitDictionaryExpandEntry", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDictionaryExpandEntry", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitDictionaryExpandEntry", - "line_range": [ - 609, - 612 - ], - "class_name": "TreeDumper" - }, - "description": "record dictionary expansion entry" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitError", - "name": "TreeDumper.visitError", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitError", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitError", - "line_range": [ - 614, - 617 - ], - "class_name": "TreeDumper" - }, - "description": "record error node category" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitEllipsis", - "name": "TreeDumper.visitEllipsis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitEllipsis", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitEllipsis", - "line_range": [ - 619, - 622 - ], - "class_name": "TreeDumper" - }, - "description": "record ellipsis usage location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitIf", - "name": "TreeDumper.visitIf", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitIf", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitIf", - "line_range": [ - 624, - 627 - ], - "class_name": "TreeDumper" - }, - "description": "record if statement location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImport", - "name": "TreeDumper.visitImport", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImport", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitImport", - "line_range": [ - 629, - 632 - ], - "class_name": "TreeDumper" - }, - "description": "record import statement location" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImportAs", - "name": "TreeDumper.visitImportAs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImportAs", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitImportAs", - "line_range": [ - 634, - 637 - ], - "class_name": "TreeDumper" - }, - "description": "record import alias mapping" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImportFrom", - "name": "TreeDumper.visitImportFrom", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImportFrom", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitImportFrom", - "line_range": [ - 639, - 648 - ], - "class_name": "TreeDumper" - }, - "description": "record import from wildcard usage; record import from parenthesis usage; capture import from wildcard token text; record import from missing import flag" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImportFromAs", - "name": "TreeDumper.visitImportFromAs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImportFromAs", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitBreak", + "name": "TreeDumper.visitBreak", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitBreak", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitImportFromAs", + "func_name": "visitBreak", "line_range": [ - 650, - 653 + 549, + 552 ], "class_name": "TreeDumper" }, - "description": "record import from alias mapping" + "description": "record break statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitIndex", - "name": "TreeDumper.visitIndex", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitIndex", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitCall", + "name": "TreeDumper.visitCall", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitCall", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitIndex", + "func_name": "visitCall", "line_range": [ - 655, - 658 + 554, + 557 ], "class_name": "TreeDumper" }, - "description": "record index expression location" + "description": "record call expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitExcept", - "name": "TreeDumper.visitExcept", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitExcept", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitCase", + "name": "TreeDumper.visitCase", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitCase", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitExcept", + "func_name": "visitCase", "line_range": [ - 660, - 663 + 845, + 848 ], "class_name": "TreeDumper" }, - "description": "record except clause location" + "description": "record case pattern irrefutable flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFor", - "name": "TreeDumper.visitFor", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFor", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitClass", + "name": "TreeDumper.visitClass", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitFor", + "func_name": "visitClass", "line_range": [ - 665, - 668 + 559, + 562 ], "class_name": "TreeDumper" }, - "description": "record for loop location; record for loop async flag" + "description": "record class definition location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFormatString", - "name": "TreeDumper.visitFormatString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFormatString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitComprehension", + "name": "TreeDumper.visitComprehension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitComprehension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitFormatString", + "func_name": "visitComprehension", "line_range": [ - 670, - 673 + 564, + 567 ], "class_name": "TreeDumper" }, - "description": "record format string usage" + "description": "record comprehension expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFunction", - "name": "TreeDumper.visitFunction", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFunction", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitComprehensionFor", + "name": "TreeDumper.visitComprehensionFor", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitComprehensionFor", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitFunction", + "func_name": "visitComprehensionFor", "line_range": [ - 675, - 678 + 569, + 572 ], "class_name": "TreeDumper" }, - "description": "record function definition location; record function definition async flag" + "description": "record comprehension for async flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFunctionAnnotation", - "name": "TreeDumper.visitFunctionAnnotation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFunctionAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitComprehensionIf", + "name": "TreeDumper.visitComprehensionIf", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitComprehensionIf", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitFunctionAnnotation", + "func_name": "visitComprehensionIf", "line_range": [ - 680, - 683 + 574, + 577 ], "class_name": "TreeDumper" }, - "description": "record function annotation ellipsis flag" + "description": "record comprehension if clause location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitGlobal", - "name": "TreeDumper.visitGlobal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitGlobal", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitConstant", + "name": "TreeDumper.visitConstant", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitConstant", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitGlobal", + "func_name": "visitConstant", "line_range": [ - 685, - 688 + 584, + 587 ], "class_name": "TreeDumper" }, - "description": "record global statement location" + "description": "record constant keyword type" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitLambda", - "name": "TreeDumper.visitLambda", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitLambda", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitContinue", + "name": "TreeDumper.visitContinue", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitContinue", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitLambda", + "func_name": "visitContinue", "line_range": [ - 690, - 693 + 579, + 582 ], "class_name": "TreeDumper" }, - "description": "record lambda expression location" + "description": "record continue statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitList", - "name": "TreeDumper.visitList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitList", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDecorator", + "name": "TreeDumper.visitDecorator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDecorator", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitList", + "func_name": "visitDecorator", "line_range": [ - 695, - 698 + 589, + 592 ], "class_name": "TreeDumper" }, - "description": "record list literal location" + "description": "record decorator expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitMemberAccess", - "name": "TreeDumper.visitMemberAccess", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitMemberAccess", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDel", + "name": "TreeDumper.visitDel", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDel", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitMemberAccess", + "func_name": "visitDel", "line_range": [ - 700, - 703 + 594, + 597 ], "class_name": "TreeDumper" }, - "description": "record member access expression" + "description": "record del statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitModule", - "name": "TreeDumper.visitModule", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitModule", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDictionary", + "name": "TreeDumper.visitDictionary", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDictionary", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitModule", + "func_name": "visitDictionary", "line_range": [ - 705, - 708 + 599, + 602 ], "class_name": "TreeDumper" }, - "description": "record module node location" + "description": "record dictionary literal location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitModuleName", - "name": "TreeDumper.visitModuleName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitModuleName", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDictionaryExpandEntry", + "name": "TreeDumper.visitDictionaryExpandEntry", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDictionaryExpandEntry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitModuleName", + "func_name": "visitDictionaryExpandEntry", "line_range": [ - 710, - 715 + 609, + 612 ], "class_name": "TreeDumper" }, - "description": "record module name leading dots; record module name trailing dot flag" + "description": "record dictionary expansion entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitName", - "name": "TreeDumper.visitName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitName", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitDictionaryKeyEntry", + "name": "TreeDumper.visitDictionaryKeyEntry", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitDictionaryKeyEntry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitName", + "func_name": "visitDictionaryKeyEntry", "line_range": [ - 717, - 720 + 604, + 607 ], "class_name": "TreeDumper" }, - "description": "record identifier token and value" + "description": "record dictionary key entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitNonlocal", - "name": "TreeDumper.visitNonlocal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitNonlocal", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitEllipsis", + "name": "TreeDumper.visitEllipsis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitEllipsis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitNonlocal", + "func_name": "visitEllipsis", "line_range": [ - 722, - 725 + 619, + 622 ], "class_name": "TreeDumper" }, - "description": "record nonlocal statement location" + "description": "record ellipsis usage location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitNumber", - "name": "TreeDumper.visitNumber", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitNumber", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitError", + "name": "TreeDumper.visitError", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitNumber", + "func_name": "visitError", "line_range": [ - 727, - 732 + 614, + 617 ], "class_name": "TreeDumper" }, - "description": "record numeric literal value; record numeric literal integer and imaginary flags" + "description": "record error node category" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitParameter", - "name": "TreeDumper.visitParameter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitParameter", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitExcept", + "name": "TreeDumper.visitExcept", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitExcept", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitParameter", + "func_name": "visitExcept", "line_range": [ - 734, - 737 + 660, + 663 ], "class_name": "TreeDumper" }, - "description": "record parameter declaration category" + "description": "record except clause location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitPass", - "name": "TreeDumper.visitPass", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitPass", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFor", + "name": "TreeDumper.visitFor", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFor", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitPass", + "func_name": "visitFor", "line_range": [ - 739, - 742 + 665, + 668 ], "class_name": "TreeDumper" }, - "description": "record pass statement location" + "description": "record for loop location; record for loop async flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitRaise", - "name": "TreeDumper.visitRaise", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitRaise", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFormatString", + "name": "TreeDumper.visitFormatString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFormatString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitRaise", + "func_name": "visitFormatString", "line_range": [ - 744, - 747 + 670, + 673 ], "class_name": "TreeDumper" }, - "description": "record raise statement location" + "description": "record format string usage" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitReturn", - "name": "TreeDumper.visitReturn", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitReturn", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFunction", + "name": "TreeDumper.visitFunction", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFunction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitReturn", + "func_name": "visitFunction", "line_range": [ - 749, - 752 + 675, + 678 ], "class_name": "TreeDumper" }, - "description": "record return statement location" + "description": "record function definition location; record function definition async flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitSet", - "name": "TreeDumper.visitSet", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitSet", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitFunctionAnnotation", + "name": "TreeDumper.visitFunctionAnnotation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitFunctionAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitSet", + "func_name": "visitFunctionAnnotation", "line_range": [ - 754, - 757 + 680, + 683 ], "class_name": "TreeDumper" }, - "description": "record set literal location" + "description": "record function annotation ellipsis flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitSlice", - "name": "TreeDumper.visitSlice", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitSlice", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitGlobal", + "name": "TreeDumper.visitGlobal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitGlobal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitSlice", + "func_name": "visitGlobal", "line_range": [ - 759, - 762 + 685, + 688 ], "class_name": "TreeDumper" }, - "description": "record slice expression location" + "description": "record global statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitStatementList", - "name": "TreeDumper.visitStatementList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitStatementList", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitIf", + "name": "TreeDumper.visitIf", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitIf", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitStatementList", + "func_name": "visitIf", "line_range": [ - 764, - 767 + 624, + 627 ], "class_name": "TreeDumper" }, - "description": "record statement list range" + "description": "record if statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitString", - "name": "TreeDumper.visitString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImport", + "name": "TreeDumper.visitImport", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitString", + "func_name": "visitImport", "line_range": [ - 769, - 772 + 629, + 632 ], "class_name": "TreeDumper" }, - "description": "record string token and value" + "description": "record import statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitStringList", - "name": "TreeDumper.visitStringList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitStringList", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImportAs", + "name": "TreeDumper.visitImportAs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImportAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitStringList", + "func_name": "visitImportAs", "line_range": [ - 774, - 777 + 634, + 637 ], "class_name": "TreeDumper" }, - "description": "record string list literal" + "description": "record import alias mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitSuite", - "name": "TreeDumper.visitSuite", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitSuite", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImportFrom", + "name": "TreeDumper.visitImportFrom", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImportFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitSuite", + "func_name": "visitImportFrom", "line_range": [ - 779, - 782 + 639, + 648 ], "class_name": "TreeDumper" }, - "description": "record suite node location" + "description": "record import from wildcard usage; record import from parenthesis usage; capture import from wildcard token text; record import from missing import flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTernary", - "name": "TreeDumper.visitTernary", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTernary", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitImportFromAs", + "name": "TreeDumper.visitImportFromAs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitImportFromAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTernary", + "func_name": "visitImportFromAs", "line_range": [ - 784, - 787 + 650, + 653 ], "class_name": "TreeDumper" }, - "description": "record ternary expression location" + "description": "record import from alias mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTuple", - "name": "TreeDumper.visitTuple", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTuple", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitIndex", + "name": "TreeDumper.visitIndex", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitIndex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTuple", + "func_name": "visitIndex", "line_range": [ - 789, - 792 + 655, + 658 ], "class_name": "TreeDumper" }, - "description": "record tuple parentheses flag" + "description": "record index expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTry", - "name": "TreeDumper.visitTry", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTry", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitLambda", + "name": "TreeDumper.visitLambda", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitLambda", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTry", + "func_name": "visitLambda", "line_range": [ - 794, - 797 + 690, + 693 ], "class_name": "TreeDumper" }, - "description": "record try statement location" + "description": "record lambda expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeAnnotation", - "name": "TreeDumper.visitTypeAnnotation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitList", + "name": "TreeDumper.visitList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTypeAnnotation", + "func_name": "visitList", "line_range": [ - 799, - 802 + 695, + 698 ], "class_name": "TreeDumper" }, - "description": "record type annotation location" + "description": "record list literal location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitUnaryOperation", - "name": "TreeDumper.visitUnaryOperation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitUnaryOperation", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitMatch", + "name": "TreeDumper.visitMatch", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitUnaryOperation", + "func_name": "visitMatch", "line_range": [ - 804, - 813 + 850, + 853 ], "class_name": "TreeDumper" }, - "description": "record unary operator token and type" + "description": "record match statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitUnpack", - "name": "TreeDumper.visitUnpack", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitUnpack", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitMemberAccess", + "name": "TreeDumper.visitMemberAccess", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitMemberAccess", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitUnpack", + "func_name": "visitMemberAccess", "line_range": [ - 815, - 818 + 700, + 703 ], "class_name": "TreeDumper" }, - "description": "record unpack expression location" + "description": "record member access expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitWhile", - "name": "TreeDumper.visitWhile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitWhile", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitModule", + "name": "TreeDumper.visitModule", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitModule", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitWhile", + "func_name": "visitModule", "line_range": [ - 820, - 823 + 705, + 708 ], "class_name": "TreeDumper" }, - "description": "record while loop location" + "description": "record module node location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitWith", - "name": "TreeDumper.visitWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitWith", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitModuleName", + "name": "TreeDumper.visitModuleName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitModuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitWith", + "func_name": "visitModuleName", "line_range": [ - 825, - 828 + 710, + 715 ], "class_name": "TreeDumper" }, - "description": "record with statement location; record with statement async flag" + "description": "record module name leading dots; record module name trailing dot flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitWithItem", - "name": "TreeDumper.visitWithItem", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitWithItem", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitName", + "name": "TreeDumper.visitName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitWithItem", + "func_name": "visitName", "line_range": [ - 830, - 833 + 717, + 720 ], "class_name": "TreeDumper" }, - "description": "record with item expression location" + "description": "record identifier token and value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitYield", - "name": "TreeDumper.visitYield", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitYield", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitNonlocal", + "name": "TreeDumper.visitNonlocal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitNonlocal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitYield", + "func_name": "visitNonlocal", "line_range": [ - 835, - 838 + 722, + 725 ], "class_name": "TreeDumper" }, - "description": "record yield expression location" + "description": "record nonlocal statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitYieldFrom", - "name": "TreeDumper.visitYieldFrom", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitYieldFrom", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitNumber", + "name": "TreeDumper.visitNumber", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitNumber", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitYieldFrom", - "line_range": [ - 840, - 843 + "func_name": "visitNumber", + "line_range": [ + 727, + 732 ], "class_name": "TreeDumper" }, - "description": "record yield from expression location" + "description": "record numeric literal value; record numeric literal integer and imaginary flags" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitCase", - "name": "TreeDumper.visitCase", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitCase", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitParameter", + "name": "TreeDumper.visitParameter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitParameter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitCase", + "func_name": "visitParameter", "line_range": [ - 845, - 848 + 734, + 737 ], "class_name": "TreeDumper" }, - "description": "record case pattern irrefutable flag" + "description": "record parameter declaration category" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitMatch", - "name": "TreeDumper.visitMatch", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitMatch", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitPass", + "name": "TreeDumper.visitPass", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitPass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitMatch", + "func_name": "visitPass", "line_range": [ - 850, - 853 + 739, + 742 ], "class_name": "TreeDumper" }, - "description": "record match statement location" + "description": "record pass statement location" }, { "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitPatternAs", @@ -35671,265 +35820,372 @@ "description": "record pattern value node" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeAlias", - "name": "TreeDumper.visitTypeAlias", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitRaise", + "name": "TreeDumper.visitRaise", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitRaise", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTypeAlias", + "func_name": "visitRaise", "line_range": [ - 905, - 908 + 744, + 747 ], "class_name": "TreeDumper" }, - "description": "record type alias declaration" + "description": "record raise statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeParameter", - "name": "TreeDumper.visitTypeParameter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeParameter", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitReturn", + "name": "TreeDumper.visitReturn", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitReturn", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTypeParameter", + "func_name": "visitReturn", "line_range": [ - 910, - 913 + 749, + 752 ], "class_name": "TreeDumper" }, - "description": "record type parameter category" + "description": "record return statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeParameterList", - "name": "TreeDumper.visitTypeParameterList", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeParameterList", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitSet", + "name": "TreeDumper.visitSet", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitSet", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "visitTypeParameterList", + "func_name": "visitSet", "line_range": [ - 915, - 918 + 754, + 757 ], "class_name": "TreeDumper" }, - "description": "record type parameter list node" + "description": "record set literal location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper._log", - "name": "TreeDumper._log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper._log", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitSlice", + "name": "TreeDumper.visitSlice", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitSlice", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "_log", + "func_name": "visitSlice", "line_range": [ - 920, - 922 + 759, + 762 ], "class_name": "TreeDumper" }, - "description": "append formatted dump line" + "description": "record slice expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper._getPrefix", - "name": "TreeDumper._getPrefix", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper._getPrefix", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitStatementList", + "name": "TreeDumper.visitStatementList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitStatementList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "_getPrefix", + "func_name": "visitStatementList", "line_range": [ - 924, - 930 + 764, + 767 ], "class_name": "TreeDumper" }, - "description": "compute node prefix with position and type" + "description": "record statement list range" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper._isNodeInRange", - "name": "TreeDumper._isNodeInRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper._isNodeInRange", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitString", + "name": "TreeDumper.visitString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "_isNodeInRange", + "func_name": "visitString", "line_range": [ - 932, - 938 + 769, + 772 ], "class_name": "TreeDumper" }, - "description": "determine node overlap with range" + "description": "record string token and value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTypeParameterCategoryString", - "name": "getTypeParameterCategoryString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTypeParameterCategoryString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitStringList", + "name": "TreeDumper.visitStringList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitStringList", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getTypeParameterCategoryString", + "func_name": "visitStringList", "line_range": [ - 941, - 950 - ] + 774, + 777 + ], + "class_name": "TreeDumper" }, - "description": "map type parameter kind to string" + "description": "record string list literal" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getParameterCategoryString", - "name": "getParameterCategoryString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getParameterCategoryString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitSuite", + "name": "TreeDumper.visitSuite", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitSuite", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getParameterCategoryString", + "func_name": "visitSuite", "line_range": [ - 952, - 961 - ] + 779, + 782 + ], + "class_name": "TreeDumper" }, - "description": "map parameter category to string" + "description": "record suite node location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getArgCategoryString", - "name": "getArgCategoryString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getArgCategoryString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTernary", + "name": "TreeDumper.visitTernary", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTernary", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getArgCategoryString", + "func_name": "visitTernary", "line_range": [ - 963, - 974 - ] + 784, + 787 + ], + "class_name": "TreeDumper" }, - "description": "map argument category to string" + "description": "record ternary expression location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getErrorExpressionCategoryString", - "name": "getErrorExpressionCategoryString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getErrorExpressionCategoryString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTry", + "name": "TreeDumper.visitTry", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTry", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getErrorExpressionCategoryString", + "func_name": "visitTry", "line_range": [ - 976, - 1011 - ] + 794, + 797 + ], + "class_name": "TreeDumper" }, - "description": "map error expression category to string" + "description": "record try statement location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTokenString", - "name": "getTokenString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTokenString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTuple", + "name": "TreeDumper.visitTuple", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTuple", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getTokenString", + "func_name": "visitTuple", "line_range": [ - 1013, - 1042 - ] + 789, + 792 + ], + "class_name": "TreeDumper" }, - "description": "format token as debug string; include token positional and flag details; serialize token payload as json" + "description": "record tuple parentheses flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTextSpanString", - "name": "getTextSpanString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTextSpanString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeAlias", + "name": "TreeDumper.visitTypeAlias", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeAlias", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getTextSpanString", + "func_name": "visitTypeAlias", "line_range": [ - 1044, - 1047 - ] + 905, + 908 + ], + "class_name": "TreeDumper" }, - "description": "format text span as coordinates" + "description": "record type alias declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getTokenTypeString", - "name": "getTokenTypeString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getTokenTypeString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeAnnotation", + "name": "TreeDumper.visitTypeAnnotation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeAnnotation", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getTokenTypeString", + "func_name": "visitTypeAnnotation", "line_range": [ - 1049, - 1100 - ] + 799, + 802 + ], + "class_name": "TreeDumper" }, - "description": "map token type to string" + "description": "record type annotation location" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getNewLineTypeString", - "name": "getNewLineTypeString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getNewLineTypeString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeParameter", + "name": "TreeDumper.visitTypeParameter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeParameter", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getNewLineTypeString", + "func_name": "visitTypeParameter", "line_range": [ - 1102, - 1115 - ] + 910, + 913 + ], + "class_name": "TreeDumper" }, - "description": "map newline type to string" + "description": "record type parameter category" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getOperatorTypeString", - "name": "getOperatorTypeString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getOperatorTypeString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitTypeParameterList", + "name": "TreeDumper.visitTypeParameterList", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitTypeParameterList", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getOperatorTypeString", + "func_name": "visitTypeParameterList", "line_range": [ - 1117, - 1208 - ] + 915, + 918 + ], + "class_name": "TreeDumper" }, - "description": "map operator type to string" + "description": "record type parameter list node" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getKeywordTypeString", - "name": "getKeywordTypeString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getKeywordTypeString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitUnaryOperation", + "name": "TreeDumper.visitUnaryOperation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitUnaryOperation", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getKeywordTypeString", + "func_name": "visitUnaryOperation", "line_range": [ - 1210, - 1287 - ] + 804, + 813 + ], + "class_name": "TreeDumper" }, - "description": "map keyword type to string; format fallback for unknown keyword type" + "description": "record unary operator token and type" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::getStringTokenFlagsString", - "name": "getStringTokenFlagsString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/getStringTokenFlagsString", + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitUnpack", + "name": "TreeDumper.visitUnpack", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitUnpack", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", - "func_name": "getStringTokenFlagsString", + "func_name": "visitUnpack", "line_range": [ - 1301, - 1303 - ] + 815, + 818 + ], + "class_name": "TreeDumper" }, - "description": "convert string token flags to readable string" + "description": "record unpack expression location" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitWhile", + "name": "TreeDumper.visitWhile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitWhile", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "visitWhile", + "line_range": [ + 820, + 823 + ], + "class_name": "TreeDumper" + }, + "description": "record while loop location" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitWith", + "name": "TreeDumper.visitWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitWith", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "visitWith", + "line_range": [ + 825, + 828 + ], + "class_name": "TreeDumper" + }, + "description": "record with statement location; record with statement async flag" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitWithItem", + "name": "TreeDumper.visitWithItem", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitWithItem", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "visitWithItem", + "line_range": [ + 830, + 833 + ], + "class_name": "TreeDumper" + }, + "description": "record with item expression location" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitYield", + "name": "TreeDumper.visitYield", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitYield", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "visitYield", + "line_range": [ + 835, + 838 + ], + "class_name": "TreeDumper" + }, + "description": "record yield expression location" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.visitYieldFrom", + "name": "TreeDumper.visitYieldFrom", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.visitYieldFrom", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "visitYieldFrom", + "line_range": [ + 840, + 843 + ], + "class_name": "TreeDumper" + }, + "description": "record yield from expression location" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts::TreeDumper.walk", + "name": "TreeDumper.walk", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageInfoUtils.ts/TreeDumper.walk", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts", + "func_name": "walk", + "line_range": [ + 491, + 501 + ], + "class_name": "TreeDumper" + }, + "description": "traverse parse tree recursively within range" }, { "id": "packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts::__file__", @@ -35991,22 +36247,6 @@ }, "description": "initialize tracker with console and name" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::LogTracker.log", - "name": "LogTracker.log", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/logTracker.ts/LogTracker.log", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts", - "func_name": "log", - "line_range": [ - 54, - 98 - ], - "class_name": "LogTracker" - }, - "description": "skip logging when console unavailable; record nested operation title and indentation; support async and sync callbacks; measure operation duration and state; apply minimal duration and performance filtering; ensure completion logging on success or error" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::LogTracker._onComplete", "name": "LogTracker._onComplete", @@ -36039,6 +36279,22 @@ }, "description": "remove current title from pending list; log all pending previous titles; clear pending title history after printing" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::LogTracker.log", + "name": "LogTracker.log", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/logTracker.ts/LogTracker.log", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts", + "func_name": "log", + "line_range": [ + 54, + 98 + ], + "class_name": "LogTracker" + }, + "description": "skip logging when console unavailable; record nested operation title and indentation; support async and sync callbacks; measure operation duration and state; apply minimal duration and performance filtering; ensure completion logging on success or error" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::State", "name": "State", @@ -36087,36 +36343,36 @@ "description": "return formatted addendum string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::State.suppress", - "name": "State.suppress", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/logTracker.ts/State.suppress", + "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::State.isSuppressed", + "name": "State.isSuppressed", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/logTracker.ts/State.isSuppressed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts", - "func_name": "suppress", + "func_name": "isSuppressed", "line_range": [ - 205, - 207 + 209, + 211 ], "class_name": "State" }, - "description": "mark state as suppressed" + "description": "report suppression status" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::State.isSuppressed", - "name": "State.isSuppressed", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/logTracker.ts/State.isSuppressed", + "id": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts::State.suppress", + "name": "State.suppress", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/logTracker.ts/State.suppress", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/logTracker.ts", - "func_name": "isSuppressed", + "func_name": "suppress", "line_range": [ - 209, - 211 + 205, + 207 ], "class_name": "State" }, - "description": "report suppression status" + "description": "mark state as suppressed" }, { "id": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts::__file__", @@ -36133,21 +36389,6 @@ }, "description": "Helper utilities for LSP: convert LSPAny, map declarations to SymbolKind, and detect null progress reporters" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts::toLSPAny", - "name": "toLSPAny", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/lspUtils.ts/toLSPAny", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts", - "func_name": "toLSPAny", - "line_range": [ - 14, - 16 - ] - }, - "description": "cast object to lsp any" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts::fromLSPAny", "name": "fromLSPAny", @@ -36185,13 +36426,28 @@ "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts", - "func_name": "isNullProgressReporter", + "func_name": "isNullProgressReporter", + "line_range": [ + 67, + 73 + ] + }, + "description": "identify null progress reporter heuristically" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts::toLSPAny", + "name": "toLSPAny", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/lspUtils.ts/toLSPAny", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/lspUtils.ts", + "func_name": "toLSPAny", "line_range": [ - 67, - 73 + 14, + 16 ] }, - "description": "identify null progress reporter heuristically" + "description": "cast object to lsp any" }, { "id": "packages/pyright/packages/pyright-internal/src/common/memUtils.ts::__file__", @@ -36269,244 +36525,259 @@ "description": "Utilities for manipulating, normalizing, and matching filesystem paths, filenames, and wildcard file specs" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getDirectoryPath", - "name": "getDirectoryPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getDirectoryPath", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::changeAnyExtension", + "name": "changeAnyExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/changeAnyExtension", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getDirectoryPath", + "func_name": "changeAnyExtension", "line_range": [ - 71, - 73 + 283, + 295 ] }, - "description": "extract directory path" + "description": "replace recognized file extension; leave path unchanged when no recognized extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRootLength", - "name": "getRootLength", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRootLength", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::combinePathComponents", + "name": "combinePathComponents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/combinePathComponents", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getRootLength", + "func_name": "combinePathComponents", "line_range": [ - 78, - 99 + 148, + 156 ] }, - "description": "compute path root length" + "description": "combine path components into path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getPathSeparator", - "name": "getPathSeparator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getPathSeparator", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::combinePaths", + "name": "combinePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/combinePaths", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getPathSeparator", + "func_name": "combinePaths", "line_range": [ - 101, - 103 + 199, + 219 ] }, - "description": "get path separator" + "description": "combine multiple path segments; prefer absolute segments when present" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getPathComponents", - "name": "getPathComponents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getPathComponents", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::containsPath", + "name": "containsPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/containsPath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getPathComponents", + "func_name": "containsPath", "line_range": [ - 105, - 116 + 226, + 257 ] }, - "description": "split path into components; normalize path components" + "description": "check parent contains child path; support current directory and ignore case options" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::reducePathComponents", - "name": "reducePathComponents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/reducePathComponents", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::ensureTrailingDirectorySeparator", + "name": "ensureTrailingDirectorySeparator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/ensureTrailingDirectorySeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "reducePathComponents", + "func_name": "ensureTrailingDirectorySeparator", "line_range": [ - 118, - 146 + 442, + 449 ] }, - "description": "resolve current and parent directory segments; eliminate empty path segments" + "description": "append trailing directory separator to path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::combinePathComponents", - "name": "combinePathComponents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/combinePathComponents", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getAnyExtensionFromPath", + "name": "getAnyExtensionFromPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getAnyExtensionFromPath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "combinePathComponents", + "func_name": "getAnyExtensionFromPath", "line_range": [ - 148, - 156 + 322, + 342 ] }, - "description": "combine path components into path" + "description": "extract file extension from path; prefer provided extension list when supplied" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRelativePath", - "name": "getRelativePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRelativePath", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getAnyExtensionFromPathWorker", + "name": "getAnyExtensionFromPathWorker", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getAnyExtensionFromPathWorker", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getRelativePath", + "func_name": "getAnyExtensionFromPathWorker", "line_range": [ - 158, - 173 + 633, + 648 ] }, - "description": "compute relative path from directory; return undefined for non-descendant paths" + "description": "find matching extension from provided list" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getInvalidSeparator", - "name": "getInvalidSeparator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getInvalidSeparator", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getBaseFileName", + "name": "getBaseFileName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getBaseFileName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getInvalidSeparator", + "func_name": "getBaseFileName", "line_range": [ - 176, - 176 + 378, + 397 ] }, - "description": "determine invalid path separator" + "description": "extract base file name; remove recognized extension when provided" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::normalizeSlashes", - "name": "normalizeSlashes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/normalizeSlashes", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getDirectoryPath", + "name": "getDirectoryPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getDirectoryPath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "normalizeSlashes", + "func_name": "getDirectoryPath", "line_range": [ - 177, - 183 + 71, + 73 ] }, - "description": "normalize slashes in path" + "description": "extract directory path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::resolvePaths", - "name": "resolvePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/resolvePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getFileExtension", + "name": "getFileExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getFileExtension", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "resolvePaths", + "func_name": "getFileExtension", "line_range": [ - 195, - 197 + 467, + 475 ] }, - "description": "resolve and normalize paths" + "description": "extract file extension; support multi dot extension extraction" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::combinePaths", - "name": "combinePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/combinePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getFileName", + "name": "getFileName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getFileName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "combinePaths", + "func_name": "getFileName", "line_range": [ - 199, - 219 + 477, + 479 ] }, - "description": "combine multiple path segments; prefer absolute segments when present" + "description": "extract file name from path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::containsPath", - "name": "containsPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/containsPath", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getInvalidSeparator", + "name": "getInvalidSeparator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getInvalidSeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "containsPath", + "func_name": "getInvalidSeparator", "line_range": [ - 226, - 257 + 176, + 176 ] }, - "description": "check parent contains child path; support current directory and ignore case options" + "description": "determine invalid path separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::changeAnyExtension", - "name": "changeAnyExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/changeAnyExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getPathComponents", + "name": "getPathComponents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getPathComponents", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "changeAnyExtension", + "func_name": "getPathComponents", "line_range": [ - 283, - 295 + 105, + 116 ] }, - "description": "replace recognized file extension; leave path unchanged when no recognized extension" + "description": "split path into components; normalize path components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getAnyExtensionFromPath", - "name": "getAnyExtensionFromPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getAnyExtensionFromPath", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getPathComponentsRelativeTo", + "name": "getPathComponentsRelativeTo", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getPathComponentsRelativeTo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getAnyExtensionFromPath", + "func_name": "getPathComponentsRelativeTo", "line_range": [ - 322, - 342 + 668, + 697 ] }, - "description": "extract file extension from path; prefer provided extension list when supplied" + "description": "derive relative path components between paths; include parent references for upward traversal" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getBaseFileName", - "name": "getBaseFileName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getBaseFileName", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getPathSeparator", + "name": "getPathSeparator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getPathSeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getBaseFileName", + "func_name": "getPathSeparator", "line_range": [ - 378, - 397 + 101, + 103 ] }, - "description": "extract base file name; remove recognized extension when provided" + "description": "get path separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRelativePathFromDirectory", - "name": "getRelativePathFromDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRelativePathFromDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRegexEscapedSeparator", + "name": "getRegexEscapedSeparator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRegexEscapedSeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getRelativePathFromDirectory", + "func_name": "getRegexEscapedSeparator", "line_range": [ - 411, - 418 + 612, + 615 ] }, - "description": "compute relative path from directory to target" + "description": "escape path separator for regex" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRelativePath", + "name": "getRelativePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRelativePath", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", + "func_name": "getRelativePath", + "line_range": [ + 158, + 173 + ] + }, + "description": "compute relative path from directory; return undefined for non-descendant paths" }, { "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRelativePathComponentsFromDirectory", @@ -36524,244 +36795,244 @@ "description": "compute relative path components from directory; support canonicalization and ignore case options" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::ensureTrailingDirectorySeparator", - "name": "ensureTrailingDirectorySeparator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/ensureTrailingDirectorySeparator", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRelativePathFromDirectory", + "name": "getRelativePathFromDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRelativePathFromDirectory", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "ensureTrailingDirectorySeparator", + "func_name": "getRelativePathFromDirectory", "line_range": [ - 442, - 449 + 411, + 418 ] }, - "description": "append trailing directory separator to path" + "description": "compute relative path from directory to target" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::hasTrailingDirectorySeparator", - "name": "hasTrailingDirectorySeparator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/hasTrailingDirectorySeparator", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRootLength", + "name": "getRootLength", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRootLength", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "hasTrailingDirectorySeparator", + "func_name": "getRootLength", "line_range": [ - 451, - 458 + 78, + 99 ] }, - "description": "detect trailing directory separator" + "description": "compute path root length" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::stripTrailingDirectorySeparator", - "name": "stripTrailingDirectorySeparator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/stripTrailingDirectorySeparator", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getShortenedFileName", + "name": "getShortenedFileName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getShortenedFileName", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "stripTrailingDirectorySeparator", + "func_name": "getShortenedFileName", "line_range": [ - 460, - 465 + 481, + 488 ] }, - "description": "remove trailing directory separator" + "description": "shorten file path for display" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getFileExtension", - "name": "getFileExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getFileExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getWildcardRegexPattern", + "name": "getWildcardRegexPattern", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getWildcardRegexPattern", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getFileExtension", + "func_name": "getWildcardRegexPattern", "line_range": [ - 467, - 475 + 502, + 550 ] }, - "description": "extract file extension; support multi dot extension extraction" + "description": "generate regex pattern for wildcard file specification; encode wildcard semantics into regex" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getFileName", - "name": "getFileName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getFileName", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getWildcardRoot", + "name": "getWildcardRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getWildcardRoot", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getFileName", + "func_name": "getWildcardRoot", "line_range": [ - 477, - 479 + 567, + 606 ] }, - "description": "extract file name from path" + "description": "derive non-wildcard root from pattern" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getShortenedFileName", - "name": "getShortenedFileName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getShortenedFileName", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::hasPythonExtension", + "name": "hasPythonExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/hasPythonExtension", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getShortenedFileName", + "func_name": "hasPythonExtension", "line_range": [ - 481, - 488 + 608, + 610 ] }, - "description": "shorten file path for display" + "description": "detect python file extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::stripFileExtension", - "name": "stripFileExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/stripFileExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::hasTrailingDirectorySeparator", + "name": "hasTrailingDirectorySeparator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/hasTrailingDirectorySeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "stripFileExtension", + "func_name": "hasTrailingDirectorySeparator", "line_range": [ - 490, - 493 + 451, + 458 ] }, - "description": "remove file extension from filename" + "description": "detect trailing directory separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::normalizePath", - "name": "normalizePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/normalizePath", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::isDirectoryWildcardPatternPresent", + "name": "isDirectoryWildcardPatternPresent", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/isDirectoryWildcardPatternPresent", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "normalizePath", + "func_name": "isDirectoryWildcardPatternPresent", "line_range": [ - 495, - 497 + 553, + 564 ] }, - "description": "normalize filesystem path" + "description": "detect directory recursive wildcard presence" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getWildcardRegexPattern", - "name": "getWildcardRegexPattern", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getWildcardRegexPattern", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::isDiskPathRoot", + "name": "isDiskPathRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/isDiskPathRoot", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getWildcardRegexPattern", + "func_name": "isDiskPathRoot", "line_range": [ - 502, - 550 + 628, + 631 ] }, - "description": "generate regex pattern for wildcard file specification; encode wildcard semantics into regex" + "description": "determine if path is disk root" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::isDirectoryWildcardPatternPresent", - "name": "isDirectoryWildcardPatternPresent", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/isDirectoryWildcardPatternPresent", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::isRootedDiskPath", + "name": "isRootedDiskPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/isRootedDiskPath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "isDirectoryWildcardPatternPresent", + "func_name": "isRootedDiskPath", "line_range": [ - 553, - 564 + 621, + 623 ] }, - "description": "detect directory recursive wildcard presence" + "description": "detect rooted disk path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getWildcardRoot", - "name": "getWildcardRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getWildcardRoot", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::normalizePath", + "name": "normalizePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/normalizePath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getWildcardRoot", + "func_name": "normalizePath", "line_range": [ - 567, - 606 + 495, + 497 ] }, - "description": "derive non-wildcard root from pattern" + "description": "normalize filesystem path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::hasPythonExtension", - "name": "hasPythonExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/hasPythonExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::normalizeSlashes", + "name": "normalizeSlashes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/normalizeSlashes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "hasPythonExtension", + "func_name": "normalizeSlashes", "line_range": [ - 608, - 610 + 177, + 183 ] }, - "description": "detect python file extension" + "description": "normalize slashes in path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getRegexEscapedSeparator", - "name": "getRegexEscapedSeparator", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getRegexEscapedSeparator", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::reducePathComponents", + "name": "reducePathComponents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/reducePathComponents", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getRegexEscapedSeparator", + "func_name": "reducePathComponents", "line_range": [ - 612, - 615 + 118, + 146 ] }, - "description": "escape path separator for regex" + "description": "resolve current and parent directory segments; eliminate empty path segments" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::isRootedDiskPath", - "name": "isRootedDiskPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/isRootedDiskPath", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::resolvePaths", + "name": "resolvePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/resolvePaths", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "isRootedDiskPath", + "func_name": "resolvePaths", "line_range": [ - 621, - 623 + 195, + 197 ] }, - "description": "detect rooted disk path" + "description": "resolve and normalize paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::isDiskPathRoot", - "name": "isDiskPathRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/isDiskPathRoot", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::stripFileExtension", + "name": "stripFileExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/stripFileExtension", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "isDiskPathRoot", + "func_name": "stripFileExtension", "line_range": [ - 628, - 631 + 490, + 493 ] }, - "description": "determine if path is disk root" + "description": "remove file extension from filename" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getAnyExtensionFromPathWorker", - "name": "getAnyExtensionFromPathWorker", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getAnyExtensionFromPathWorker", + "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::stripTrailingDirectorySeparator", + "name": "stripTrailingDirectorySeparator", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/stripTrailingDirectorySeparator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getAnyExtensionFromPathWorker", + "func_name": "stripTrailingDirectorySeparator", "line_range": [ - 633, - 648 + 460, + 465 ] }, - "description": "find matching extension from provided list" + "description": "remove trailing directory separator" }, { "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::tryGetExtensionFromPath", @@ -36778,21 +37049,6 @@ }, "description": "attempt to match specified extension at path end" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts::getPathComponentsRelativeTo", - "name": "getPathComponentsRelativeTo", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pathUtils.ts/getPathComponentsRelativeTo", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/pathUtils.ts", - "func_name": "getPathComponentsRelativeTo", - "line_range": [ - 668, - 697 - ] - }, - "description": "derive relative path components between paths; include parent references for upward traversal" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::__file__", "name": "positionUtils", @@ -36803,40 +37059,40 @@ "func_name": "positionUtils", "line_range": [ 1, - 96 + 117 ] }, - "description": "Converts between file offsets and line/column positions, ranges, and line end locations" + "description": "Converts between text offsets, positions, ranges, and line-ending locations for Pyright source files" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertOffsetToPosition", - "name": "convertOffsetToPosition", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/convertOffsetToPosition", + "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertOffsetsToRange", + "name": "convertOffsetsToRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/convertOffsetsToRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", - "func_name": "convertOffsetToPosition", + "func_name": "convertOffsetsToRange", "line_range": [ - 17, - 34 + 37, + 66 ] }, - "description": "convert offset to position; handle empty file case; clamp character within line bounds" + "description": "convert offsets to range" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertOffsetsToRange", - "name": "convertOffsetsToRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/convertOffsetsToRange", + "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertOffsetToPosition", + "name": "convertOffsetToPosition", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/convertOffsetToPosition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", - "func_name": "convertOffsetsToRange", + "func_name": "convertOffsetToPosition", "line_range": [ - 37, - 45 + 17, + 34 ] }, - "description": "convert offsets to range" + "description": "convert offset to position" }, { "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertPositionToOffset", @@ -36847,11 +37103,11 @@ "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", "func_name": "convertPositionToOffset", "line_range": [ - 48, - 54 + 69, + 75 ] }, - "description": "convert position to offset; validate position within document bounds" + "description": "convert position to offset" }, { "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertRangeToTextRange", @@ -36862,11 +37118,11 @@ "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", "func_name": "convertRangeToTextRange", "line_range": [ - 56, - 68 + 77, + 89 ] }, - "description": "convert range to text range; validate positions before conversion" + "description": "convert range to text span" }, { "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::convertTextRangeToRange", @@ -36877,41 +37133,41 @@ "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", "func_name": "convertTextRangeToRange", "line_range": [ - 70, - 72 + 91, + 93 ] }, - "description": "convert text range to range" + "description": "convert text span to range" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::getLineEndPosition", - "name": "getLineEndPosition", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/getLineEndPosition", + "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::getLineEndOffset", + "name": "getLineEndOffset", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/getLineEndOffset", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", - "func_name": "getLineEndPosition", + "func_name": "getLineEndOffset", "line_range": [ - 75, - 77 + 100, + 116 ] }, - "description": "get line end position; exclude trailing newline characters" + "description": "resolve line end offset" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::getLineEndOffset", - "name": "getLineEndOffset", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/getLineEndOffset", + "id": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts::getLineEndPosition", + "name": "getLineEndPosition", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/positionUtils.ts/getLineEndPosition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/positionUtils.ts", - "func_name": "getLineEndOffset", + "func_name": "getLineEndPosition", "line_range": [ - 79, - 95 + 96, + 98 ] }, - "description": "compute line end offset excluding newlines" + "description": "resolve line end position" }, { "id": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts::__file__", @@ -36929,34 +37185,34 @@ "description": "Terminates processes and their child process trees across platforms" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts::terminateProcessTree", - "name": "terminateProcessTree", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/processUtils.ts/terminateProcessTree", + "id": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts::terminateChild", + "name": "terminateChild", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/processUtils.ts/terminateChild", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts", - "func_name": "terminateProcessTree", + "func_name": "terminateChild", "line_range": [ - 10, - 43 + 45, + 55 ] }, - "description": "validate pid input; terminate process tree; choose termination strategy by platform; attempt process group termination; fallback to single process termination; suppress errors and output" + "description": "retrieve child process pid; detect running child process; terminate child process tree; ignore missing pid" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts::terminateChild", - "name": "terminateChild", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/processUtils.ts/terminateChild", + "id": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts::terminateProcessTree", + "name": "terminateProcessTree", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/processUtils.ts/terminateProcessTree", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/processUtils.ts", - "func_name": "terminateChild", + "func_name": "terminateProcessTree", "line_range": [ - 45, - 55 + 10, + 43 ] }, - "description": "retrieve child process pid; detect running child process; terminate child process tree; ignore missing pid" + "description": "validate pid input; terminate process tree; choose termination strategy by platform; attempt process group termination; fallback to single process termination; suppress errors and output" }, { "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::__file__", @@ -36988,6 +37244,38 @@ }, "description": "wrap underlying progress reporter" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::ProgressReportTracker.begin", + "name": "ProgressReportTracker.begin", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/progressReporter.ts/ProgressReportTracker.begin", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts", + "func_name": "begin", + "line_range": [ + 36, + 43 + ], + "class_name": "ProgressReportTracker" + }, + "description": "start progress reporting session" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::ProgressReportTracker.end", + "name": "ProgressReportTracker.end", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/progressReporter.ts/ProgressReportTracker.end", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts", + "func_name": "end", + "line_range": [ + 53, + 60 + ], + "class_name": "ProgressReportTracker" + }, + "description": "end progress reporting session" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::ProgressReportTracker.isDisplayingProgress", "name": "ProgressReportTracker.isDisplayingProgress", @@ -37020,22 +37308,6 @@ }, "description": "determine progress enabled for data" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::ProgressReportTracker.begin", - "name": "ProgressReportTracker.begin", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/progressReporter.ts/ProgressReportTracker.begin", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts", - "func_name": "begin", - "line_range": [ - 36, - 43 - ], - "class_name": "ProgressReportTracker" - }, - "description": "start progress reporting session" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::ProgressReportTracker.report", "name": "ProgressReportTracker.report", @@ -37052,22 +37324,6 @@ }, "description": "forward progress message to reporter" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts::ProgressReportTracker.end", - "name": "ProgressReportTracker.end", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/progressReporter.ts/ProgressReportTracker.end", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/progressReporter.ts", - "func_name": "end", - "line_range": [ - 53, - 60 - ], - "class_name": "ProgressReportTracker" - }, - "description": "end progress reporting session" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts::__file__", "name": "pythonVersion", @@ -37113,51 +37369,6 @@ }, "description": "create real file system" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::getArchivePart", - "name": "getArchivePart", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/getArchivePart", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "getArchivePart", - "line_range": [ - 57, - 78 - ] - }, - "description": "extract archive path prefix" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::hasZipExtension", - "name": "hasZipExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/hasZipExtension", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "hasZipExtension", - "line_range": [ - 80, - 82 - ] - }, - "description": "detect archive extension in path" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::hasZipMagic", - "name": "hasZipMagic", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/hasZipMagic", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "hasZipMagic", - "line_range": [ - 91, - 115 - ] - }, - "description": "check file magic for archive signature" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::EggZipOpenFS", "name": "EggZipOpenFS", @@ -37206,35 +37417,49 @@ "description": "expose typed zip accessor; delegate zip retrieval to parent; invoke zip callback" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::YarnFS", - "name": "YarnFS", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/YarnFS", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::getArchivePart", + "name": "getArchivePart", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/getArchivePart", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "YarnFS", + "func_name": "getArchivePart", "line_range": [ - 195, - 218 + 57, + 78 ] }, - "description": "create layered virtual filesystem; attach archive backed base filesystem; provide posix compatible filesystem view; enable archive caching and limits" + "description": "extract archive path prefix" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::YarnFS.isZip", - "name": "YarnFS.isZip", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/YarnFS.isZip", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::hasZipExtension", + "name": "hasZipExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/hasZipExtension", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "isZip", + "func_name": "hasZipExtension", "line_range": [ - 215, - 217 - ], - "class_name": "YarnFS" + 80, + 82 + ] }, - "description": "detect archive at path" + "description": "detect archive extension in path" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::hasZipMagic", + "name": "hasZipMagic", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/hasZipMagic", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", + "func_name": "hasZipMagic", + "line_range": [ + 91, + 115 + ] + }, + "description": "check file magic for archive signature" }, { "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem", @@ -37252,276 +37477,276 @@ "description": "store case sensitivity detector; store console interface; store file watcher provider" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.existsSync", - "name": "RealFileSystem.existsSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.existsSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.chdir", + "name": "RealFileSystem.chdir", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.chdir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "existsSync", + "func_name": "chdir", "line_range": [ - 233, - 244 + 251, + 258 ], "class_name": "RealFileSystem" }, - "description": "check file existence safely; treat non file inputs as missing" + "description": "change process working directory to path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.mkdirSync", - "name": "RealFileSystem.mkdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.mkdirSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.copyFileSync", + "name": "RealFileSystem.copyFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.copyFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "mkdirSync", + "func_name": "copyFileSync", "line_range": [ - 246, - 249 + 384, + 388 ], "class_name": "RealFileSystem" }, - "description": "create directory at path" + "description": "copy file synchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.chdir", - "name": "RealFileSystem.chdir", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.chdir", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.createFileSystemWatcher", + "name": "RealFileSystem.createFileSystemWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.createFileSystemWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "chdir", + "func_name": "createFileSystemWatcher", "line_range": [ - 251, - 258 + 367, + 372 ], "class_name": "RealFileSystem" }, - "description": "change process working directory to path" + "description": "create file system watcher for paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readdirSync", - "name": "RealFileSystem.readdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readdirSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.createReadStream", + "name": "RealFileSystem.createReadStream", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.createReadStream", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "readdirSync", + "func_name": "createReadStream", "line_range": [ - 260, - 263 + 374, + 377 ], "class_name": "RealFileSystem" }, - "description": "list directory entries" + "description": "create read stream for file" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readdirEntriesSync", - "name": "RealFileSystem.readdirEntriesSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readdirEntriesSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.createWriteStream", + "name": "RealFileSystem.createWriteStream", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.createWriteStream", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "readdirEntriesSync", + "func_name": "createWriteStream", "line_range": [ - 265, - 277 + 379, + 382 ], "class_name": "RealFileSystem" }, - "description": "list directory entries with types; treat archive files as directories" + "description": "create write stream for file" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readFileSync", - "name": "RealFileSystem.readFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readFileSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.existsSync", + "name": "RealFileSystem.existsSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.existsSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "readFileSync", + "func_name": "existsSync", "line_range": [ - 282, - 288 + 233, + 244 ], "class_name": "RealFileSystem" }, - "description": "read file synchronously; support text decoding" + "description": "check file existence safely; treat non file inputs as missing" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.writeFileSync", - "name": "RealFileSystem.writeFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.writeFileSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.getMappedUri", + "name": "RealFileSystem.getMappedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.getMappedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "writeFileSync", + "func_name": "getMappedUri", "line_range": [ - 290, - 293 + 444, + 446 ], "class_name": "RealFileSystem" }, - "description": "write data to file synchronously; respect optional encoding parameter" + "description": "return mapped path for original path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.statSync", - "name": "RealFileSystem.statSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.statSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.getModulePath", + "name": "RealFileSystem.getModulePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.getModulePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "statSync", + "func_name": "getModulePath", "line_range": [ - 295, - 339 + 360, + 365 ], "class_name": "RealFileSystem" }, - "description": "get file system stats for path; treat archive files as directories; return default stats for non file inputs" + "description": "retrieve module root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.rmdirSync", - "name": "RealFileSystem.rmdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.rmdirSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.getOriginalUri", + "name": "RealFileSystem.getOriginalUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.getOriginalUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "rmdirSync", + "func_name": "getOriginalUri", "line_range": [ - 341, - 344 + 440, + 442 ], "class_name": "RealFileSystem" }, - "description": "remove directory synchronously" + "description": "return original path for mapped path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.unlinkSync", - "name": "RealFileSystem.unlinkSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.unlinkSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.isInZip", + "name": "RealFileSystem.isInZip", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.isInZip", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "unlinkSync", + "func_name": "isInZip", "line_range": [ - 346, - 349 + 457, + 460 ], "class_name": "RealFileSystem" }, - "description": "remove file synchronously" + "description": "detect if path is inside archive" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.realpathSync", - "name": "RealFileSystem.realpathSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.realpathSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.isMappedUri", + "name": "RealFileSystem.isMappedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.isMappedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "realpathSync", + "func_name": "isMappedUri", "line_range": [ - 351, - 358 + 436, + 438 ], "class_name": "RealFileSystem" }, - "description": "resolve canonical file path; preserve original path on failure" + "description": "report whether path is mapped" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.getModulePath", - "name": "RealFileSystem.getModulePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.getModulePath", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.mapDirectory", + "name": "RealFileSystem.mapDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.mapDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "getModulePath", + "func_name": "mapDirectory", "line_range": [ - 360, - 365 + 448, + 455 ], "class_name": "RealFileSystem" }, - "description": "retrieve module root path" + "description": "provide directory mapping interface" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.createFileSystemWatcher", - "name": "RealFileSystem.createFileSystemWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.createFileSystemWatcher", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.mkdirSync", + "name": "RealFileSystem.mkdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.mkdirSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "createFileSystemWatcher", + "func_name": "mkdirSync", "line_range": [ - 367, - 372 + 246, + 249 ], "class_name": "RealFileSystem" }, - "description": "create file system watcher for paths" + "description": "create directory at path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.createReadStream", - "name": "RealFileSystem.createReadStream", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.createReadStream", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readdirEntriesSync", + "name": "RealFileSystem.readdirEntriesSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readdirEntriesSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "createReadStream", + "func_name": "readdirEntriesSync", "line_range": [ - 374, - 377 + 265, + 277 ], "class_name": "RealFileSystem" }, - "description": "create read stream for file" + "description": "list directory entries with types; treat archive files as directories" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.createWriteStream", - "name": "RealFileSystem.createWriteStream", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.createWriteStream", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readdirSync", + "name": "RealFileSystem.readdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readdirSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "createWriteStream", + "func_name": "readdirSync", "line_range": [ - 379, - 382 + 260, + 263 ], "class_name": "RealFileSystem" }, - "description": "create write stream for file" + "description": "list directory entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.copyFileSync", - "name": "RealFileSystem.copyFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.copyFileSync", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readFile", + "name": "RealFileSystem.readFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "copyFileSync", + "func_name": "readFile", "line_range": [ - 384, - 388 + 390, + 393 ], "class_name": "RealFileSystem" }, - "description": "copy file synchronously" + "description": "read file asynchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readFile", - "name": "RealFileSystem.readFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readFile", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readFileSync", + "name": "RealFileSystem.readFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.readFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "readFile", + "func_name": "readFileSync", "line_range": [ - 390, - 393 + 282, + 288 ], "class_name": "RealFileSystem" }, - "description": "read file asynchronously" + "description": "read file synchronously; support text decoding" }, { "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.readFileText", @@ -37542,145 +37767,98 @@ { "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.realCasePath", "name": "RealFileSystem.realCasePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.realCasePath", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "realCasePath", - "line_range": [ - 404, - 434 - ], - "class_name": "RealFileSystem" - }, - "description": "determine real case for path; preserve original path on ambiguity or error; log casing resolution failures" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.isMappedUri", - "name": "RealFileSystem.isMappedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.isMappedUri", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "isMappedUri", - "line_range": [ - 436, - 438 - ], - "class_name": "RealFileSystem" - }, - "description": "report whether path is mapped" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.getOriginalUri", - "name": "RealFileSystem.getOriginalUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.getOriginalUri", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "getOriginalUri", - "line_range": [ - 440, - 442 - ], - "class_name": "RealFileSystem" - }, - "description": "return original path for mapped path" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.getMappedUri", - "name": "RealFileSystem.getMappedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.getMappedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.realCasePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "getMappedUri", + "func_name": "realCasePath", "line_range": [ - 444, - 446 + 404, + 434 ], "class_name": "RealFileSystem" }, - "description": "return mapped path for original path" + "description": "determine real case for path; preserve original path on ambiguity or error; log casing resolution failures" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.mapDirectory", - "name": "RealFileSystem.mapDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.mapDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.realpathSync", + "name": "RealFileSystem.realpathSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.realpathSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "mapDirectory", + "func_name": "realpathSync", "line_range": [ - 448, - 455 + 351, + 358 ], "class_name": "RealFileSystem" }, - "description": "provide directory mapping interface" + "description": "resolve canonical file path; preserve original path on failure" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.isInZip", - "name": "RealFileSystem.isInZip", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.isInZip", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.rmdirSync", + "name": "RealFileSystem.rmdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.rmdirSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "isInZip", + "func_name": "rmdirSync", "line_range": [ - 457, - 460 + 341, + 344 ], "class_name": "RealFileSystem" }, - "description": "detect if path is inside archive" + "description": "remove directory synchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::WorkspaceFileWatcherProvider", - "name": "WorkspaceFileWatcherProvider", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/WorkspaceFileWatcherProvider", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.statSync", + "name": "RealFileSystem.statSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.statSync", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "WorkspaceFileWatcherProvider", + "func_name": "statSync", "line_range": [ - 471, - 504 - ] + 295, + 339 + ], + "class_name": "RealFileSystem" }, - "description": "initialize file watcher list" + "description": "get file system stats for path; treat archive files as directories; return default stats for non file inputs" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::WorkspaceFileWatcherProvider.createFileWatcher", - "name": "WorkspaceFileWatcherProvider.createFileWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/WorkspaceFileWatcherProvider.createFileWatcher", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.unlinkSync", + "name": "RealFileSystem.unlinkSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.unlinkSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "createFileWatcher", + "func_name": "unlinkSync", "line_range": [ - 474, - 489 + 346, + 349 ], - "class_name": "WorkspaceFileWatcherProvider" + "class_name": "RealFileSystem" }, - "description": "create workspace file watcher; register watcher for workspace paths" + "description": "remove file synchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::WorkspaceFileWatcherProvider.onFileChange", - "name": "WorkspaceFileWatcherProvider.onFileChange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/WorkspaceFileWatcherProvider.onFileChange", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealFileSystem.writeFileSync", + "name": "RealFileSystem.writeFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealFileSystem.writeFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "onFileChange", + "func_name": "writeFileSync", "line_range": [ - 491, - 503 + 290, + 293 ], - "class_name": "WorkspaceFileWatcherProvider" + "class_name": "RealFileSystem" }, - "description": "match changed file to watcher workspaces; dispatch file change events to watchers; invoke watcher event handlers with file path" + "description": "write data to file synchronously; respect optional encoding parameter" }, { "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile", @@ -37698,52 +37876,52 @@ "description": "bind to provided temporary directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.tmpdir", - "name": "RealTempFile.tmpdir", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile.tmpdir", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile._getTmpDir", + "name": "RealTempFile._getTmpDir", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile._getTmpDir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "tmpdir", + "func_name": "_getTmpDir", "line_range": [ - 522, - 524 + 561, + 618 ], "class_name": "RealTempFile" }, - "description": "provide temporary directory uri" + "description": "provide managed temporary directory; respect configured temporary directory root" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.tmpfile", - "name": "RealTempFile.tmpfile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile.tmpfile", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile._isFileSystemCaseSensitiveInternal", + "name": "RealTempFile._isFileSystemCaseSensitiveInternal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile._isFileSystemCaseSensitiveInternal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "tmpfile", + "func_name": "_isFileSystemCaseSensitiveInternal", "line_range": [ - 526, - 529 + 620, + 648 ], "class_name": "RealTempFile" }, - "description": "create temporary file uri" + "description": "probe filesystem case sensitivity; cleanup probe file after test" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.mktmpdir", - "name": "RealTempFile.mktmpdir", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile.mktmpdir", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile._isLocalFileSystemCaseSensitive", + "name": "RealTempFile._isLocalFileSystemCaseSensitive", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile._isLocalFileSystemCaseSensitive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "mktmpdir", + "func_name": "_isLocalFileSystemCaseSensitive", "line_range": [ - 531, - 534 + 553, + 559 ], "class_name": "RealTempFile" }, - "description": "create new temporary directory uri" + "description": "compute and cache local filesystem case sensitivity" }, { "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.dispose", @@ -37778,52 +37956,130 @@ "description": "determine case sensitivity for uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile._isLocalFileSystemCaseSensitive", - "name": "RealTempFile._isLocalFileSystemCaseSensitive", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile._isLocalFileSystemCaseSensitive", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.mktmpdir", + "name": "RealTempFile.mktmpdir", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile.mktmpdir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "_isLocalFileSystemCaseSensitive", + "func_name": "mktmpdir", "line_range": [ - 553, - 559 + 531, + 534 ], "class_name": "RealTempFile" }, - "description": "compute and cache local filesystem case sensitivity" + "description": "create new temporary directory uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile._getTmpDir", - "name": "RealTempFile._getTmpDir", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile._getTmpDir", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.tmpdir", + "name": "RealTempFile.tmpdir", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile.tmpdir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "_getTmpDir", + "func_name": "tmpdir", "line_range": [ - 561, - 618 + 522, + 524 ], "class_name": "RealTempFile" }, - "description": "provide managed temporary directory; respect configured temporary directory root" + "description": "provide temporary directory uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile._isFileSystemCaseSensitiveInternal", - "name": "RealTempFile._isFileSystemCaseSensitiveInternal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile._isFileSystemCaseSensitiveInternal", + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::RealTempFile.tmpfile", + "name": "RealTempFile.tmpfile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/RealTempFile.tmpfile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", - "func_name": "_isFileSystemCaseSensitiveInternal", + "func_name": "tmpfile", "line_range": [ - 620, - 648 + 526, + 529 ], "class_name": "RealTempFile" }, - "description": "probe filesystem case sensitivity; cleanup probe file after test" + "description": "create temporary file uri" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::WorkspaceFileWatcherProvider", + "name": "WorkspaceFileWatcherProvider", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/WorkspaceFileWatcherProvider", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", + "func_name": "WorkspaceFileWatcherProvider", + "line_range": [ + 471, + 504 + ] + }, + "description": "initialize file watcher list" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::WorkspaceFileWatcherProvider.createFileWatcher", + "name": "WorkspaceFileWatcherProvider.createFileWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/WorkspaceFileWatcherProvider.createFileWatcher", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", + "func_name": "createFileWatcher", + "line_range": [ + 474, + 489 + ], + "class_name": "WorkspaceFileWatcherProvider" + }, + "description": "create workspace file watcher; register watcher for workspace paths" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::WorkspaceFileWatcherProvider.onFileChange", + "name": "WorkspaceFileWatcherProvider.onFileChange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/WorkspaceFileWatcherProvider.onFileChange", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", + "func_name": "onFileChange", + "line_range": [ + 491, + 503 + ], + "class_name": "WorkspaceFileWatcherProvider" + }, + "description": "match changed file to watcher workspaces; dispatch file change events to watchers; invoke watcher event handlers with file path" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::YarnFS", + "name": "YarnFS", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/YarnFS", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", + "func_name": "YarnFS", + "line_range": [ + 195, + 218 + ] + }, + "description": "create layered virtual filesystem; attach archive backed base filesystem; provide posix compatible filesystem view; enable archive caching and limits" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts::YarnFS.isZip", + "name": "YarnFS.isZip", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/realFileSystem.ts/YarnFS.isZip", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts", + "func_name": "isZip", + "line_range": [ + 215, + 217 + ], + "class_name": "YarnFS" + }, + "description": "detect archive at path" }, { "id": "packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts::__file__", @@ -37855,6 +38111,21 @@ }, "description": "Registry for singleton and group services with add, remove, get, clone, and dispose operations" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::GroupServiceKey", + "name": "GroupServiceKey", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/GroupServiceKey", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", + "func_name": "GroupServiceKey", + "line_range": [ + 33, + 38 + ] + }, + "description": "create group service key; record service identifier; tag key as group" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::InternalKey", "name": "InternalKey", @@ -37885,21 +38156,6 @@ }, "description": "label service as singleton; store service identifier; provide typed service key" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::GroupServiceKey", - "name": "GroupServiceKey", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/GroupServiceKey", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "GroupServiceKey", - "line_range": [ - 33, - 38 - ] - }, - "description": "create group service key; record service identifier; tag key as group" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider", "name": "ServiceProvider", @@ -37916,68 +38172,52 @@ "description": "initialize service container; initialize disposed flag" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.add", - "name": "ServiceProvider.add", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.add", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "add", - "line_range": [ - 51, - 67 - ], - "class_name": "ServiceProvider" - }, - "description": "register singleton service; register group service instance; unregister singleton when value missing" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.remove", - "name": "ServiceProvider.remove", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.remove", + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider._addGroupService", + "name": "ServiceProvider._addGroupService", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider._addGroupService", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "remove", + "func_name": "_addGroupService", "line_range": [ - 71, - 83 + 144, + 155 ], "class_name": "ServiceProvider" }, - "description": "unregister singleton service; unregister group service instance" + "description": "initialize group for service key; add service to group; prevent duplicate services in group" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.tryGet", - "name": "ServiceProvider.tryGet", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.tryGet", + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider._removeGroupService", + "name": "ServiceProvider._removeGroupService", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider._removeGroupService", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "tryGet", + "func_name": "_removeGroupService", "line_range": [ - 87, - 89 + 157, + 164 ], "class_name": "ServiceProvider" }, - "description": "retrieve optional service" + "description": "remove service from group; ignore removal when group missing" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.get", - "name": "ServiceProvider.get", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.get", + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.add", + "name": "ServiceProvider.add", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.add", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "get", + "func_name": "add", "line_range": [ - 93, - 100 + 51, + 67 ], "class_name": "ServiceProvider" }, - "description": "retrieve required service" + "description": "register singleton service; register group service instance; unregister singleton when value missing" }, { "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.clone", @@ -38012,36 +38252,52 @@ "description": "mark provider as disposed; dispose disposable services; clear nonessential services; preserve essential services during shutdown" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider._addGroupService", - "name": "ServiceProvider._addGroupService", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider._addGroupService", + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.get", + "name": "ServiceProvider.get", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.get", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "_addGroupService", + "func_name": "get", "line_range": [ - 144, - 155 + 93, + 100 ], "class_name": "ServiceProvider" }, - "description": "initialize group for service key; add service to group; prevent duplicate services in group" + "description": "retrieve required service" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider._removeGroupService", - "name": "ServiceProvider._removeGroupService", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider._removeGroupService", + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.remove", + "name": "ServiceProvider.remove", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.remove", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", - "func_name": "_removeGroupService", + "func_name": "remove", "line_range": [ - 157, - 164 + 71, + 83 ], "class_name": "ServiceProvider" }, - "description": "remove service from group; ignore removal when group missing" + "description": "unregister singleton service; unregister group service instance" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts::ServiceProvider.tryGet", + "name": "ServiceProvider.tryGet", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/serviceProvider.ts/ServiceProvider.tryGet", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts", + "func_name": "tryGet", + "line_range": [ + 87, + 89 + ], + "class_name": "ServiceProvider" + }, + "description": "retrieve optional service" }, { "id": "packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts::__file__", @@ -38089,34 +38345,34 @@ "description": "Provides helpers to read all stdin as a Buffer or as a string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/streamUtils.ts::getStdinBuffer", - "name": "getStdinBuffer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/streamUtils.ts/getStdinBuffer", + "id": "packages/pyright/packages/pyright-internal/src/common/streamUtils.ts::getStdin", + "name": "getStdin", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/streamUtils.ts/getStdin", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/streamUtils.ts", - "func_name": "getStdinBuffer", + "func_name": "getStdin", "line_range": [ - 11, - 25 + 27, + 30 ] }, - "description": "return empty buffer on tty; read stdin asynchronously until end; concatenate incoming data into buffer" + "description": "retrieve stdin buffer asynchronously; convert buffer to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/streamUtils.ts::getStdin", - "name": "getStdin", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/streamUtils.ts/getStdin", + "id": "packages/pyright/packages/pyright-internal/src/common/streamUtils.ts::getStdinBuffer", + "name": "getStdinBuffer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/streamUtils.ts/getStdinBuffer", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/streamUtils.ts", - "func_name": "getStdin", + "func_name": "getStdinBuffer", "line_range": [ - 27, - 30 + 11, + 25 ] }, - "description": "retrieve stdin buffer asynchronously; convert buffer to string" + "description": "return empty buffer on tty; read stdin asynchronously until end; concatenate incoming data into buffer" }, { "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::__file__", @@ -38133,36 +38389,6 @@ }, "description": "Utility functions for string comparison, hashing, searching, counting, truncation, and escaping" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::isPatternInSymbol", - "name": "isPatternInSymbol", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/isPatternInSymbol", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", - "func_name": "isPatternInSymbol", - "line_range": [ - 15, - 29 - ] - }, - "description": "check typed subsequence in symbol" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::hashString", - "name": "hashString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/hashString", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", - "func_name": "hashString", - "line_range": [ - 32, - 39 - ] - }, - "description": "compute integer hash for string" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::compareStringsCaseInsensitive", "name": "compareStringsCaseInsensitive", @@ -38193,21 +38419,6 @@ }, "description": "compare strings with case sensitivity" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::getStringComparer", - "name": "getStringComparer", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/getStringComparer", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", - "func_name": "getStringComparer", - "line_range": [ - 77, - 79 - ] - }, - "description": "select string comparer by ignorecase" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::equateStringsCaseInsensitive", "name": "equateStringsCaseInsensitive", @@ -38238,6 +38449,21 @@ }, "description": "check string equality with case sensitivity" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::escapeRegExp", + "name": "escapeRegExp", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/escapeRegExp", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", + "func_name": "escapeRegExp", + "line_range": [ + 125, + 127 + ] + }, + "description": "escape regular expression metacharacters" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::getCharacterCount", "name": "getCharacterCount", @@ -38260,13 +38486,58 @@ "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", - "func_name": "getLastDottedString", + "func_name": "getLastDottedString", + "line_range": [ + 113, + 116 + ] + }, + "description": "extract substring after last dot" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::getStringComparer", + "name": "getStringComparer", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/getStringComparer", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", + "func_name": "getStringComparer", + "line_range": [ + 77, + 79 + ] + }, + "description": "select string comparer by ignorecase" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::hashString", + "name": "hashString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/hashString", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", + "func_name": "hashString", + "line_range": [ + 32, + 39 + ] + }, + "description": "compute integer hash for string" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::isPatternInSymbol", + "name": "isPatternInSymbol", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/isPatternInSymbol", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", + "func_name": "isPatternInSymbol", "line_range": [ - 113, - 116 + 15, + 29 ] }, - "description": "extract substring after last dot" + "description": "check typed subsequence in symbol" }, { "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::truncate", @@ -38283,21 +38554,6 @@ }, "description": "truncate string and append ellipsis" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts::escapeRegExp", - "name": "escapeRegExp", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/stringUtils.ts/escapeRegExp", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/stringUtils.ts", - "func_name": "escapeRegExp", - "line_range": [ - 125, - 127 - ] - }, - "description": "escape regular expression metacharacters" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::__file__", "name": "textEditTracker", @@ -38329,308 +38585,308 @@ "description": "initialize text edit tracker; set edit merge policy" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addEdits", - "name": "TextEditTracker.addEdits", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addEdits", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._addImport", + "name": "TextEditTracker._addImport", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._addImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "addEdits", + "func_name": "_addImport", "line_range": [ - 51, - 53 + 178, + 200 ], "class_name": "TextEditTracker" }, - "description": "enqueue multiple text edits" + "description": "insert auto import statement" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addEdit", - "name": "TextEditTracker.addEdit", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addEdit", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getDeletionsForSpan", + "name": "TextEditTracker._getDeletionsForSpan", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getDeletionsForSpan", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "addEdit", + "func_name": "_getDeletionsForSpan", "line_range": [ - 55, - 73 + 284, + 287 ], "class_name": "TextEditTracker" }, - "description": "add text edit; merge overlapping text edits" + "description": "find deletions overlapping span" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addEditWithTextRange", - "name": "TextEditTracker.addEditWithTextRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addEditWithTextRange", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getEditsToMerge", + "name": "TextEditTracker._getEditsToMerge", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getEditsToMerge", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "addEditWithTextRange", + "func_name": "_getEditsToMerge", "line_range": [ - 75, - 85 + 297, + 322 ], "class_name": "TextEditTracker" }, - "description": "add edit using text range; skip unchanged text edits" + "description": "determine mergeable overlapping edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.deleteImportName", - "name": "TextEditTracker.deleteImportName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.deleteImportName", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getFileUri", + "name": "TextEditTracker._getFileUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getFileUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "deleteImportName", + "func_name": "_getFileUri", "line_range": [ - 87, - 136 + 406, + 412 ], "class_name": "TextEditTracker" }, - "description": "delete import name text; delete empty import statements; remove trailing import comma; record removed syntax nodes" + "description": "resolve file path for node" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addOrUpdateImport", - "name": "TextEditTracker.addOrUpdateImport", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addOrUpdateImport", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getOverlappingForSpan", + "name": "TextEditTracker._getOverlappingForSpan", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getOverlappingForSpan", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "addOrUpdateImport", + "func_name": "_getOverlappingForSpan", "line_range": [ - 138, - 159 + 324, + 330 ], "class_name": "TextEditTracker" }, - "description": "update existing import statements; insert missing import statements" + "description": "find overlapping edits for span" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.removeNodes", - "name": "TextEditTracker.removeNodes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.removeNodes", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._handleImportNameNode", + "name": "TextEditTracker._handleImportNameNode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._handleImportNameNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "removeNodes", + "func_name": "_handleImportNameNode", "line_range": [ - 161, - 163 + 354, + 404 ], "class_name": "TextEditTracker" }, - "description": "schedule syntax nodes for removal" + "description": "remove import names in statements; delete entire import statements when empty" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.isNodeRemoved", - "name": "TextEditTracker.isNodeRemoved", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.isNodeRemoved", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._markNodeRemoved", + "name": "TextEditTracker._markNodeRemoved", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._markNodeRemoved", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "isNodeRemoved", + "func_name": "_markNodeRemoved", "line_range": [ - 165, - 167 + 419, + 434 ], "class_name": "TextEditTracker" }, - "description": "check node removal status" + "description": "record removed syntax node; record related import components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.getEdits", - "name": "TextEditTracker.getEdits", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.getEdits", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._processNodeRemoved", + "name": "TextEditTracker._processNodeRemoved", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._processNodeRemoved", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "getEdits", + "func_name": "_processNodeRemoved", "line_range": [ - 169, - 176 + 332, + 352 ], "class_name": "TextEditTracker" }, - "description": "finalize pending node removals; gather accumulated file edits" + "description": "resolve pending node removals; remove unhandled syntax nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._addImport", - "name": "TextEditTracker._addImport", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._addImport", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._removeEdits", + "name": "TextEditTracker._removeEdits", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._removeEdits", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_addImport", + "func_name": "_removeEdits", "line_range": [ - 178, - 200 + 289, + 295 ], "class_name": "TextEditTracker" }, - "description": "insert auto import statement" + "description": "remove specified text edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._tryUpdateImport", - "name": "TextEditTracker._tryUpdateImport", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._tryUpdateImport", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._removeNodesHandled", + "name": "TextEditTracker._removeNodesHandled", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._removeNodesHandled", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_tryUpdateImport", + "func_name": "_removeNodesHandled", "line_range": [ - 202, - 282 + 414, + 417 ], "class_name": "TextEditTracker" }, - "description": "update existing import symbols; rename import identifiers when possible" + "description": "mark and remove handled nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getDeletionsForSpan", - "name": "TextEditTracker._getDeletionsForSpan", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getDeletionsForSpan", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._tryUpdateImport", + "name": "TextEditTracker._tryUpdateImport", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._tryUpdateImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_getDeletionsForSpan", + "func_name": "_tryUpdateImport", "line_range": [ - 284, - 287 + 202, + 282 ], "class_name": "TextEditTracker" }, - "description": "find deletions overlapping span" + "description": "update existing import symbols; rename import identifiers when possible" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._removeEdits", - "name": "TextEditTracker._removeEdits", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._removeEdits", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addEdit", + "name": "TextEditTracker.addEdit", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addEdit", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_removeEdits", + "func_name": "addEdit", "line_range": [ - 289, - 295 + 55, + 73 ], "class_name": "TextEditTracker" }, - "description": "remove specified text edits" + "description": "add text edit; merge overlapping text edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getEditsToMerge", - "name": "TextEditTracker._getEditsToMerge", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getEditsToMerge", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addEdits", + "name": "TextEditTracker.addEdits", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addEdits", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_getEditsToMerge", + "func_name": "addEdits", "line_range": [ - 297, - 322 + 51, + 53 ], "class_name": "TextEditTracker" }, - "description": "determine mergeable overlapping edits" + "description": "enqueue multiple text edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getOverlappingForSpan", - "name": "TextEditTracker._getOverlappingForSpan", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getOverlappingForSpan", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addEditWithTextRange", + "name": "TextEditTracker.addEditWithTextRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addEditWithTextRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_getOverlappingForSpan", + "func_name": "addEditWithTextRange", "line_range": [ - 324, - 330 + 75, + 85 ], "class_name": "TextEditTracker" }, - "description": "find overlapping edits for span" + "description": "add edit using text range; skip unchanged text edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._processNodeRemoved", - "name": "TextEditTracker._processNodeRemoved", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._processNodeRemoved", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.addOrUpdateImport", + "name": "TextEditTracker.addOrUpdateImport", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.addOrUpdateImport", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_processNodeRemoved", + "func_name": "addOrUpdateImport", "line_range": [ - 332, - 352 + 138, + 159 ], "class_name": "TextEditTracker" }, - "description": "resolve pending node removals; remove unhandled syntax nodes" + "description": "update existing import statements; insert missing import statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._handleImportNameNode", - "name": "TextEditTracker._handleImportNameNode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._handleImportNameNode", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.deleteImportName", + "name": "TextEditTracker.deleteImportName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.deleteImportName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_handleImportNameNode", + "func_name": "deleteImportName", "line_range": [ - 354, - 404 + 87, + 136 ], "class_name": "TextEditTracker" }, - "description": "remove import names in statements; delete entire import statements when empty" + "description": "delete import name text; delete empty import statements; remove trailing import comma; record removed syntax nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._getFileUri", - "name": "TextEditTracker._getFileUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._getFileUri", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.getEdits", + "name": "TextEditTracker.getEdits", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.getEdits", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_getFileUri", + "func_name": "getEdits", "line_range": [ - 406, - 412 + 169, + 176 ], "class_name": "TextEditTracker" }, - "description": "resolve file path for node" + "description": "finalize pending node removals; gather accumulated file edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._removeNodesHandled", - "name": "TextEditTracker._removeNodesHandled", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._removeNodesHandled", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.isNodeRemoved", + "name": "TextEditTracker.isNodeRemoved", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.isNodeRemoved", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_removeNodesHandled", + "func_name": "isNodeRemoved", "line_range": [ - 414, - 417 + 165, + 167 ], "class_name": "TextEditTracker" }, - "description": "mark and remove handled nodes" + "description": "check node removal status" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker._markNodeRemoved", - "name": "TextEditTracker._markNodeRemoved", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker._markNodeRemoved", + "id": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts::TextEditTracker.removeNodes", + "name": "TextEditTracker.removeNodes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textEditTracker.ts/TextEditTracker.removeNodes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts", - "func_name": "_markNodeRemoved", + "func_name": "removeNodes", "line_range": [ - 419, - 434 + 161, + 163 ], "class_name": "TextEditTracker" }, - "description": "record removed syntax node; record related import components" + "description": "schedule syntax nodes for removal" }, { "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::__file__", @@ -38648,49 +38904,34 @@ "description": "Defines types and utilities for text ranges, positions, and document ranges" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::comparePositions", - "name": "comparePositions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/comparePositions", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "comparePositions", - "line_range": [ - 117, - 128 - ] - }, - "description": "compare two positions for ordering" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::getEmptyPosition", - "name": "getEmptyPosition", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/getEmptyPosition", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::combineRange", + "name": "combineRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/combineRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "getEmptyPosition", + "func_name": "combineRange", "line_range": [ - 130, - 135 + 196, + 207 ] }, - "description": "return empty start position" + "description": "combine multiple ranges into single range; return no result for empty input" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::doRangesOverlap", - "name": "doRangesOverlap", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/doRangesOverlap", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::comparePositions", + "name": "comparePositions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/comparePositions", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "doRangesOverlap", + "func_name": "comparePositions", "line_range": [ - 137, - 144 + 117, + 128 ] }, - "description": "check if ranges overlap excluding touching" + "description": "compare two positions for ordering" }, { "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::doRangesIntersect", @@ -38708,64 +38949,49 @@ "description": "check if ranges intersect including touching" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::isPositionInRange", - "name": "isPositionInRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/isPositionInRange", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "isPositionInRange", - "line_range": [ - 155, - 157 - ] - }, - "description": "check if position is inside range" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::isRangeInRange", - "name": "isRangeInRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/isRangeInRange", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::doRangesOverlap", + "name": "doRangesOverlap", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/doRangesOverlap", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "isRangeInRange", + "func_name": "doRangesOverlap", "line_range": [ - 159, - 161 + 137, + 144 ] }, - "description": "check if range is contained within another range" + "description": "check if ranges overlap excluding touching" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::positionsAreEqual", - "name": "positionsAreEqual", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/positionsAreEqual", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::extendRange", + "name": "extendRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/extendRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "positionsAreEqual", + "func_name": "extendRange", "line_range": [ - 163, - 165 + 186, + 194 ] }, - "description": "check if two positions are equal" + "description": "extend range to include another range" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::rangesAreEqual", - "name": "rangesAreEqual", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/rangesAreEqual", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::getEmptyPosition", + "name": "getEmptyPosition", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/getEmptyPosition", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "rangesAreEqual", + "func_name": "getEmptyPosition", "line_range": [ - 167, - 169 + 130, + 135 ] }, - "description": "check if two ranges are equal" + "description": "return empty start position" }, { "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::getEmptyRange", @@ -38813,34 +39039,64 @@ "description": "check if range has no length" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::extendRange", - "name": "extendRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/extendRange", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::isPositionInRange", + "name": "isPositionInRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/isPositionInRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "extendRange", + "func_name": "isPositionInRange", "line_range": [ - 186, - 194 + 155, + 157 ] }, - "description": "extend range to include another range" + "description": "check if position is inside range" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::combineRange", - "name": "combineRange", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/combineRange", + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::isRangeInRange", + "name": "isRangeInRange", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/isRangeInRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", - "func_name": "combineRange", + "func_name": "isRangeInRange", "line_range": [ - 196, - 207 + 159, + 161 ] }, - "description": "combine multiple ranges into single range; return no result for empty input" + "description": "check if range is contained within another range" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::positionsAreEqual", + "name": "positionsAreEqual", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/positionsAreEqual", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", + "func_name": "positionsAreEqual", + "line_range": [ + 163, + 165 + ] + }, + "description": "check if two positions are equal" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/textRange.ts::rangesAreEqual", + "name": "rangesAreEqual", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRange.ts/rangesAreEqual", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/textRange.ts", + "func_name": "rangesAreEqual", + "line_range": [ + 167, + 169 + ] + }, + "description": "check if two ranges are equal" }, { "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::__file__", @@ -38857,6 +39113,36 @@ }, "description": "Maintains an ordered collection of text ranges and provides fast index and lookup utilities" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::findNonNullElement", + "name": "findNonNullElement", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRangeCollection.ts/findNonNullElement", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts", + "func_name": "findNonNullElement", + "line_range": [ + 145, + 172 + ] + }, + "description": "locate nearest defined element; scan forward then backward within bounds; return index and item pair; return undefined if none found" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::getIndexContaining", + "name": "getIndexContaining", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRangeCollection.ts/getIndexContaining", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts", + "func_name": "getIndexContaining", + "line_range": [ + 104, + 143 + ] + }, + "description": "locate range containing position; support custom containment predicate; handle missing elements gracefully; detect gaps between adjacent ranges; report absence when not found" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::TextRangeCollection", "name": "TextRangeCollection", @@ -38916,55 +39202,25 @@ 54, 87 ], - "class_name": "TextRangeCollection" - }, - "description": "find nearest item at or before position" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::TextRangeCollection.getItemContaining", - "name": "TextRangeCollection.getItemContaining", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRangeCollection.ts/TextRangeCollection.getItemContaining", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts", - "func_name": "getItemContaining", - "line_range": [ - 89, - 101 - ], - "class_name": "TextRangeCollection" - }, - "description": "find item containing position" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::getIndexContaining", - "name": "getIndexContaining", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRangeCollection.ts/getIndexContaining", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts", - "func_name": "getIndexContaining", - "line_range": [ - 104, - 143 - ] + "class_name": "TextRangeCollection" }, - "description": "locate range containing position; support custom containment predicate; handle missing elements gracefully; detect gaps between adjacent ranges; report absence when not found" + "description": "find nearest item at or before position" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::findNonNullElement", - "name": "findNonNullElement", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRangeCollection.ts/findNonNullElement", + "id": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::TextRangeCollection.getItemContaining", + "name": "TextRangeCollection.getItemContaining", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/textRangeCollection.ts/TextRangeCollection.getItemContaining", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts", - "func_name": "findNonNullElement", + "func_name": "getItemContaining", "line_range": [ - 145, - 172 - ] + 89, + 101 + ], + "class_name": "TextRangeCollection" }, - "description": "locate nearest defined element; scan forward then backward within bounds; return index and item pair; return undefined if none found" + "description": "find item containing position" }, { "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::__file__", @@ -39044,20 +39300,20 @@ "description": "initialize timing metrics and counters; set timing state defaults" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStat.timeOperation", - "name": "TimingStat.timeOperation", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStat.timeOperation", + "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStat.printTime", + "name": "TimingStat.printTime", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStat.printTime", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/timing.ts", - "func_name": "timeOperation", + "func_name": "printTime", "line_range": [ - 35, - 50 + 64, + 68 ], "class_name": "TimingStat" }, - "description": "increment operation invocation count; prevent nested reentrant timing; measure operation duration and return result; accumulate total elapsed time" + "description": "round time to two decimals; format total time as seconds string" }, { "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStat.subtractFromTime", @@ -39076,20 +39332,20 @@ "description": "exclude callback duration from totals; temporarily suspend timing while executing callback; restore timing state after exclusion" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStat.printTime", - "name": "TimingStat.printTime", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStat.printTime", + "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStat.timeOperation", + "name": "TimingStat.timeOperation", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStat.timeOperation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/timing.ts", - "func_name": "printTime", + "func_name": "timeOperation", "line_range": [ - 64, - 68 + 35, + 50 ], "class_name": "TimingStat" }, - "description": "round time to two decimals; format total time as seconds string" + "description": "increment operation invocation count; prevent nested reentrant timing; measure operation duration and return result; accumulate total elapsed time" }, { "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStats", @@ -39107,20 +39363,20 @@ "description": "initialize timing statistics" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStats.printSummary", - "name": "TimingStats.printSummary", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStats.printSummary", + "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStats.getTotalDuration", + "name": "TimingStats.getTotalDuration", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStats.getTotalDuration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/timing.ts", - "func_name": "printSummary", + "func_name": "getTotalDuration", "line_range": [ - 83, - 85 + 100, + 102 ], "class_name": "TimingStats" }, - "description": "display completion duration; present brief timing summary" + "description": "provide total duration in seconds; expose overall duration metric" }, { "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStats.printDetails", @@ -39139,20 +39395,20 @@ "description": "display detailed timing breakdown; report per stage durations" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStats.getTotalDuration", - "name": "TimingStats.getTotalDuration", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStats.getTotalDuration", + "id": "packages/pyright/packages/pyright-internal/src/common/timing.ts::TimingStats.printSummary", + "name": "TimingStats.printSummary", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/timing.ts/TimingStats.printSummary", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/timing.ts", - "func_name": "getTotalDuration", + "func_name": "printSummary", "line_range": [ - 100, - 102 + 83, + 85 ], "class_name": "TimingStats" }, - "description": "provide total duration in seconds; expose overall duration metric" + "description": "display completion duration; present brief timing summary" }, { "id": "packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts::__file__", @@ -39230,548 +39486,548 @@ "description": "initialize uri with key" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isEmpty", - "name": "BaseUri.isEmpty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isEmpty", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.addExtension", + "name": "BaseUri.addExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.addExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "isEmpty", + "func_name": "addExtension", "line_range": [ - 90, - 92 + 109, + 111 ], "class_name": "BaseUri" }, - "description": "determine if uri is empty" + "description": "append extension to uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.toString", - "name": "BaseUri.toString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.toString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.addPath", + "name": "BaseUri.addPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.addPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "toString", + "func_name": "addPath", "line_range": [ - 94, - 94 + 129, + 129 ], "class_name": "BaseUri" }, - "description": "serialize uri to string" + "description": "append path segment to uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.toUserVisibleString", - "name": "BaseUri.toUserVisibleString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.toUserVisibleString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.combinePathElements", + "name": "BaseUri.combinePathElements", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.combinePathElements", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "toUserVisibleString", + "func_name": "combinePathElements", "line_range": [ - 96, - 96 + 255, + 272 ], "class_name": "BaseUri" }, - "description": "format uri for display" + "description": "combine path elements with separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.toJsonObj", - "name": "BaseUri.toJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.toJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.combinePaths", + "name": "BaseUri.combinePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.combinePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "toJsonObj", + "func_name": "combinePaths", "line_range": [ - 98, - 98 + 178, + 178 ], "class_name": "BaseUri" }, - "description": "convert uri to json object" + "description": "combine and normalize path segments" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.matchesRegex", - "name": "BaseUri.matchesRegex", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.matchesRegex", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.combinePathsUnsafe", + "name": "BaseUri.combinePathsUnsafe", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.combinePathsUnsafe", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "matchesRegex", + "func_name": "combinePathsUnsafe", "line_range": [ - 100, - 100 + 181, + 181 ], "class_name": "BaseUri" }, - "description": "match uri against regex" + "description": "combine path segments without normalizing" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.replaceExtension", - "name": "BaseUri.replaceExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.replaceExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.containsExtension", + "name": "BaseUri.containsExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.containsExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "replaceExtension", + "func_name": "containsExtension", "line_range": [ - 102, - 107 + 119, + 124 ], "class_name": "BaseUri" }, - "description": "replace uri file extension" + "description": "check filename contains extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.addExtension", - "name": "BaseUri.addExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.addExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.equals", + "name": "BaseUri.equals", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.equals", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "addExtension", + "func_name": "equals", "line_range": [ - 109, - 111 + 150, + 152 ], "class_name": "BaseUri" }, - "description": "append extension to uri" + "description": "compare uri equality by key" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.hasExtension", - "name": "BaseUri.hasExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.hasExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getComparablePath", + "name": "BaseUri.getComparablePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getComparablePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "hasExtension", + "func_name": "getComparablePath", "line_range": [ - 113, - 117 + 304, + 304 ], "class_name": "BaseUri" }, - "description": "check uri has extension" + "description": "produce comparable path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.containsExtension", - "name": "BaseUri.containsExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.containsExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getDirectory", + "name": "BaseUri.getDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "containsExtension", + "func_name": "getDirectory", "line_range": [ - 119, - 124 + 132, + 132 ], "class_name": "BaseUri" }, - "description": "check filename contains extension" + "description": "get parent directory uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.withFragment", - "name": "BaseUri.withFragment", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.withFragment", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getFilePath", + "name": "BaseUri.getFilePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getFilePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "withFragment", + "func_name": "getFilePath", "line_range": [ - 126, - 126 + 206, + 206 ], "class_name": "BaseUri" }, - "description": "set uri fragment component" + "description": "get file system path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.withQuery", - "name": "BaseUri.withQuery", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.withQuery", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPath", + "name": "BaseUri.getPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "withQuery", + "func_name": "getPath", "line_range": [ - 127, - 127 + 204, + 204 ], "class_name": "BaseUri" }, - "description": "set uri query component" + "description": "retrieve uri path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.addPath", - "name": "BaseUri.addPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.addPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPathComponents", + "name": "BaseUri.getPathComponents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPathComponents", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "addPath", + "func_name": "getPathComponents", "line_range": [ - 129, - 129 + 199, + 202 ], "class_name": "BaseUri" }, - "description": "append path segment to uri" + "description": "get path components array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getDirectory", - "name": "BaseUri.getDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPathComponentsImpl", + "name": "BaseUri.getPathComponentsImpl", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPathComponentsImpl", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getDirectory", + "func_name": "getPathComponentsImpl", "line_range": [ - 132, - 132 + 305, + 305 ], "class_name": "BaseUri" }, - "description": "get parent directory uri" + "description": "generate internal path components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRootPathLength", - "name": "BaseUri.getRootPathLength", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRootPathLength", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPathLength", + "name": "BaseUri.getPathLength", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPathLength", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getRootPathLength", + "func_name": "getPathLength", "line_range": [ - 134, - 136 + 172, + 172 ], "class_name": "BaseUri" }, - "description": "compute root path length" + "description": "obtain uri path length" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isRoot", - "name": "BaseUri.isRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isRoot", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRelativePath", + "name": "BaseUri.getRelativePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRelativePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "isRoot", + "func_name": "getRelativePath", "line_range": [ - 139, - 139 + 183, + 197 ], "class_name": "BaseUri" }, - "description": "determine if uri is root" + "description": "compute relative path for child" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isChild", - "name": "BaseUri.isChild", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isChild", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRelativePathComponents", + "name": "BaseUri.getRelativePathComponents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRelativePathComponents", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "isChild", + "func_name": "getRelativePathComponents", "line_range": [ - 142, - 142 + 208, + 236 ], "class_name": "BaseUri" }, - "description": "check if uri is child" + "description": "compute relative path components array" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isLocal", - "name": "BaseUri.isLocal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isLocal", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRootPath", + "name": "BaseUri.getRootPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRootPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "isLocal", + "func_name": "getRootPath", "line_range": [ - 144, - 144 + 246, + 246 ], "class_name": "BaseUri" }, - "description": "determine if uri is local" + "description": "obtain root path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isUntitled", - "name": "BaseUri.isUntitled", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isUntitled", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRootPathLength", + "name": "BaseUri.getRootPathLength", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRootPathLength", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "isUntitled", + "func_name": "getRootPathLength", "line_range": [ - 146, - 148 + 134, + 136 ], "class_name": "BaseUri" }, - "description": "check if uri is untitled" + "description": "compute root path length" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.equals", - "name": "BaseUri.equals", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.equals", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getShortenedFileName", + "name": "BaseUri.getShortenedFileName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getShortenedFileName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "equals", + "func_name": "getShortenedFileName", "line_range": [ - 150, - 152 + 238, + 240 ], "class_name": "BaseUri" }, - "description": "compare uri equality by key" + "description": "shorten filename for display" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.startsWith", - "name": "BaseUri.startsWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.startsWith", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.hasExtension", + "name": "BaseUri.hasExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.hasExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "startsWith", + "func_name": "hasExtension", "line_range": [ - 154, - 154 + 113, + 117 ], "class_name": "BaseUri" }, - "description": "check uri starts with other" + "description": "check uri has extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.pathStartsWith", - "name": "BaseUri.pathStartsWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.pathStartsWith", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isChild", + "name": "BaseUri.isChild", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isChild", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "pathStartsWith", + "func_name": "isChild", "line_range": [ - 156, - 159 + 142, + 142 ], "class_name": "BaseUri" }, - "description": "check path starts with string" + "description": "check if uri is child" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.pathEndsWith", - "name": "BaseUri.pathEndsWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.pathEndsWith", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isEmpty", + "name": "BaseUri.isEmpty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "pathEndsWith", + "func_name": "isEmpty", "line_range": [ - 161, - 164 + 90, + 92 ], "class_name": "BaseUri" }, - "description": "check path ends with string" + "description": "determine if uri is empty" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.pathIncludes", - "name": "BaseUri.pathIncludes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.pathIncludes", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isLocal", + "name": "BaseUri.isLocal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isLocal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "pathIncludes", + "func_name": "isLocal", "line_range": [ - 166, - 169 + 144, + 144 ], "class_name": "BaseUri" }, - "description": "check path includes substring" + "description": "determine if uri is local" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPathLength", - "name": "BaseUri.getPathLength", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPathLength", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isRoot", + "name": "BaseUri.isRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isRoot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getPathLength", + "func_name": "isRoot", "line_range": [ - 172, - 172 + 139, + 139 ], "class_name": "BaseUri" }, - "description": "obtain uri path length" + "description": "determine if uri is root" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.resolvePaths", - "name": "BaseUri.resolvePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.resolvePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.isUntitled", + "name": "BaseUri.isUntitled", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.isUntitled", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "resolvePaths", + "func_name": "isUntitled", "line_range": [ - 175, - 175 + 146, + 148 ], "class_name": "BaseUri" }, - "description": "resolve and normalize path segments" + "description": "check if uri is untitled" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.combinePaths", - "name": "BaseUri.combinePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.combinePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.matchesRegex", + "name": "BaseUri.matchesRegex", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.matchesRegex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "combinePaths", + "func_name": "matchesRegex", "line_range": [ - 178, - 178 + 100, + 100 ], "class_name": "BaseUri" }, - "description": "combine and normalize path segments" + "description": "match uri against regex" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.combinePathsUnsafe", - "name": "BaseUri.combinePathsUnsafe", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.combinePathsUnsafe", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.normalizeSlashes", + "name": "BaseUri.normalizeSlashes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.normalizeSlashes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "combinePathsUnsafe", + "func_name": "normalizeSlashes", "line_range": [ - 181, - 181 + 248, + 253 ], "class_name": "BaseUri" }, - "description": "combine path segments without normalizing" + "description": "normalize slashes in path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRelativePath", - "name": "BaseUri.getRelativePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRelativePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.pathEndsWith", + "name": "BaseUri.pathEndsWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.pathEndsWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getRelativePath", + "func_name": "pathEndsWith", "line_range": [ - 183, - 197 + 161, + 164 ], "class_name": "BaseUri" }, - "description": "compute relative path for child" + "description": "check path ends with string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPathComponents", - "name": "BaseUri.getPathComponents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPathComponents", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.pathIncludes", + "name": "BaseUri.pathIncludes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.pathIncludes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getPathComponents", + "func_name": "pathIncludes", "line_range": [ - 199, - 202 + 166, + 169 ], "class_name": "BaseUri" }, - "description": "get path components array" + "description": "check path includes substring" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPath", - "name": "BaseUri.getPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.pathStartsWith", + "name": "BaseUri.pathStartsWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.pathStartsWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getPath", + "func_name": "pathStartsWith", "line_range": [ - 204, - 204 + 156, + 159 ], "class_name": "BaseUri" }, - "description": "retrieve uri path string" + "description": "check path starts with string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getFilePath", - "name": "BaseUri.getFilePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getFilePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.reducePathComponents", + "name": "BaseUri.reducePathComponents", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.reducePathComponents", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getFilePath", + "func_name": "reducePathComponents", "line_range": [ - 206, - 206 + 273, + 302 ], "class_name": "BaseUri" }, - "description": "get file system path" + "description": "simplify path components by resolving dots" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRelativePathComponents", - "name": "BaseUri.getRelativePathComponents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRelativePathComponents", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.replaceExtension", + "name": "BaseUri.replaceExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.replaceExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getRelativePathComponents", + "func_name": "replaceExtension", "line_range": [ - 208, - 236 + 102, + 107 ], "class_name": "BaseUri" }, - "description": "compute relative path components array" + "description": "replace uri file extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getShortenedFileName", - "name": "BaseUri.getShortenedFileName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getShortenedFileName", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.resolvePaths", + "name": "BaseUri.resolvePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.resolvePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getShortenedFileName", + "func_name": "resolvePaths", "line_range": [ - 238, - 240 + 175, + 175 ], "class_name": "BaseUri" }, - "description": "shorten filename for display" + "description": "resolve and normalize path segments" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.stripExtension", - "name": "BaseUri.stripExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.stripExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.startsWith", + "name": "BaseUri.startsWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.startsWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "stripExtension", + "func_name": "startsWith", "line_range": [ - 242, - 242 + 154, + 154 ], "class_name": "BaseUri" }, - "description": "remove last file extension" + "description": "check uri starts with other" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.stripAllExtensions", @@ -39790,100 +40046,100 @@ "description": "remove all file extensions" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getRootPath", - "name": "BaseUri.getRootPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getRootPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.stripExtension", + "name": "BaseUri.stripExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.stripExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getRootPath", + "func_name": "stripExtension", "line_range": [ - 246, - 246 + 242, + 242 ], "class_name": "BaseUri" }, - "description": "obtain root path string" + "description": "remove last file extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.normalizeSlashes", - "name": "BaseUri.normalizeSlashes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.normalizeSlashes", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.toJsonObj", + "name": "BaseUri.toJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.toJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "normalizeSlashes", + "func_name": "toJsonObj", "line_range": [ - 248, - 253 + 98, + 98 ], "class_name": "BaseUri" }, - "description": "normalize slashes in path" + "description": "convert uri to json object" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.combinePathElements", - "name": "BaseUri.combinePathElements", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.combinePathElements", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.toString", + "name": "BaseUri.toString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.toString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "combinePathElements", + "func_name": "toString", "line_range": [ - 255, - 272 + 94, + 94 ], "class_name": "BaseUri" }, - "description": "combine path elements with separator" + "description": "serialize uri to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.reducePathComponents", - "name": "BaseUri.reducePathComponents", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.reducePathComponents", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.toUserVisibleString", + "name": "BaseUri.toUserVisibleString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.toUserVisibleString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "reducePathComponents", + "func_name": "toUserVisibleString", "line_range": [ - 273, - 302 + 96, + 96 ], "class_name": "BaseUri" }, - "description": "simplify path components by resolving dots" + "description": "format uri for display" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getComparablePath", - "name": "BaseUri.getComparablePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getComparablePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.withFragment", + "name": "BaseUri.withFragment", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.withFragment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getComparablePath", + "func_name": "withFragment", "line_range": [ - 304, - 304 + 126, + 126 ], "class_name": "BaseUri" }, - "description": "produce comparable path string" + "description": "set uri fragment component" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.getPathComponentsImpl", - "name": "BaseUri.getPathComponentsImpl", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.getPathComponentsImpl", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts::BaseUri.withQuery", + "name": "BaseUri.withQuery", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/baseUri.ts/BaseUri.withQuery", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts", - "func_name": "getPathComponentsImpl", + "func_name": "withQuery", "line_range": [ - 305, - 305 + 127, + 127 ], "class_name": "BaseUri" }, - "description": "generate internal path components" + "description": "set uri query component" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::__file__", @@ -39916,164 +40172,180 @@ "description": "create constant uri instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.equals", - "name": "ConstantUri.equals", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.equals", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.addPath", + "name": "ConstantUri.addPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.addPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "equals", + "func_name": "addPath", "line_range": [ - 45, - 48 + 74, + 76 ], "class_name": "ConstantUri" }, - "description": "compare uri references" + "description": "ignore path additions" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.toJsonObj", - "name": "ConstantUri.toJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.toJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.combinePaths", + "name": "ConstantUri.combinePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.combinePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "toJsonObj", + "func_name": "combinePaths", "line_range": [ - 50, - 52 + 106, + 108 ], "class_name": "ConstantUri" }, - "description": "prevent uri serialization" + "description": "combine additional paths with uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.toString", - "name": "ConstantUri.toString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.toString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.combinePathsUnsafe", + "name": "ConstantUri.combinePathsUnsafe", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.combinePathsUnsafe", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "toString", + "func_name": "combinePathsUnsafe", "line_range": [ - 54, - 56 + 110, + 112 ], "class_name": "ConstantUri" }, - "description": "represent uri as key" + "description": "concatenate paths without validation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.toUserVisibleString", - "name": "ConstantUri.toUserVisibleString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.toUserVisibleString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.equals", + "name": "ConstantUri.equals", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.equals", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "toUserVisibleString", + "func_name": "equals", "line_range": [ - 58, - 60 + 45, + 48 ], "class_name": "ConstantUri" }, - "description": "provide user visible string" + "description": "compare uri references" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.matchesRegex", - "name": "ConstantUri.matchesRegex", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.matchesRegex", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getComparablePath", + "name": "ConstantUri.getComparablePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getComparablePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "matchesRegex", + "func_name": "getComparablePath", "line_range": [ - 62, - 64 + 134, + 136 ], "class_name": "ConstantUri" }, - "description": "match uri against pattern" + "description": "compute comparable path representation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.withFragment", - "name": "ConstantUri.withFragment", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.withFragment", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getDirectory", + "name": "ConstantUri.getDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "withFragment", + "func_name": "getDirectory", "line_range": [ - 66, - 68 + 78, + 80 ], "class_name": "ConstantUri" }, - "description": "ignore fragment updates" + "description": "get uri directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.withQuery", - "name": "ConstantUri.withQuery", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.withQuery", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getFilePath", + "name": "ConstantUri.getFilePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getFilePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "withQuery", + "func_name": "getFilePath", "line_range": [ - 70, - 72 + 118, + 120 ], "class_name": "ConstantUri" }, - "description": "ignore query updates" + "description": "retrieve file path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.addPath", - "name": "ConstantUri.addPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.addPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getPath", + "name": "ConstantUri.getPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "addPath", + "func_name": "getPath", "line_range": [ - 74, - 76 + 114, + 116 ], "class_name": "ConstantUri" }, - "description": "ignore path additions" + "description": "retrieve uri path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getDirectory", - "name": "ConstantUri.getDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getPathComponentsImpl", + "name": "ConstantUri.getPathComponentsImpl", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getPathComponentsImpl", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getDirectory", + "func_name": "getPathComponentsImpl", "line_range": [ - 78, - 80 + 138, + 140 ], "class_name": "ConstantUri" }, - "description": "get uri directory" + "description": "split path into components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.isRoot", - "name": "ConstantUri.isRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.isRoot", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getPathLength", + "name": "ConstantUri.getPathLength", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getPathLength", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "isRoot", + "func_name": "getPathLength", "line_range": [ - 82, - 84 + 98, + 100 ], "class_name": "ConstantUri" }, - "description": "check if uri is root" + "description": "compute uri path length" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getRootPath", + "name": "ConstantUri.getRootPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getRootPath", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", + "func_name": "getRootPath", + "line_range": [ + 130, + 132 + ], + "class_name": "ConstantUri" + }, + "description": "obtain root path string" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.isChild", @@ -40108,36 +40380,36 @@ "description": "indicate if uri is local" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.startsWith", - "name": "ConstantUri.startsWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.startsWith", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.isRoot", + "name": "ConstantUri.isRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.isRoot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "startsWith", + "func_name": "isRoot", "line_range": [ - 94, - 96 + 82, + 84 ], "class_name": "ConstantUri" }, - "description": "check uri prefix match" + "description": "check if uri is root" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getPathLength", - "name": "ConstantUri.getPathLength", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getPathLength", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.matchesRegex", + "name": "ConstantUri.matchesRegex", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.matchesRegex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getPathLength", + "func_name": "matchesRegex", "line_range": [ - 98, - 100 + 62, + 64 ], "class_name": "ConstantUri" }, - "description": "compute uri path length" + "description": "match uri against pattern" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.resolvePaths", @@ -40156,148 +40428,132 @@ "description": "resolve relative paths against uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.combinePaths", - "name": "ConstantUri.combinePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.combinePaths", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "combinePaths", - "line_range": [ - 106, - 108 - ], - "class_name": "ConstantUri" - }, - "description": "combine additional paths with uri" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.combinePathsUnsafe", - "name": "ConstantUri.combinePathsUnsafe", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.combinePathsUnsafe", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.startsWith", + "name": "ConstantUri.startsWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.startsWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "combinePathsUnsafe", + "func_name": "startsWith", "line_range": [ - 110, - 112 + 94, + 96 ], "class_name": "ConstantUri" }, - "description": "concatenate paths without validation" + "description": "check uri prefix match" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getPath", - "name": "ConstantUri.getPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.stripAllExtensions", + "name": "ConstantUri.stripAllExtensions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.stripAllExtensions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getPath", + "func_name": "stripAllExtensions", "line_range": [ - 114, - 116 + 126, + 128 ], "class_name": "ConstantUri" }, - "description": "retrieve uri path string" + "description": "remove all extensions from uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getFilePath", - "name": "ConstantUri.getFilePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getFilePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.stripExtension", + "name": "ConstantUri.stripExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.stripExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getFilePath", + "func_name": "stripExtension", "line_range": [ - 118, - 120 + 122, + 124 ], "class_name": "ConstantUri" }, - "description": "retrieve file path string" + "description": "remove file extension from uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.stripExtension", - "name": "ConstantUri.stripExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.stripExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.toJsonObj", + "name": "ConstantUri.toJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.toJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "stripExtension", + "func_name": "toJsonObj", "line_range": [ - 122, - 124 + 50, + 52 ], "class_name": "ConstantUri" }, - "description": "remove file extension from uri" + "description": "prevent uri serialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.stripAllExtensions", - "name": "ConstantUri.stripAllExtensions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.stripAllExtensions", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.toString", + "name": "ConstantUri.toString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.toString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "stripAllExtensions", + "func_name": "toString", "line_range": [ - 126, - 128 + 54, + 56 ], "class_name": "ConstantUri" }, - "description": "remove all extensions from uri" + "description": "represent uri as key" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getRootPath", - "name": "ConstantUri.getRootPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getRootPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.toUserVisibleString", + "name": "ConstantUri.toUserVisibleString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.toUserVisibleString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getRootPath", + "func_name": "toUserVisibleString", "line_range": [ - 130, - 132 + 58, + 60 ], "class_name": "ConstantUri" }, - "description": "obtain root path string" + "description": "provide user visible string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getComparablePath", - "name": "ConstantUri.getComparablePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getComparablePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.withFragment", + "name": "ConstantUri.withFragment", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.withFragment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getComparablePath", + "func_name": "withFragment", "line_range": [ - 134, - 136 + 66, + 68 ], "class_name": "ConstantUri" }, - "description": "compute comparable path representation" + "description": "ignore fragment updates" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.getPathComponentsImpl", - "name": "ConstantUri.getPathComponentsImpl", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.getPathComponentsImpl", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts::ConstantUri.withQuery", + "name": "ConstantUri.withQuery", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/constantUri.ts/ConstantUri.withQuery", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts", - "func_name": "getPathComponentsImpl", + "func_name": "withQuery", "line_range": [ - 138, - 140 + 70, + 72 ], "class_name": "ConstantUri" }, - "description": "split path into components" + "description": "ignore query updates" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::__file__", @@ -40330,20 +40586,20 @@ "description": "create singleton empty uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::EmptyUri.toJsonObj", - "name": "EmptyUri.toJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/emptyUri.ts/EmptyUri.toJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::EmptyUri.isEmpty", + "name": "EmptyUri.isEmpty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/emptyUri.ts/EmptyUri.isEmpty", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts", - "func_name": "toJsonObj", + "func_name": "isEmpty", "line_range": [ - 25, - 29 + 35, + 37 ], "class_name": "EmptyUri" }, - "description": "serialize empty uri to object" + "description": "indicate uri emptiness" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::EmptyUri.isEmptyUri", @@ -40362,20 +40618,20 @@ "description": "identify empty uri value" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::EmptyUri.isEmpty", - "name": "EmptyUri.isEmpty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/emptyUri.ts/EmptyUri.isEmpty", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::EmptyUri.toJsonObj", + "name": "EmptyUri.toJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/emptyUri.ts/EmptyUri.toJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts", - "func_name": "isEmpty", + "func_name": "toJsonObj", "line_range": [ - 35, - 37 + 25, + 29 ], "class_name": "EmptyUri" }, - "description": "indicate uri emptiness" + "description": "serialize empty uri to object" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts::EmptyUri.toString", @@ -40403,10 +40659,10 @@ "func_name": "fileUri", "line_range": [ 1, - 302 + 327 ] }, - "description": "Represents file-schemed URIs for filesystem paths and provides path, query, fragment, and resolution utilities" + "description": "Represents file-schemed URIs with path manipulation, serialization, matching, and display helpers" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri", @@ -40418,202 +40674,202 @@ "func_name": "FileUri", "line_range": [ 32, - 301 + 326 ] }, - "description": "construct file uri instance" + "description": "create file uri state" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.createFileUri", - "name": "FileUri.createFileUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.createFileUri", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri._createKey", + "name": "FileUri._createKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri._createKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "createFileUri", + "func_name": "_createKey", "line_range": [ - 82, - 94 + 316, + 318 ], "class_name": "FileUri" }, - "description": "create file uri" + "description": "create uri key" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isFileUri", - "name": "FileUri.isFileUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isFileUri", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri._getNormalizedPath", + "name": "FileUri._getNormalizedPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri._getNormalizedPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "isFileUri", + "func_name": "_getNormalizedPath", "line_range": [ - 96, - 98 + 320, + 325 ], "class_name": "FileUri" }, - "description": "detect file uri" + "description": "provide normalized path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.fromJsonObj", - "name": "FileUri.fromJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.fromJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.addPath", + "name": "FileUri.addPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.addPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "fromJsonObj", + "func_name": "addPath", "line_range": [ - 100, - 113 + 147, + 149 ], "class_name": "FileUri" }, - "description": "deserialize file uri" + "description": "append path text" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.toJsonObj", - "name": "FileUri.toJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.toJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.combinePaths", + "name": "FileUri.combinePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.combinePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "toJsonObj", + "func_name": "combinePaths", "line_range": [ - 115, - 125 + 215, + 248 ], "class_name": "FileUri" }, - "description": "serialize file uri" + "description": "combine path segments" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.matchesRegex", - "name": "FileUri.matchesRegex", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.matchesRegex", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.combinePathsUnsafe", + "name": "FileUri.combinePathsUnsafe", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.combinePathsUnsafe", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "matchesRegex", + "func_name": "combinePathsUnsafe", "line_range": [ - 127, - 131 + 250, + 258 ], "class_name": "FileUri" }, - "description": "match path regex" + "description": "combine normalized paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.toString", - "name": "FileUri.toString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.toString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.createFileUri", + "name": "FileUri.createFileUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.createFileUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "toString", + "func_name": "createFileUri", "line_range": [ - 133, - 140 + 83, + 95 ], "class_name": "FileUri" }, - "description": "format uri string" + "description": "create file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.toUserVisibleString", - "name": "FileUri.toUserVisibleString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.toUserVisibleString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.fromJsonObj", + "name": "FileUri.fromJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.fromJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "toUserVisibleString", + "func_name": "fromJsonObj", "line_range": [ - 142, - 144 + 101, + 114 ], "class_name": "FileUri" }, - "description": "provide user visible path" + "description": "restore file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.addPath", - "name": "FileUri.addPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.addPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getComparablePath", + "name": "FileUri.getComparablePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getComparablePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "addPath", + "func_name": "getComparablePath", "line_range": [ - 146, - 148 + 312, + 314 ], "class_name": "FileUri" }, - "description": "append path segment" + "description": "provide comparable path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isRoot", - "name": "FileUri.isRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isRoot", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getDirectory", + "name": "FileUri.getDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "isRoot", + "func_name": "getDirectory", "line_range": [ - 150, - 152 + 260, + 272 ], "class_name": "FileUri" }, - "description": "determine root path" + "description": "locate parent directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isChild", - "name": "FileUri.isChild", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isChild", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getFilePath", + "name": "FileUri.getFilePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getFilePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "isChild", + "func_name": "getFilePath", "line_range": [ - 154, - 160 + 197, + 199 ], "class_name": "FileUri" }, - "description": "check child uri relation" + "description": "provide file path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isLocal", - "name": "FileUri.isLocal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isLocal", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getPath", + "name": "FileUri.getPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "isLocal", + "func_name": "getPath", "line_range": [ - 162, - 164 + 193, + 195 ], "class_name": "FileUri" }, - "description": "check local uri" + "description": "provide normalized path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.startsWith", - "name": "FileUri.startsWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.startsWith", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getPathComponentsImpl", + "name": "FileUri.getPathComponentsImpl", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getPathComponentsImpl", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "startsWith", + "func_name": "getPathComponentsImpl", "line_range": [ - 166, - 186 + 298, + 306 ], "class_name": "FileUri" }, - "description": "check path prefix" + "description": "list path components" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getPathLength", @@ -40624,252 +40880,252 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", "func_name": "getPathLength", "line_range": [ - 188, - 190 + 189, + 191 ], "class_name": "FileUri" }, - "description": "compute path length" + "description": "measure path length" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getPath", - "name": "FileUri.getPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getRootPath", + "name": "FileUri.getRootPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getRootPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "getPath", + "func_name": "getRootPath", "line_range": [ - 192, - 194 + 308, + 310 ], "class_name": "FileUri" }, - "description": "return normalized path" + "description": "locate root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getFilePath", - "name": "FileUri.getFilePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getFilePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isChild", + "name": "FileUri.isChild", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isChild", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "getFilePath", + "func_name": "isChild", "line_range": [ - 196, - 198 + 155, + 161 ], "class_name": "FileUri" }, - "description": "return original file path" + "description": "identify child uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.resolvePaths", - "name": "FileUri.resolvePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.resolvePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isFileUri", + "name": "FileUri.isFileUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isFileUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "resolvePaths", + "func_name": "isFileUri", "line_range": [ - 200, - 212 + 97, + 99 ], "class_name": "FileUri" }, - "description": "resolve relative paths" + "description": "identify file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.combinePaths", - "name": "FileUri.combinePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.combinePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isLocal", + "name": "FileUri.isLocal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isLocal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "combinePaths", + "func_name": "isLocal", "line_range": [ - 214, - 223 + 163, + 165 ], "class_name": "FileUri" }, - "description": "combine path segments" + "description": "identify local uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.combinePathsUnsafe", - "name": "FileUri.combinePathsUnsafe", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.combinePathsUnsafe", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.isRoot", + "name": "FileUri.isRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.isRoot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "combinePathsUnsafe", + "func_name": "isRoot", "line_range": [ - 225, - 233 + 151, + 153 ], "class_name": "FileUri" }, - "description": "combine path segments quickly" + "description": "identify root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getDirectory", - "name": "FileUri.getDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.matchesRegex", + "name": "FileUri.matchesRegex", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.matchesRegex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "getDirectory", + "func_name": "matchesRegex", "line_range": [ - 235, - 247 + 128, + 132 ], "class_name": "FileUri" }, - "description": "get parent directory uri" + "description": "match path pattern" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.withFragment", - "name": "FileUri.withFragment", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.withFragment", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.resolvePaths", + "name": "FileUri.resolvePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.resolvePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "withFragment", + "func_name": "resolvePaths", "line_range": [ - 249, - 251 + 201, + 213 ], "class_name": "FileUri" }, - "description": "set uri fragment" + "description": "resolve path segments" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.withQuery", - "name": "FileUri.withQuery", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.withQuery", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.startsWith", + "name": "FileUri.startsWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.startsWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "withQuery", + "func_name": "startsWith", "line_range": [ - 253, - 255 + 167, + 187 ], "class_name": "FileUri" }, - "description": "set uri query" + "description": "compare path prefix" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.stripExtension", - "name": "FileUri.stripExtension", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.stripExtension", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.stripAllExtensions", + "name": "FileUri.stripAllExtensions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.stripAllExtensions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "stripExtension", + "func_name": "stripAllExtensions", "line_range": [ - 257, - 263 + 290, + 296 ], "class_name": "FileUri" }, - "description": "remove file extension" + "description": "remove file extensions" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.stripAllExtensions", - "name": "FileUri.stripAllExtensions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.stripAllExtensions", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.stripExtension", + "name": "FileUri.stripExtension", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.stripExtension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "stripAllExtensions", + "func_name": "stripExtension", "line_range": [ - 265, - 271 + 282, + 288 ], "class_name": "FileUri" }, - "description": "remove all file extensions" + "description": "remove file extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getPathComponentsImpl", - "name": "FileUri.getPathComponentsImpl", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getPathComponentsImpl", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.toJsonObj", + "name": "FileUri.toJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.toJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "getPathComponentsImpl", + "func_name": "toJsonObj", "line_range": [ - 273, - 281 + 116, + 126 ], "class_name": "FileUri" }, - "description": "split path into components" + "description": "serialize file uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getRootPath", - "name": "FileUri.getRootPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getRootPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.toString", + "name": "FileUri.toString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.toString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "getRootPath", + "func_name": "toString", "line_range": [ - 283, - 285 + 134, + 141 ], "class_name": "FileUri" }, - "description": "extract root path" + "description": "format uri string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.getComparablePath", - "name": "FileUri.getComparablePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.getComparablePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.toUserVisibleString", + "name": "FileUri.toUserVisibleString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.toUserVisibleString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "getComparablePath", + "func_name": "toUserVisibleString", "line_range": [ - 287, - 289 + 143, + 145 ], "class_name": "FileUri" }, - "description": "generate comparable path" + "description": "present file path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri._createKey", - "name": "FileUri._createKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri._createKey", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.withFragment", + "name": "FileUri.withFragment", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.withFragment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "_createKey", + "func_name": "withFragment", "line_range": [ - 291, - 293 + 274, + 276 ], "class_name": "FileUri" }, - "description": "create uri key" + "description": "replace uri fragment" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri._getNormalizedPath", - "name": "FileUri._getNormalizedPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri._getNormalizedPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts::FileUri.withQuery", + "name": "FileUri.withQuery", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/fileUri.ts/FileUri.withQuery", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts", - "func_name": "_getNormalizedPath", + "func_name": "withQuery", "line_range": [ - 295, - 300 + 278, + 280 ], "class_name": "FileUri" }, - "description": "normalize path slashes" + "description": "replace uri query" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts::__file__", @@ -40881,40 +41137,40 @@ "func_name": "memoization", "line_range": [ 1, - 86 + 90 ] }, - "description": "Provides decorators to memoize property getters, no-arg instance methods, and static methods with LRU caching" + "description": "Provides decorators for caching property, instance method, and static method results" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts::cacheProperty", - "name": "cacheProperty", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/memoization.ts/cacheProperty", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts::cacheMethodWithNoArgs", + "name": "cacheMethodWithNoArgs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/memoization.ts/cacheMethodWithNoArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts", - "func_name": "cacheProperty", + "func_name": "cacheMethodWithNoArgs", "line_range": [ - 16, - 33 + 41, + 58 ] }, - "description": "memoize property getter; cache computed value per instance" + "description": "cache method result" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts::cacheMethodWithNoArgs", - "name": "cacheMethodWithNoArgs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/memoization.ts/cacheMethodWithNoArgs", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts::cacheProperty", + "name": "cacheProperty", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/memoization.ts/cacheProperty", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts", - "func_name": "cacheMethodWithNoArgs", + "func_name": "cacheProperty", "line_range": [ - 37, - 54 + 20, + 37 ] }, - "description": "memoize method with no args; cache method result on instance" + "description": "cache property result" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts::cacheStaticFunc", @@ -40925,11 +41181,11 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts", "func_name": "cacheStaticFunc", "line_range": [ - 57, - 85 + 61, + 89 ] }, - "description": "memoize static function calls; cache results across calls; key cache by argument values; evict least recently used entries; promote accessed cache entries" + "description": "cache static function results; limit static cache growth" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uri.ts::__file__", @@ -41021,6 +41277,22 @@ }, "description": "initialize internal maps" }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.[Symbol.iterator]", + "name": "UriMap.[Symbol.iterator]", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.[Symbol.iterator]", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", + "func_name": "[Symbol.iterator]", + "line_range": [ + 33, + 35 + ], + "class_name": "UriMap" + }, + "description": "iterate uri value pairs" + }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.clear", "name": "UriMap.clear", @@ -41038,52 +41310,52 @@ "description": "clear stored uri mappings" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.forEach", - "name": "UriMap.forEach", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.forEach", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.delete", + "name": "UriMap.delete", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.delete", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "forEach", + "func_name": "delete", "line_range": [ - 25, - 29 + 52, + 55 ], "class_name": "UriMap" }, - "description": "invoke callback for each mapping" + "description": "remove mapping for uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.values", - "name": "UriMap.values", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.values", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.entries", + "name": "UriMap.entries", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.entries", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "values", + "func_name": "entries", "line_range": [ - 30, - 32 + 57, + 75 ], "class_name": "UriMap" }, - "description": "iterate stored values" + "description": "iterate uri and associated values" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.[Symbol.iterator]", - "name": "UriMap.[Symbol.iterator]", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.[Symbol.iterator]", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.forEach", + "name": "UriMap.forEach", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.forEach", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "[Symbol.iterator]", + "func_name": "forEach", "line_range": [ - 33, - 35 + 25, + 29 ], "class_name": "UriMap" }, - "description": "iterate uri value pairs" + "description": "invoke callback for each mapping" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.get", @@ -41101,22 +41373,6 @@ }, "description": "retrieve value by uri" }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.set", - "name": "UriMap.set", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.set", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "set", - "line_range": [ - 40, - 46 - ], - "class_name": "UriMap" - }, - "description": "associate value with uri" - }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.has", "name": "UriMap.has", @@ -41134,52 +41390,52 @@ "description": "check existence of uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.delete", - "name": "UriMap.delete", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.delete", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.keys", + "name": "UriMap.keys", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.keys", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "delete", + "func_name": "keys", "line_range": [ - 52, - 55 + 77, + 79 ], "class_name": "UriMap" }, - "description": "remove mapping for uri" + "description": "iterate stored uris" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.entries", - "name": "UriMap.entries", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.entries", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.set", + "name": "UriMap.set", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.set", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "entries", + "func_name": "set", "line_range": [ - 57, - 75 + 40, + 46 ], "class_name": "UriMap" }, - "description": "iterate uri and associated values" + "description": "associate value with uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.keys", - "name": "UriMap.keys", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.keys", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts::UriMap.values", + "name": "UriMap.values", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriMap.ts/UriMap.values", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts", - "func_name": "keys", + "func_name": "values", "line_range": [ - 77, - 79 + 30, + 32 ], "class_name": "UriMap" }, - "description": "iterate stored uris" + "description": "iterate stored values" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::__file__", @@ -41191,55 +41447,55 @@ "func_name": "uriUtils", "line_range": [ 1, - 459 + 483 ] }, - "description": "Utilities for URI and filesystem operations, including wildcard file specs, directory entries, and path helpers" + "description": "Provides URI-based filesystem utilities for paths, file specs, wildcards, entries, and LSP URI conversion" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::forEachAncestorDirectory", - "name": "forEachAncestorDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/forEachAncestorDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::convertUriToLspUriString", + "name": "convertUriToLspUriString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/convertUriToLspUriString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "forEachAncestorDirectory", + "func_name": "convertUriToLspUriString", "line_range": [ - 74, - 91 + 447, + 450 ] }, - "description": "traverse ancestor directories; stop traversal on callback result" + "description": "restore client uri string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::makeDirectories", - "name": "makeDirectories", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/makeDirectories", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::deduplicateFolders", + "name": "deduplicateFolders", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/deduplicateFolders", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "makeDirectories", + "func_name": "deduplicateFolders", "line_range": [ - 94, - 109 + 396, + 433 ] }, - "description": "create directories from starting path; ensure directory path exists" + "description": "select minimal watched folders; exclude ignored folders" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSize", - "name": "getFileSize", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSize", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::directoryExists", + "name": "directoryExists", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/directoryExists", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "getFileSize", + "func_name": "directoryExists", "line_range": [ - 111, - 117 + 123, + 125 ] }, - "description": "retrieve file size" + "description": "check directory existence" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::fileExists", @@ -41257,79 +41513,79 @@ "description": "check file existence" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::directoryExists", - "name": "directoryExists", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/directoryExists", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::fileSystemEntryExists", + "name": "fileSystemEntryExists", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/fileSystemEntryExists", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "directoryExists", + "func_name": "fileSystemEntryExists", "line_range": [ - 123, - 125 + 361, + 375 ] }, - "description": "check directory existence" + "description": "check entry kind existence" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isDirectory", - "name": "isDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/isDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::forEachAncestorDirectory", + "name": "forEachAncestorDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/forEachAncestorDirectory", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "isDirectory", + "func_name": "forEachAncestorDirectory", "line_range": [ - 127, - 129 + 74, + 91 ] }, - "description": "check if uri is directory" + "description": "visit ancestor directories" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isFile", - "name": "isFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/isFile", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getDirectoryChangeKind", + "name": "getDirectoryChangeKind", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getDirectoryChangeKind", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "isFile", + "func_name": "getDirectoryChangeKind", "line_range": [ - 131, - 142 + 377, + 394 ] }, - "description": "check if uri is file; treat zip directory as file" + "description": "classify directory relocation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::tryStat", - "name": "tryStat", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/tryStat", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSize", + "name": "getFileSize", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSize", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "tryStat", + "func_name": "getFileSize", "line_range": [ - 144, - 153 + 111, + 117 ] }, - "description": "attempt to retrieve file stats; return undefined on failure" + "description": "read file size" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::tryRealpath", - "name": "tryRealpath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/tryRealpath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSpec", + "name": "getFileSpec", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSpec", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "tryRealpath", + "func_name": "getFileSpec", "line_range": [ - 155, - 161 + 340, + 354 ] }, - "description": "attempt to resolve real path; return undefined on failure" + "description": "create file match specification" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSystemEntries", @@ -41340,41 +41596,41 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", "func_name": "getFileSystemEntries", "line_range": [ - 163, - 174 + 187, + 198 ] }, - "description": "retrieve filesystem entries from directory" + "description": "list directory contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSystemEntriesWithSymlinkedDirectories", - "name": "getFileSystemEntriesWithSymlinkedDirectories", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSystemEntriesWithSymlinkedDirectories", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSystemEntriesFromDirEntries", + "name": "getFileSystemEntriesFromDirEntries", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSystemEntriesFromDirEntries", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "getFileSystemEntriesWithSymlinkedDirectories", + "func_name": "getFileSystemEntriesFromDirEntries", "line_range": [ - 176, - 185 + 212, + 219 ] }, - "description": "retrieve filesystem entries including symlinked directories" + "description": "classify directory entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSystemEntriesFromDirEntries", - "name": "getFileSystemEntriesFromDirEntries", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSystemEntriesFromDirEntries", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSystemEntriesWithSymlinkedDirectories", + "name": "getFileSystemEntriesWithSymlinkedDirectories", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSystemEntriesWithSymlinkedDirectories", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "getFileSystemEntriesFromDirEntries", + "func_name": "getFileSystemEntriesWithSymlinkedDirectories", "line_range": [ - 188, - 195 + 200, + 209 ] }, - "description": "derive filesystem entries from dir entries" + "description": "list directory contents; collect linked directories" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSystemEntriesWithSymlinkedDirectoriesFromDirEntries", @@ -41385,11 +41641,41 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", "func_name": "getFileSystemEntriesWithSymlinkedDirectoriesFromDirEntries", "line_range": [ - 197, - 239 + 221, + 263 + ] + }, + "description": "classify directory entries; collect linked directories" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getRootUri", + "name": "getRootUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getRootUri", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", + "func_name": "getRootUri", + "line_range": [ + 437, + 445 + ] + }, + "description": "resolve configured root directory" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getUsableUriPath", + "name": "getUsableUriPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getUsableUriPath", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", + "func_name": "getUsableUriPath", + "line_range": [ + 142, + 153 ] }, - "description": "classify dir entries into files and directories; detect symlinked directories" + "description": "resolve usable directory path" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getWildcardRegexPattern", @@ -41400,11 +41686,11 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", "func_name": "getWildcardRegexPattern", "line_range": [ - 244, - 283 + 268, + 307 ] }, - "description": "generate regex from wildcard pattern" + "description": "translate wildcard file pattern" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getWildcardRoot", @@ -41415,11 +41701,11 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", "func_name": "getWildcardRoot", "line_range": [ - 286, - 310 + 310, + 334 ] }, - "description": "determine wildcard root uri" + "description": "resolve wildcard search root" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::hasPythonExtension", @@ -41430,101 +41716,101 @@ "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", "func_name": "hasPythonExtension", "line_range": [ - 312, - 314 + 336, + 338 ] }, - "description": "check python file extension" + "description": "detect python file extension" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getFileSpec", - "name": "getFileSpec", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getFileSpec", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isDirectory", + "name": "isDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/isDirectory", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "getFileSpec", + "func_name": "isDirectory", "line_range": [ - 316, - 330 + 127, + 129 ] }, - "description": "construct file spec with regex and root" + "description": "identify directory entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::fileSystemEntryExists", - "name": "fileSystemEntryExists", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/fileSystemEntryExists", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isFile", + "name": "isFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/isFile", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "fileSystemEntryExists", + "func_name": "isFile", "line_range": [ - 337, - 351 + 155, + 166 ] }, - "description": "verify filesystem entry of specified kind" + "description": "identify file entry; treat archive directory as file" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getDirectoryChangeKind", - "name": "getDirectoryChangeKind", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getDirectoryChangeKind", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isUsableDirectory", + "name": "isUsableDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/isUsableDirectory", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "getDirectoryChangeKind", + "func_name": "isUsableDirectory", "line_range": [ - 353, - 370 + 134, + 136 ] }, - "description": "determine directory change kind" + "description": "validate usable directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::deduplicateFolders", - "name": "deduplicateFolders", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/deduplicateFolders", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::makeDirectories", + "name": "makeDirectories", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/makeDirectories", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "deduplicateFolders", + "func_name": "makeDirectories", "line_range": [ - 372, - 409 + 94, + 109 ] }, - "description": "deduplicate folder lists; prefer parent folders over nested ones" + "description": "create missing directories" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getRootUri", - "name": "getRootUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/getRootUri", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::tryRealpath", + "name": "tryRealpath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/tryRealpath", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "getRootUri", + "func_name": "tryRealpath", "line_range": [ - 413, - 421 + 179, + 185 ] }, - "description": "retrieve configured root uri" + "description": "resolve real path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::convertUriToLspUriString", - "name": "convertUriToLspUriString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/convertUriToLspUriString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::tryStat", + "name": "tryStat", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/uriUtils.ts/tryStat", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts", - "func_name": "convertUriToLspUriString", + "func_name": "tryStat", "line_range": [ - 423, - 426 + 168, + 177 ] }, - "description": "convert uri to lsp uri string" + "description": "read entry status" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::__file__", @@ -41557,340 +41843,340 @@ "description": "create web uri instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.createWebUri", - "name": "WebUri.createWebUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.createWebUri", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri._createKey", + "name": "WebUri._createKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri._createKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "createWebUri", + "func_name": "_createKey", "line_range": [ - 76, - 87 + 291, + 293 ], "class_name": "WebUri" }, - "description": "create web uri instance from components" + "description": "compose canonical key from components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.toString", - "name": "WebUri.toString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.toString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.addPath", + "name": "WebUri.addPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.addPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "toString", + "func_name": "addPath", "line_range": [ - 89, - 101 + 137, + 140 ], "class_name": "WebUri" }, - "description": "serialize uri to string" + "description": "append path segment to uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.toUserVisibleString", - "name": "WebUri.toUserVisibleString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.toUserVisibleString", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.combinePaths", + "name": "WebUri.combinePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.combinePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "toUserVisibleString", + "func_name": "combinePaths", "line_range": [ - 102, - 104 + 200, + 209 ], "class_name": "WebUri" }, - "description": "format uri for user display" + "description": "combine path segments with validation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isWebUri", - "name": "WebUri.isWebUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isWebUri", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.combinePathsUnsafe", + "name": "WebUri.combinePathsUnsafe", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.combinePathsUnsafe", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "isWebUri", + "func_name": "combinePathsUnsafe", "line_range": [ - 106, - 108 + 211, + 218 ], "class_name": "WebUri" }, - "description": "check object is web uri" + "description": "combine path segments without validation" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.fromJsonObj", - "name": "WebUri.fromJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.fromJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.createWebUri", + "name": "WebUri.createWebUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.createWebUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "fromJsonObj", + "func_name": "createWebUri", "line_range": [ - 110, - 119 + 76, + 87 ], "class_name": "WebUri" }, - "description": "reconstruct web uri from object" + "description": "create web uri instance from components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.toJsonObj", - "name": "WebUri.toJsonObj", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.toJsonObj", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.fromJsonObj", + "name": "WebUri.fromJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.fromJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "toJsonObj", + "func_name": "fromJsonObj", "line_range": [ - 121, - 131 + 110, + 119 ], "class_name": "WebUri" }, - "description": "serialize web uri to plain object" + "description": "reconstruct web uri from object" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.matchesRegex", - "name": "WebUri.matchesRegex", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.matchesRegex", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getComparablePath", + "name": "WebUri.getComparablePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getComparablePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "matchesRegex", + "func_name": "getComparablePath", "line_range": [ - 133, - 135 + 287, + 289 ], "class_name": "WebUri" }, - "description": "check path against regex" + "description": "produce comparable path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.addPath", - "name": "WebUri.addPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.addPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getDirectory", + "name": "WebUri.getDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "addPath", + "func_name": "getDirectory", "line_range": [ - 137, - 140 + 220, + 230 ], "class_name": "WebUri" }, - "description": "append path segment to uri" + "description": "get parent directory uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isRoot", - "name": "WebUri.isRoot", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isRoot", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getFilePath", + "name": "WebUri.getFilePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getFilePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "isRoot", + "func_name": "getFilePath", "line_range": [ - 142, - 144 + 183, + 185 ], "class_name": "WebUri" }, - "description": "check if uri is root" + "description": "return empty file path for web uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isChild", - "name": "WebUri.isChild", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isChild", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getPath", + "name": "WebUri.getPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "isChild", + "func_name": "getPath", "line_range": [ - 146, - 152 + 179, + 181 ], "class_name": "WebUri" }, - "description": "check uri is child of parent" + "description": "get uri path string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isLocal", - "name": "WebUri.isLocal", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isLocal", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getPathComponentsImpl", + "name": "WebUri.getPathComponentsImpl", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getPathComponentsImpl", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "isLocal", + "func_name": "getPathComponentsImpl", "line_range": [ - 154, - 156 + 273, + 280 ], "class_name": "WebUri" }, - "description": "report uri as non local" + "description": "split uri path into components" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.startsWith", - "name": "WebUri.startsWith", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.startsWith", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getPathLength", + "name": "WebUri.getPathLength", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getPathLength", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "startsWith", + "func_name": "getPathLength", "line_range": [ - 158, - 174 + 175, + 177 ], "class_name": "WebUri" }, - "description": "check uri starts with other uri" + "description": "get length of uri path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getPathLength", - "name": "WebUri.getPathLength", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getPathLength", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getRootPath", + "name": "WebUri.getRootPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getRootPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getPathLength", + "func_name": "getRootPath", "line_range": [ - 175, - 177 + 282, + 285 ], "class_name": "WebUri" }, - "description": "get length of uri path" + "description": "get uri root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getPath", - "name": "WebUri.getPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isChild", + "name": "WebUri.isChild", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isChild", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getPath", + "func_name": "isChild", "line_range": [ - 179, - 181 + 146, + 152 ], "class_name": "WebUri" }, - "description": "get uri path string" + "description": "check uri is child of parent" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getFilePath", - "name": "WebUri.getFilePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getFilePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isLocal", + "name": "WebUri.isLocal", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isLocal", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getFilePath", + "func_name": "isLocal", "line_range": [ - 183, - 185 + 154, + 156 ], "class_name": "WebUri" }, - "description": "return empty file path for web uri" + "description": "report uri as non local" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.resolvePaths", - "name": "WebUri.resolvePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.resolvePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isRoot", + "name": "WebUri.isRoot", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isRoot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "resolvePaths", + "func_name": "isRoot", "line_range": [ - 187, - 199 + 142, + 144 ], "class_name": "WebUri" }, - "description": "resolve and normalize uri paths" + "description": "check if uri is root" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.combinePaths", - "name": "WebUri.combinePaths", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.combinePaths", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.isWebUri", + "name": "WebUri.isWebUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.isWebUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "combinePaths", + "func_name": "isWebUri", "line_range": [ - 200, - 209 + 106, + 108 ], "class_name": "WebUri" }, - "description": "combine path segments with validation" + "description": "check object is web uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.combinePathsUnsafe", - "name": "WebUri.combinePathsUnsafe", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.combinePathsUnsafe", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.matchesRegex", + "name": "WebUri.matchesRegex", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.matchesRegex", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "combinePathsUnsafe", + "func_name": "matchesRegex", "line_range": [ - 211, - 218 + 133, + 135 ], "class_name": "WebUri" }, - "description": "combine path segments without validation" + "description": "check path against regex" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getDirectory", - "name": "WebUri.getDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getDirectory", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.resolvePaths", + "name": "WebUri.resolvePaths", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.resolvePaths", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getDirectory", + "func_name": "resolvePaths", "line_range": [ - 220, - 230 + 187, + 199 ], "class_name": "WebUri" }, - "description": "get parent directory uri" + "description": "resolve and normalize uri paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.withFragment", - "name": "WebUri.withFragment", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.withFragment", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.startsWith", + "name": "WebUri.startsWith", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.startsWith", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "withFragment", + "func_name": "startsWith", "line_range": [ - 232, - 234 + 158, + 174 ], "class_name": "WebUri" }, - "description": "create uri with new fragment" + "description": "check uri starts with other uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.withQuery", - "name": "WebUri.withQuery", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.withQuery", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.stripAllExtensions", + "name": "WebUri.stripAllExtensions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.stripAllExtensions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "withQuery", + "func_name": "stripAllExtensions", "line_range": [ - 236, - 238 + 256, + 271 ], "class_name": "WebUri" }, - "description": "create uri with new query" + "description": "remove all extensions from uri" }, { "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.stripExtension", @@ -41909,84 +42195,84 @@ "description": "remove last extension from uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.stripAllExtensions", - "name": "WebUri.stripAllExtensions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.stripAllExtensions", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.toJsonObj", + "name": "WebUri.toJsonObj", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.toJsonObj", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "stripAllExtensions", + "func_name": "toJsonObj", "line_range": [ - 256, - 271 + 121, + 131 ], "class_name": "WebUri" }, - "description": "remove all extensions from uri" + "description": "serialize web uri to plain object" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getPathComponentsImpl", - "name": "WebUri.getPathComponentsImpl", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getPathComponentsImpl", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.toString", + "name": "WebUri.toString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.toString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getPathComponentsImpl", + "func_name": "toString", "line_range": [ - 273, - 280 + 89, + 101 ], "class_name": "WebUri" }, - "description": "split uri path into components" + "description": "serialize uri to string" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getRootPath", - "name": "WebUri.getRootPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getRootPath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.toUserVisibleString", + "name": "WebUri.toUserVisibleString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.toUserVisibleString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getRootPath", + "func_name": "toUserVisibleString", "line_range": [ - 282, - 285 + 102, + 104 ], "class_name": "WebUri" }, - "description": "get uri root path" + "description": "format uri for user display" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.getComparablePath", - "name": "WebUri.getComparablePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.getComparablePath", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.withFragment", + "name": "WebUri.withFragment", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.withFragment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "getComparablePath", + "func_name": "withFragment", "line_range": [ - 287, - 289 + 232, + 234 ], "class_name": "WebUri" }, - "description": "produce comparable path string" + "description": "create uri with new fragment" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri._createKey", - "name": "WebUri._createKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri._createKey", + "id": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts::WebUri.withQuery", + "name": "WebUri.withQuery", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/webUri.ts/WebUri.withQuery", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts", - "func_name": "_createKey", + "func_name": "withQuery", "line_range": [ - 291, - 293 + 236, + 238 ], "class_name": "WebUri" }, - "description": "compose canonical key from components" + "description": "create uri with new query" }, { "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::__file__", @@ -42004,49 +42290,34 @@ "description": "Converts Pyright file edit actions to LSP WorkspaceEdit objects and applies edits to an EditableProgram" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::convertToTextEdits", - "name": "convertToTextEdits", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/convertToTextEdits", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "convertToTextEdits", - "line_range": [ - 33, - 38 - ] - }, - "description": "convert edit actions to text edits" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::convertToFileTextEdits", - "name": "convertToFileTextEdits", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/convertToFileTextEdits", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::_convertToWorkspaceEditWithChanges", + "name": "_convertToWorkspaceEditWithChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/_convertToWorkspaceEditWithChanges", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "convertToFileTextEdits", + "func_name": "_convertToWorkspaceEditWithChanges", "line_range": [ - 40, - 42 + 209, + 216 ] }, - "description": "convert edit actions to file edits" + "description": "convert file edits to changes map" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::convertToWorkspaceEdit", - "name": "convertToWorkspaceEdit", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/convertToWorkspaceEdit", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::_convertToWorkspaceEditWithDocumentChanges", + "name": "_convertToWorkspaceEditWithDocumentChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/_convertToWorkspaceEditWithDocumentChanges", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "convertToWorkspaceEdit", + "func_name": "_convertToWorkspaceEditWithDocumentChanges", "line_range": [ - 54, - 67 + 218, + 298 ] }, - "description": "convert file edits to workspace edit" + "description": "build workspace document changes list; ensure file creations precede edits; group edits per file into document edits; include change annotations when provided; append rename and delete operations" }, { "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::appendToWorkspaceEdit", @@ -42064,19 +42335,19 @@ "description": "append file edits to workspace edit" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::hasWorkspaceEditChanges", - "name": "hasWorkspaceEditChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/hasWorkspaceEditChanges", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::applyDocumentChanges", + "name": "applyDocumentChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/applyDocumentChanges", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "hasWorkspaceEditChanges", + "func_name": "applyDocumentChanges", "line_range": [ - 77, - 87 + 153, + 171 ] }, - "description": "check workspace edit contains changes" + "description": "apply text edits to program file" }, { "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::applyTextEditsToString", @@ -42109,94 +42380,94 @@ "description": "apply workspace edit to program files" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::applyDocumentChanges", - "name": "applyDocumentChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/applyDocumentChanges", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::convertToFileTextEdits", + "name": "convertToFileTextEdits", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/convertToFileTextEdits", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "applyDocumentChanges", + "func_name": "convertToFileTextEdits", "line_range": [ - 153, - 171 + 40, + 42 ] }, - "description": "apply text edits to program file" + "description": "convert edit actions to file edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::generateWorkspaceEdit", - "name": "generateWorkspaceEdit", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/generateWorkspaceEdit", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::convertToTextEdits", + "name": "convertToTextEdits", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/convertToTextEdits", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "generateWorkspaceEdit", + "func_name": "convertToTextEdits", "line_range": [ - 173, - 207 + 33, + 38 ] }, - "description": "generate workspace edit with full file replacements" + "description": "convert edit actions to text edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::_convertToWorkspaceEditWithChanges", - "name": "_convertToWorkspaceEditWithChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/_convertToWorkspaceEditWithChanges", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::convertToWorkspaceEdit", + "name": "convertToWorkspaceEdit", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/convertToWorkspaceEdit", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "_convertToWorkspaceEditWithChanges", + "func_name": "convertToWorkspaceEdit", "line_range": [ - 209, - 216 + 54, + 67 ] }, - "description": "convert file edits to changes map" + "description": "convert file edits to workspace edit" }, { - "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::_convertToWorkspaceEditWithDocumentChanges", - "name": "_convertToWorkspaceEditWithDocumentChanges", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/_convertToWorkspaceEditWithDocumentChanges", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::generateWorkspaceEdit", + "name": "generateWorkspaceEdit", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/generateWorkspaceEdit", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", - "func_name": "_convertToWorkspaceEditWithDocumentChanges", + "func_name": "generateWorkspaceEdit", "line_range": [ - 218, - 298 + 173, + 207 ] }, - "description": "build workspace document changes list; ensure file creations precede edits; group edits per file into document edits; include change annotations when provided; append rename and delete operations" + "description": "generate workspace edit with full file replacements" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::__file__", - "name": "languageServerBase", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts", + "id": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts::hasWorkspaceEditChanges", + "name": "hasWorkspaceEditChanges", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceEditUtils.ts/hasWorkspaceEditChanges", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "languageServerBase", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts", + "func_name": "hasWorkspaceEditChanges", "line_range": [ - 1, - 1620 + 77, + 87 ] }, - "description": "Provides core language server functionality and LSP handlers for Pyright" + "description": "check workspace edit contains changes" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::wrapProgressReporter", - "name": "wrapProgressReporter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/wrapProgressReporter", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::__file__", + "name": "languageServerBase", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts", "meta": { - "type": "function", + "type": "file", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "wrapProgressReporter", + "func_name": "languageServerBase", "line_range": [ - 145, - 166 + 1, + 1635 ] }, - "description": "wrap progress reporter; track progress display state; start progress reporting; report progress messages; complete progress reporting; expose enabled state" + "description": "Provides shared language server base functionality for Pyright language server variants" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase", @@ -42208,650 +42479,650 @@ "func_name": "LanguageServerBase", "line_range": [ 168, - 1619 + 1634 ] }, - "description": "initialize server environment; configure file system; initialize workspace factory; setup connection handlers; start listening to client" + "description": "initialize language server; configure workspace services; start client communication" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.dispose", - "name": "LanguageServerBase.dispose", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.dispose", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase._convertDiagnostics", + "name": "LanguageServerBase._convertDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase._convertDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "dispose", + "func_name": "_convertDiagnostics", "line_range": [ - 277, - 283 + 1549, + 1633 ], "class_name": "LanguageServerBase" }, - "description": "dispose workspace resources; clear open file map; unregister dynamic features; dispose workspace folder watcher" + "description": "convert analyzer diagnostics; attach diagnostic metadata; filter unsupported diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createBackgroundAnalysis", - "name": "LanguageServerBase.createBackgroundAnalysis", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createBackgroundAnalysis", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase._getCompatibleMarkupKind", + "name": "LanguageServerBase._getCompatibleMarkupKind", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase._getCompatibleMarkupKind", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createBackgroundAnalysis", + "func_name": "_getCompatibleMarkupKind", "line_range": [ - 285, - 285 + 1538, + 1548 ], "class_name": "LanguageServerBase" }, - "description": "create background analysis instance" + "description": "select compatible markup" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getSettings", - "name": "LanguageServerBase.getSettings", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getSettings", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.addDynamicFeature", + "name": "LanguageServerBase.addDynamicFeature", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.addDynamicFeature", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getSettings", + "func_name": "addDynamicFeature", "line_range": [ - 287, - 287 + 1534, + 1536 ], "class_name": "LanguageServerBase" }, - "description": "retrieve workspace settings" + "description": "register dynamic feature" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createAnalyzerService", - "name": "LanguageServerBase.createAnalyzerService", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createAnalyzerService", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.canNavigateToFile", + "name": "LanguageServerBase.canNavigateToFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.canNavigateToFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createAnalyzerService", + "func_name": "canNavigateToFile", "line_range": [ - 291, - 334 + 1483, + 1485 ], "class_name": "LanguageServerBase" }, - "description": "create analyzer service instance; configure service callbacks; set analysis invalidation handler" + "description": "check file navigation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getWorkspaces", - "name": "LanguageServerBase.getWorkspaces", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getWorkspaces", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.convertDiagnostics", + "name": "LanguageServerBase.convertDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.convertDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getWorkspaces", + "func_name": "convertDiagnostics", "line_range": [ - 336, - 343 + 1342, + 1350 ], "class_name": "LanguageServerBase" }, - "description": "enumerate workspaces asynchronously; wait for workspace initialization" + "description": "convert analyzer diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getWorkspaceForFile", - "name": "LanguageServerBase.getWorkspaceForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getWorkspaceForFile", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.convertLspUriStringToUri", + "name": "LanguageServerBase.convertLspUriStringToUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.convertLspUriStringToUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getWorkspaceForFile", + "func_name": "convertLspUriStringToUri", "line_range": [ - 345, - 347 + 1530, + 1532 ], "class_name": "LanguageServerBase" }, - "description": "locate workspace for file" + "description": "convert client uri" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getContainingWorkspacesForFile", - "name": "LanguageServerBase.getContainingWorkspacesForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getContainingWorkspacesForFile", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createAnalyzerService", + "name": "LanguageServerBase.createAnalyzerService", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createAnalyzerService", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getContainingWorkspacesForFile", + "func_name": "createAnalyzerService", "line_range": [ - 349, - 351 + 292, + 335 ], "class_name": "LanguageServerBase" }, - "description": "find containing workspaces for file" + "description": "create analysis service; configure diagnostic refresh; track analysis completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.reanalyze", - "name": "LanguageServerBase.reanalyze", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.reanalyze", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createAnalyzerServiceForWorkspace", + "name": "LanguageServerBase.createAnalyzerServiceForWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createAnalyzerServiceForWorkspace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "reanalyze", + "func_name": "createAnalyzerServiceForWorkspace", "line_range": [ - 353, - 357 + 1451, + 1461 ], "class_name": "LanguageServerBase" }, - "description": "force reanalysis of all workspaces" + "description": "create workspace analysis service" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.restart", - "name": "LanguageServerBase.restart", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.restart", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createBackgroundAnalysis", + "name": "LanguageServerBase.createBackgroundAnalysis", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createBackgroundAnalysis", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "restart", + "func_name": "createBackgroundAnalysis", "line_range": [ - 359, - 363 + 286, + 286 ], "class_name": "LanguageServerBase" }, - "description": "restart workspace services" + "description": "create background analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.updateSettingsForAllWorkspaces", - "name": "LanguageServerBase.updateSettingsForAllWorkspaces", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.updateSettingsForAllWorkspaces", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createBackgroundAnalysisProgram", + "name": "LanguageServerBase.createBackgroundAnalysisProgram", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createBackgroundAnalysisProgram", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "updateSettingsForAllWorkspaces", + "func_name": "createBackgroundAnalysisProgram", "line_range": [ - 365, - 379 + 490, + 507 ], "class_name": "LanguageServerBase" }, - "description": "reset workspace initialization status; update settings for all workspaces; register dynamic features after update" + "description": "create background analysis program" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.updateSettingsForWorkspace", - "name": "LanguageServerBase.updateSettingsForWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.updateSettingsForWorkspace", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createHost", + "name": "LanguageServerBase.createHost", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createHost", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "updateSettingsForWorkspace", + "func_name": "createHost", "line_range": [ - 381, - 414 + 483, + 483 ], "class_name": "LanguageServerBase" }, - "description": "fetch server settings; apply server settings to workspace; configure workspace logging level; update workspace analysis options" + "description": "create analysis host" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.updateOptionsAndRestartService", - "name": "LanguageServerBase.updateOptionsAndRestartService", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.updateOptionsAndRestartService", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createImportResolver", + "name": "LanguageServerBase.createImportResolver", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createImportResolver", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "updateOptionsAndRestartService", + "func_name": "createImportResolver", "line_range": [ - 416, - 423 + 484, + 488 ], "class_name": "LanguageServerBase" }, - "description": "update analyzer options; restart service if necessary" + "description": "create import resolver" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.executeCommand", - "name": "LanguageServerBase.executeCommand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.executeCommand", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createProgressReporter", + "name": "LanguageServerBase.createProgressReporter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createProgressReporter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "executeCommand", + "func_name": "createProgressReporter", "line_range": [ - 428, - 428 + 1481, + 1481 ], "class_name": "LanguageServerBase" }, - "description": "execute server command" + "description": "create progress reporter" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.isLongRunningCommand", - "name": "LanguageServerBase.isLongRunningCommand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.isLongRunningCommand", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createWorkspaceFactory", + "name": "LanguageServerBase.createWorkspaceFactory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createWorkspaceFactory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "isLongRunningCommand", + "func_name": "createWorkspaceFactory", "line_range": [ - 430, - 430 + 509, + 517 ], "class_name": "LanguageServerBase" }, - "description": "determine long running command" + "description": "create workspace factory" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.isRefactoringCommand", - "name": "LanguageServerBase.isRefactoringCommand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.isRefactoringCommand", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.decrementAnalysisProgress", + "name": "LanguageServerBase.decrementAnalysisProgress", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.decrementAnalysisProgress", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "isRefactoringCommand", + "func_name": "decrementAnalysisProgress", "line_range": [ - 431, - 431 + 1385, + 1391 ], "class_name": "LanguageServerBase" }, - "description": "determine refactoring command" + "description": "decrease analysis progress" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.executeCodeAction", - "name": "LanguageServerBase.executeCodeAction", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.executeCodeAction", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.dispose", + "name": "LanguageServerBase.dispose", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.dispose", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "executeCodeAction", + "func_name": "dispose", "line_range": [ - 433, - 436 + 278, + 284 ], "class_name": "LanguageServerBase" }, - "description": "execute code action" + "description": "release server resources; clear workspace state; unregister dynamic features" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getConfiguration", - "name": "LanguageServerBase.getConfiguration", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getConfiguration", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.executeCodeAction", + "name": "LanguageServerBase.executeCodeAction", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.executeCodeAction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getConfiguration", + "func_name": "executeCodeAction", "line_range": [ - 438, - 455 + 434, + 437 ], "class_name": "LanguageServerBase" }, - "description": "retrieve client configuration settings" + "description": "execute code action" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.isOpenFilesOnly", - "name": "LanguageServerBase.isOpenFilesOnly", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.isOpenFilesOnly", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.executeCommand", + "name": "LanguageServerBase.executeCommand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.executeCommand", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "isOpenFilesOnly", + "func_name": "executeCommand", "line_range": [ - 457, - 459 + 429, + 429 ], "class_name": "LanguageServerBase" }, - "description": "check open files only mode" + "description": "execute server command" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getSeverityOverrides", - "name": "LanguageServerBase.getSeverityOverrides", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getSeverityOverrides", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getAnalysisProgressReporter", + "name": "LanguageServerBase.getAnalysisProgressReporter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getAnalysisProgressReporter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getSeverityOverrides", + "func_name": "getAnalysisProgressReporter", "line_range": [ - 461, - 471 + 1393, + 1398 ], "class_name": "LanguageServerBase" }, - "description": "compute diagnostic severity overrides" + "description": "select progress reporter" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDiagnosticRuleName", - "name": "LanguageServerBase.getDiagnosticRuleName", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDiagnosticRuleName", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getConfiguration", + "name": "LanguageServerBase.getConfiguration", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getConfiguration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getDiagnosticRuleName", + "func_name": "getConfiguration", "line_range": [ - 473, - 480 + 439, + 456 ], "class_name": "LanguageServerBase" }, - "description": "derive diagnostic rule name" + "description": "retrieve client configuration" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createHost", - "name": "LanguageServerBase.createHost", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createHost", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getContainingWorkspacesForFile", + "name": "LanguageServerBase.getContainingWorkspacesForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getContainingWorkspacesForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createHost", + "func_name": "getContainingWorkspacesForFile", "line_range": [ - 482, - 482 + 350, + 352 ], "class_name": "LanguageServerBase" }, - "description": "create analyzer host" + "description": "find containing workspaces" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createImportResolver", - "name": "LanguageServerBase.createImportResolver", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createImportResolver", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDefinitions", + "name": "LanguageServerBase.getDefinitions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDefinitions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createImportResolver", + "func_name": "getDefinitions", "line_range": [ - 483, - 487 + 774, + 802 ], "class_name": "LanguageServerBase" }, - "description": "create import resolver" + "description": "find requested definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createBackgroundAnalysisProgram", - "name": "LanguageServerBase.createBackgroundAnalysisProgram", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createBackgroundAnalysisProgram", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDiagCode", + "name": "LanguageServerBase.getDiagCode", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDiagCode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createBackgroundAnalysisProgram", + "func_name": "getDiagCode", "line_range": [ - 489, - 506 + 1352, + 1354 ], "class_name": "LanguageServerBase" }, - "description": "create background analysis program" + "description": "create diagnostic code" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createWorkspaceFactory", - "name": "LanguageServerBase.createWorkspaceFactory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createWorkspaceFactory", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDiagnosticRuleName", + "name": "LanguageServerBase.getDiagnosticRuleName", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDiagnosticRuleName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createWorkspaceFactory", + "func_name": "getDiagnosticRuleName", "line_range": [ - 508, - 516 + 474, + 481 ], "class_name": "LanguageServerBase" }, - "description": "create workspace factory" + "description": "resolve diagnostic rule name" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.setupConnection", - "name": "LanguageServerBase.setupConnection", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.setupConnection", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDocumentationUrlForDiagnostic", + "name": "LanguageServerBase.getDocumentationUrlForDiagnostic", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDocumentationUrlForDiagnostic", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "setupConnection", + "func_name": "getDocumentationUrlForDiagnostic", "line_range": [ - 518, - 572 + 1472, + 1479 ], "class_name": "LanguageServerBase" }, - "description": "register protocol request handlers; initialize client capability detection; register supported commands and actions" + "description": "resolve diagnostic documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.initialize", - "name": "LanguageServerBase.initialize", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.initialize", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getProgressReporter", + "name": "LanguageServerBase.getProgressReporter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getProgressReporter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "initialize", + "func_name": "getProgressReporter", "line_range": [ - 574, - 698 + 1487, + 1508 ], "class_name": "LanguageServerBase" }, - "description": "initialize language server; initialize workspaces and settings; register workspace folder change handler; finalize server initialization" + "description": "create cancellable progress" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onInitialized", - "name": "LanguageServerBase.onInitialized", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onInitialized", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getSettings", + "name": "LanguageServerBase.getSettings", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getSettings", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onInitialized", + "func_name": "getSettings", "line_range": [ - 700, - 705 + 288, + 288 ], "class_name": "LanguageServerBase" }, - "description": "perform post initialization tasks" + "description": "retrieve workspace settings" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.handleInitialized", - "name": "LanguageServerBase.handleInitialized", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.handleInitialized", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getSeverityOverrides", + "name": "LanguageServerBase.getSeverityOverrides", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getSeverityOverrides", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "handleInitialized", + "func_name": "getSeverityOverrides", "line_range": [ - 707, - 719 + 462, + 472 ], "class_name": "LanguageServerBase" }, - "description": "complete initialization workflow" + "description": "retrieve severity overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidChangeConfiguration", - "name": "LanguageServerBase.onDidChangeConfiguration", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidChangeConfiguration", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getWorkspaceForFile", + "name": "LanguageServerBase.getWorkspaceForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getWorkspaceForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDidChangeConfiguration", + "func_name": "getWorkspaceForFile", "line_range": [ - 721, - 727 + 346, + 348 ], "class_name": "LanguageServerBase" }, - "description": "refresh settings on configuration change" + "description": "select workspace for file" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDefinition", - "name": "LanguageServerBase.onDefinition", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDefinition", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getWorkspaces", + "name": "LanguageServerBase.getWorkspaces", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getWorkspaces", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDefinition", + "func_name": "getWorkspaces", "line_range": [ - 729, - 742 + 337, + 344 ], "class_name": "LanguageServerBase" }, - "description": "provide definition locations" + "description": "list initialized workspaces" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDeclaration", - "name": "LanguageServerBase.onDeclaration", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.handleInitialized", + "name": "LanguageServerBase.handleInitialized", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.handleInitialized", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDeclaration", + "func_name": "handleInitialized", "line_range": [ - 744, - 757 + 711, + 723 ], "class_name": "LanguageServerBase" }, - "description": "provide declaration locations" + "description": "refresh initial settings; register workspace change listener" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onTypeDefinition", - "name": "LanguageServerBase.onTypeDefinition", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onTypeDefinition", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.incrementAnalysisProgress", + "name": "LanguageServerBase.incrementAnalysisProgress", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.incrementAnalysisProgress", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onTypeDefinition", + "func_name": "incrementAnalysisProgress", "line_range": [ - 759, - 768 + 1380, + 1383 ], "class_name": "LanguageServerBase" }, - "description": "provide type definition locations" + "description": "increase analysis progress" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDefinitions", - "name": "LanguageServerBase.getDefinitions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDefinitions", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.initialize", + "name": "LanguageServerBase.initialize", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.initialize", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getDefinitions", + "func_name": "initialize", "line_range": [ - 770, - 798 + 575, + 702 ], "class_name": "LanguageServerBase" }, - "description": "compute definitions for position; filter navigable definition files" + "description": "negotiate client capabilities; initialize workspace folders; return server capabilities" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onReferences", - "name": "LanguageServerBase.onReferences", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onReferences", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.isLongRunningCommand", + "name": "LanguageServerBase.isLongRunningCommand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.isLongRunningCommand", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onReferences", + "func_name": "isLongRunningCommand", "line_range": [ - 800, - 845 + 431, + 431 ], "class_name": "LanguageServerBase" }, - "description": "find references for symbol; convert references to locations" + "description": "identify long running command" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDocumentSymbol", - "name": "LanguageServerBase.onDocumentSymbol", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDocumentSymbol", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.isOpenFilesOnly", + "name": "LanguageServerBase.isOpenFilesOnly", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.isOpenFilesOnly", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDocumentSymbol", + "func_name": "isOpenFilesOnly", "line_range": [ - 847, - 868 + 458, + 460 ], "class_name": "LanguageServerBase" }, - "description": "provide document symbols; return hierarchical symbol representation" + "description": "detect open file mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onWorkspaceSymbol", - "name": "LanguageServerBase.onWorkspaceSymbol", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onWorkspaceSymbol", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.isRefactoringCommand", + "name": "LanguageServerBase.isRefactoringCommand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.isRefactoringCommand", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onWorkspaceSymbol", + "func_name": "isRefactoringCommand", "line_range": [ - 870, - 883 + 432, + 432 ], "class_name": "LanguageServerBase" }, - "description": "search workspace symbols; filter symbol search results" + "description": "identify refactoring command" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onHover", - "name": "LanguageServerBase.onHover", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onHover", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onAnalysisCompletedHandler", + "name": "LanguageServerBase.onAnalysisCompletedHandler", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onAnalysisCompletedHandler", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onHover", + "func_name": "onAnalysisCompletedHandler", "line_range": [ - 885, - 895 + 1356, + 1378 ], "class_name": "LanguageServerBase" }, - "description": "provide hover information" + "description": "publish analysis diagnostics; update analysis progress" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDocumentHighlight", - "name": "LanguageServerBase.onDocumentHighlight", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDocumentHighlight", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCallHierarchyIncomingCalls", + "name": "LanguageServerBase.onCallHierarchyIncomingCalls", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onCallHierarchyIncomingCalls", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDocumentHighlight", + "func_name": "onCallHierarchyIncomingCalls", "line_range": [ - 897, - 907 + 1071, + 1082 ], "class_name": "LanguageServerBase" }, - "description": "provide document highlights" + "description": "find incoming calls" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onSignatureHelp", - "name": "LanguageServerBase.onSignatureHelp", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onSignatureHelp", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCallHierarchyOutgoingCalls", + "name": "LanguageServerBase.onCallHierarchyOutgoingCalls", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onCallHierarchyOutgoingCalls", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onSignatureHelp", + "func_name": "onCallHierarchyOutgoingCalls", "line_range": [ - 909, - 933 + 1084, + 1098 ], "class_name": "LanguageServerBase" }, - "description": "provide signature help; include active parameter info" + "description": "find outgoing calls" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.setCompletionIncomplete", - "name": "LanguageServerBase.setCompletionIncomplete", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.setCompletionIncomplete", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCallHierarchyPrepare", + "name": "LanguageServerBase.onCallHierarchyPrepare", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onCallHierarchyPrepare", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "setCompletionIncomplete", + "func_name": "onCallHierarchyPrepare", "line_range": [ - 935, - 953 + 1055, + 1069 ], "class_name": "LanguageServerBase" }, - "description": "mark completion incomplete; update completion trigger kind" + "description": "prepare call hierarchy" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCompletion", @@ -42862,12 +43133,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "onCompletion", "line_range": [ - 955, - 979 + 959, + 984 ], "class_name": "LanguageServerBase" }, - "description": "provide completion items; provide completion items for position" + "description": "provide completion items" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCompletionResolve", @@ -42878,124 +43149,108 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "onCompletionResolve", "line_range": [ - 987, - 1007 - ], - "class_name": "LanguageServerBase" - }, - "description": "resolve completion item details; attach additional text edits" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onPrepareRenameRequest", - "name": "LanguageServerBase.onPrepareRenameRequest", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onPrepareRenameRequest", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onPrepareRenameRequest", - "line_range": [ - 1009, - 1027 + 992, + 1012 ], "class_name": "LanguageServerBase" }, - "description": "validate rename eligibility; determine rename range" + "description": "resolve completion details" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onRenameRequest", - "name": "LanguageServerBase.onRenameRequest", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onRenameRequest", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDeclaration", + "name": "LanguageServerBase.onDeclaration", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onRenameRequest", + "func_name": "onDeclaration", "line_range": [ - 1029, - 1048 + 748, + 761 ], "class_name": "LanguageServerBase" }, - "description": "perform symbol rename; produce workspace edit" + "description": "find symbol declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCallHierarchyPrepare", - "name": "LanguageServerBase.onCallHierarchyPrepare", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onCallHierarchyPrepare", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDefinition", + "name": "LanguageServerBase.onDefinition", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDefinition", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onCallHierarchyPrepare", + "func_name": "onDefinition", "line_range": [ - 1050, - 1064 + 733, + 746 ], "class_name": "LanguageServerBase" }, - "description": "prepare call hierarchy item; identify symbol call targets" + "description": "find symbol definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCallHierarchyIncomingCalls", - "name": "LanguageServerBase.onCallHierarchyIncomingCalls", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onCallHierarchyIncomingCalls", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDiagnostics", + "name": "LanguageServerBase.onDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onCallHierarchyIncomingCalls", + "func_name": "onDiagnostics", "line_range": [ - 1066, - 1077 + 1160, + 1235 ], "class_name": "LanguageServerBase" }, - "description": "list incoming call hierarchy" + "description": "provide document diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onCallHierarchyOutgoingCalls", - "name": "LanguageServerBase.onCallHierarchyOutgoingCalls", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onCallHierarchyOutgoingCalls", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidChangeConfiguration", + "name": "LanguageServerBase.onDidChangeConfiguration", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidChangeConfiguration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onCallHierarchyOutgoingCalls", + "func_name": "onDidChangeConfiguration", "line_range": [ - 1079, - 1093 + 725, + 731 ], "class_name": "LanguageServerBase" }, - "description": "list outgoing call hierarchy" + "description": "refresh configuration settings" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidOpenTextDocument", - "name": "LanguageServerBase.onDidOpenTextDocument", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidOpenTextDocument", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidChangeTextDocument", + "name": "LanguageServerBase.onDidChangeTextDocument", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidChangeTextDocument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDidOpenTextDocument", + "func_name": "onDidChangeTextDocument", "line_range": [ - 1095, - 1118 + 1125, + 1144 ], "class_name": "LanguageServerBase" }, - "description": "open text document in workspace; track open document content; register document for analysis" + "description": "update open document" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidChangeTextDocument", - "name": "LanguageServerBase.onDidChangeTextDocument", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidChangeTextDocument", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidChangeWatchedFiles", + "name": "LanguageServerBase.onDidChangeWatchedFiles", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidChangeWatchedFiles", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDidChangeTextDocument", + "func_name": "onDidChangeWatchedFiles", "line_range": [ - 1120, - 1139 + 1266, + 1272 ], "class_name": "LanguageServerBase" }, - "description": "apply text document changes; record user interaction time; update workspace file snapshot" + "description": "react to file changes" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidCloseTextDocument", @@ -43006,60 +43261,60 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "onDidCloseTextDocument", "line_range": [ - 1141, - 1151 + 1146, + 1158 ], "class_name": "LanguageServerBase" }, - "description": "close tracked text document; remove open file tracking" + "description": "untrack closed document" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDiagnostics", - "name": "LanguageServerBase.onDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidOpenTextDocument", + "name": "LanguageServerBase.onDidOpenTextDocument", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidOpenTextDocument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDiagnostics", + "func_name": "onDidOpenTextDocument", "line_range": [ - 1153, - 1220 + 1100, + 1123 ], "class_name": "LanguageServerBase" }, - "description": "receive analyzer diagnostics; publish diagnostics to client" + "description": "track open document; update workspace ownership" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onWorkspaceDiagnostics", - "name": "LanguageServerBase.onWorkspaceDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onWorkspaceDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDocumentHighlight", + "name": "LanguageServerBase.onDocumentHighlight", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDocumentHighlight", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onWorkspaceDiagnostics", + "func_name": "onDocumentHighlight", "line_range": [ - 1222, - 1249 + 901, + 911 ], "class_name": "LanguageServerBase" }, - "description": "publish workspace diagnostic results" + "description": "find document highlights" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDidChangeWatchedFiles", - "name": "LanguageServerBase.onDidChangeWatchedFiles", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDidChangeWatchedFiles", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onDocumentSymbol", + "name": "LanguageServerBase.onDocumentSymbol", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onDocumentSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onDidChangeWatchedFiles", + "func_name": "onDocumentSymbol", "line_range": [ - 1251, - 1257 + 851, + 872 ], "class_name": "LanguageServerBase" }, - "description": "refresh analysis for watched files" + "description": "list document symbols" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onExecuteCommand", @@ -43070,140 +43325,140 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "onExecuteCommand", "line_range": [ - 1259, - 1313 + 1274, + 1328 ], "class_name": "LanguageServerBase" }, - "description": "execute named server command; report command progress and cancellation" + "description": "run workspace command; cancel previous command" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onShutdown", - "name": "LanguageServerBase.onShutdown", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onShutdown", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onHover", + "name": "LanguageServerBase.onHover", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onHover", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onShutdown", + "func_name": "onHover", "line_range": [ - 1315, - 1325 + 889, + 899 ], "class_name": "LanguageServerBase" }, - "description": "shutdown language server gracefully" + "description": "provide hover information" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.convertDiagnostics", - "name": "LanguageServerBase.convertDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.convertDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onInitialized", + "name": "LanguageServerBase.onInitialized", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onInitialized", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "convertDiagnostics", + "func_name": "onInitialized", "line_range": [ - 1327, - 1335 + 704, + 709 ], "class_name": "LanguageServerBase" }, - "description": "convert diagnostics to client protocol format" + "description": "complete server initialization" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDiagCode", - "name": "LanguageServerBase.getDiagCode", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDiagCode", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onPrepareRenameRequest", + "name": "LanguageServerBase.onPrepareRenameRequest", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onPrepareRenameRequest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getDiagCode", + "func_name": "onPrepareRenameRequest", "line_range": [ - 1337, - 1339 + 1014, + 1032 ], "class_name": "LanguageServerBase" }, - "description": "compute diagnostic code" + "description": "validate rename target" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onAnalysisCompletedHandler", - "name": "LanguageServerBase.onAnalysisCompletedHandler", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onAnalysisCompletedHandler", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onReferences", + "name": "LanguageServerBase.onReferences", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onReferences", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "onAnalysisCompletedHandler", + "func_name": "onReferences", "line_range": [ - 1341, - 1363 + 804, + 849 ], "class_name": "LanguageServerBase" }, - "description": "publish analysis completion events; publish analysis completion diagnostics" + "description": "find symbol references; cancel previous reference search" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.incrementAnalysisProgress", - "name": "LanguageServerBase.incrementAnalysisProgress", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.incrementAnalysisProgress", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onRenameRequest", + "name": "LanguageServerBase.onRenameRequest", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onRenameRequest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "incrementAnalysisProgress", + "func_name": "onRenameRequest", "line_range": [ - 1365, - 1368 + 1034, + 1053 ], "class_name": "LanguageServerBase" }, - "description": "increment analysis progress counter" + "description": "rename symbol references" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.decrementAnalysisProgress", - "name": "LanguageServerBase.decrementAnalysisProgress", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.decrementAnalysisProgress", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onShutdown", + "name": "LanguageServerBase.onShutdown", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onShutdown", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "decrementAnalysisProgress", + "func_name": "onShutdown", "line_range": [ - 1370, - 1376 + 1330, + 1340 ], "class_name": "LanguageServerBase" }, - "description": "decrement analysis progress counter" + "description": "shutdown language server" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getAnalysisProgressReporter", - "name": "LanguageServerBase.getAnalysisProgressReporter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getAnalysisProgressReporter", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onSignatureHelp", + "name": "LanguageServerBase.onSignatureHelp", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onSignatureHelp", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getAnalysisProgressReporter", + "func_name": "onSignatureHelp", "line_range": [ - 1378, - 1383 + 913, + 937 ], "class_name": "LanguageServerBase" }, - "description": "select appropriate progress reporter" + "description": "provide signature help" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.sendProgressMessage", - "name": "LanguageServerBase.sendProgressMessage", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.sendProgressMessage", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onTypeDefinition", + "name": "LanguageServerBase.onTypeDefinition", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onTypeDefinition", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "sendProgressMessage", + "func_name": "onTypeDefinition", "line_range": [ - 1385, - 1403 + 763, + 772 ], "class_name": "LanguageServerBase" }, - "description": "send analysis progress message" + "description": "find type definitions" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onWorkspaceCreated", @@ -43214,12 +43469,28 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "onWorkspaceCreated", "line_range": [ - 1405, - 1412 + 1420, + 1427 + ], + "class_name": "LanguageServerBase" + }, + "description": "initialize new workspace" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onWorkspaceDiagnostics", + "name": "LanguageServerBase.onWorkspaceDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onWorkspaceDiagnostics", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", + "func_name": "onWorkspaceDiagnostics", + "line_range": [ + 1237, + 1264 ], "class_name": "LanguageServerBase" }, - "description": "initialize settings for new workspace" + "description": "provide workspace diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onWorkspaceRemoved", @@ -43230,28 +43501,44 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "onWorkspaceRemoved", "line_range": [ - 1414, - 1434 + 1429, + 1449 ], "class_name": "LanguageServerBase" }, - "description": "cleanup diagnostics for removed workspace; maintain diagnostics across workspaces" + "description": "clear removed workspace diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createAnalyzerServiceForWorkspace", - "name": "LanguageServerBase.createAnalyzerServiceForWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createAnalyzerServiceForWorkspace", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.onWorkspaceSymbol", + "name": "LanguageServerBase.onWorkspaceSymbol", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.onWorkspaceSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createAnalyzerServiceForWorkspace", + "func_name": "onWorkspaceSymbol", "line_range": [ - 1436, - 1446 + 874, + 887 + ], + "class_name": "LanguageServerBase" + }, + "description": "search workspace symbols" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.reanalyze", + "name": "LanguageServerBase.reanalyze", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.reanalyze", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", + "func_name": "reanalyze", + "line_range": [ + 354, + 358 ], "class_name": "LanguageServerBase" }, - "description": "create analyzer service for workspace; provide default backoff time" + "description": "request workspace reanalysis" }, { "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.recordUserInteractionTime", @@ -43262,156 +43549,155 @@ "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", "func_name": "recordUserInteractionTime", "line_range": [ - 1448, - 1455 + 1463, + 1470 ], "class_name": "LanguageServerBase" }, - "description": "signal user interaction to services" + "description": "record editor activity" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getDocumentationUrlForDiagnostic", - "name": "LanguageServerBase.getDocumentationUrlForDiagnostic", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getDocumentationUrlForDiagnostic", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.restart", + "name": "LanguageServerBase.restart", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.restart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getDocumentationUrlForDiagnostic", + "func_name": "restart", "line_range": [ - 1457, - 1464 + 360, + 364 ], "class_name": "LanguageServerBase" }, - "description": "generate documentation url for diagnostic" + "description": "restart analysis services" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.createProgressReporter", - "name": "LanguageServerBase.createProgressReporter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.createProgressReporter", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.sendDiagnostics", + "name": "LanguageServerBase.sendDiagnostics", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.sendDiagnostics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "createProgressReporter", + "func_name": "sendDiagnostics", "line_range": [ - 1466, - 1466 + 1510, + 1528 ], "class_name": "LanguageServerBase" }, - "description": "create progress reporter instance" + "description": "publish diagnostics; track diagnostic documents" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.canNavigateToFile", - "name": "LanguageServerBase.canNavigateToFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.canNavigateToFile", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.sendProgressMessage", + "name": "LanguageServerBase.sendProgressMessage", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.sendProgressMessage", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "canNavigateToFile", + "func_name": "sendProgressMessage", "line_range": [ - 1468, - 1470 + 1400, + 1418 ], "class_name": "LanguageServerBase" }, - "description": "check file navigability" + "description": "report analysis progress" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.getProgressReporter", - "name": "LanguageServerBase.getProgressReporter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.getProgressReporter", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.setCompletionIncomplete", + "name": "LanguageServerBase.setCompletionIncomplete", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.setCompletionIncomplete", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "getProgressReporter", + "func_name": "setCompletionIncomplete", "line_range": [ - 1472, - 1493 + 939, + 957 ], "class_name": "LanguageServerBase" }, - "description": "create or reuse progress reporter; fallback to server initiated reporter" + "description": "mark completion completeness" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.sendDiagnostics", - "name": "LanguageServerBase.sendDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.sendDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.setupConnection", + "name": "LanguageServerBase.setupConnection", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.setupConnection", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "sendDiagnostics", + "func_name": "setupConnection", "line_range": [ - 1495, - 1513 + 519, + 573 ], "class_name": "LanguageServerBase" }, - "description": "publish diagnostics to client; stream workspace diagnostics partial results" + "description": "register language requests; register document notifications; register workspace commands" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.convertLspUriStringToUri", - "name": "LanguageServerBase.convertLspUriStringToUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.convertLspUriStringToUri", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.updateOptionsAndRestartService", + "name": "LanguageServerBase.updateOptionsAndRestartService", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.updateOptionsAndRestartService", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "convertLspUriStringToUri", + "func_name": "updateOptionsAndRestartService", "line_range": [ - 1515, - 1517 + 417, + 424 ], "class_name": "LanguageServerBase" }, - "description": "convert client uri string to uri" + "description": "apply service options; restart analysis service" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.addDynamicFeature", - "name": "LanguageServerBase.addDynamicFeature", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.addDynamicFeature", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.updateSettingsForAllWorkspaces", + "name": "LanguageServerBase.updateSettingsForAllWorkspaces", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.updateSettingsForAllWorkspaces", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "addDynamicFeature", + "func_name": "updateSettingsForAllWorkspaces", "line_range": [ - 1519, - 1521 + 366, + 380 ], "class_name": "LanguageServerBase" }, - "description": "register dynamic feature" + "description": "refresh all workspace settings; register dynamic features" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase._getCompatibleMarkupKind", - "name": "LanguageServerBase._getCompatibleMarkupKind", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase._getCompatibleMarkupKind", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase.updateSettingsForWorkspace", + "name": "LanguageServerBase.updateSettingsForWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase.updateSettingsForWorkspace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "_getCompatibleMarkupKind", + "func_name": "updateSettingsForWorkspace", "line_range": [ - 1523, - 1533 + 382, + 415 ], "class_name": "LanguageServerBase" }, - "description": "determine compatible markup kind" + "description": "refresh workspace settings; apply analysis configuration; restart workspace analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::LanguageServerBase._convertDiagnostics", - "name": "LanguageServerBase._convertDiagnostics", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/LanguageServerBase._convertDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts::wrapProgressReporter", + "name": "wrapProgressReporter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/languageServerBase.ts/wrapProgressReporter", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageServerBase.ts", - "func_name": "_convertDiagnostics", + "func_name": "wrapProgressReporter", "line_range": [ - 1534, - 1618 - ], - "class_name": "LanguageServerBase" + 145, + 166 + ] }, - "description": "convert analyzer diagnostics to client protocol format" + "description": "adapt progress reporter; track progress display; forward progress updates" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts::__file__", @@ -43443,36 +43729,36 @@ } }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts::AnalyzerServiceExecutor.runWithOptions", - "name": "AnalyzerServiceExecutor.runWithOptions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/analyzerServiceExecutor.ts/AnalyzerServiceExecutor.runWithOptions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts::AnalyzerServiceExecutor.cloneService", + "name": "AnalyzerServiceExecutor.cloneService", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/analyzerServiceExecutor.ts/AnalyzerServiceExecutor.cloneService", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts", - "func_name": "runWithOptions", + "func_name": "cloneService", "line_range": [ - 35, - 46 + 48, + 87 ], "class_name": "AnalyzerServiceExecutor" }, - "description": "compute effective command line options; apply analyzer service options" + "description": "generate unique service id; allocate temporary workspace for cloning; clone analyzer service instance; configure cloned workspace settings; disable interactive language features; initialize cloned service state; apply server settings to clone; return cloned analyzer service" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts::AnalyzerServiceExecutor.cloneService", - "name": "AnalyzerServiceExecutor.cloneService", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/analyzerServiceExecutor.ts/AnalyzerServiceExecutor.cloneService", + "id": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts::AnalyzerServiceExecutor.runWithOptions", + "name": "AnalyzerServiceExecutor.runWithOptions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/analyzerServiceExecutor.ts/AnalyzerServiceExecutor.runWithOptions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts", - "func_name": "cloneService", + "func_name": "runWithOptions", "line_range": [ - 48, - 87 + 35, + 46 ], "class_name": "AnalyzerServiceExecutor" }, - "description": "generate unique service id; allocate temporary workspace for cloning; clone analyzer service instance; configure cloned workspace settings; disable interactive language features; initialize cloned service state; apply server settings to clone; return cloned analyzer service" + "description": "compute effective command line options; apply analyzer service options" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts::getEffectiveCommandLineOptions", @@ -43504,21 +43790,6 @@ }, "description": "Provides auto-import completion logic and utilities for finding module symbols and generating import edits" }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::buildModuleSymbolsMap", - "name": "buildModuleSymbolsMap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/buildModuleSymbolsMap", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "buildModuleSymbolsMap", - "line_range": [ - 119, - 186 - ] - }, - "description": "build module symbols map; collect visible module symbols; exclude stub files from map; exclude private or protected modules; omit workspace import aliases; classify variable symbols; mark symbols as library or user; yield symbol entries with metadata; include export membership information" - }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter", "name": "AutoImporter", @@ -43535,308 +43806,323 @@ "description": "initialize import statement map; store program and options; capture invocation position and environment" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getAutoImportCandidates", - "name": "AutoImporter.getAutoImportCandidates", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getAutoImportCandidates", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._addResult", + "name": "AutoImporter._addResult", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._addResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "getAutoImportCandidates", + "func_name": "_addResult", "line_range": [ - 206, - 217 + 774, + 782 ], "class_name": "AutoImporter" }, - "description": "collect auto import candidates; flatten candidate map into list" + "description": "insert auto import result into map; initialize result list if missing" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getCompletionItemData", - "name": "AutoImporter.getCompletionItemData", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getCompletionItemData", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._addToImportAliasMap", + "name": "AutoImporter._addToImportAliasMap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._addToImportAliasMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "getCompletionItemData", + "func_name": "_addToImportAliasMap", "line_range": [ - 223, - 225 + 522, + 552 ], "class_name": "AutoImporter" }, - "description": "extract completion item metadata" + "description": "add alias candidate to map; merge competing alias candidates" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._containsName", + "name": "AutoImporter._containsName", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._containsName", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", + "func_name": "_containsName", + "line_range": [ + 633, + 644 + ], + "class_name": "AutoImporter" + }, + "description": "check if name already included; prevent duplicate import suggestions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getCandidates", - "name": "AutoImporter.getCandidates", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getCandidates", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getImportParts", + "name": "AutoImporter._getImportParts", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getImportParts", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "getCandidates", + "func_name": "_getImportParts", "line_range": [ - 227, - 240 + 576, + 604 ], "class_name": "AutoImporter" }, - "description": "gather candidate import mappings; compose alias and module candidates" + "description": "compute import parts from uri; extract candidate import name segments" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.addImportsFromModuleMap", - "name": "AutoImporter.addImportsFromModuleMap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.addImportsFromModuleMap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getImportPartsForSymbols", + "name": "AutoImporter._getImportPartsForSymbols", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getImportPartsForSymbols", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "addImportsFromModuleMap", + "func_name": "_getImportPartsForSymbols", "line_range": [ - 242, - 265 + 554, + 574 ], "class_name": "AutoImporter" }, - "description": "enumerate modules for candidate imports; evaluate module symbols for candidacy" + "description": "derive import parts for module symbols; determine import group and naming" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.addImportsFromImportAliasMap", - "name": "AutoImporter.addImportsFromImportAliasMap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.addImportsFromImportAliasMap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getModuleNameAndTypeFromFilePath", + "name": "AutoImporter._getModuleNameAndTypeFromFilePath", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getModuleNameAndTypeFromFilePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "addImportsFromImportAliasMap", + "func_name": "_getModuleNameAndTypeFromFilePath", "line_range": [ - 267, - 344 + 649, + 651 ], "class_name": "AutoImporter" }, - "description": "resolve alias based import opportunities; exclude imports already present in file; generate insertion edits for alias imports" + "description": "resolve module name and type from path" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.processModuleSymbolTable", - "name": "AutoImporter.processModuleSymbolTable", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.processModuleSymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getTextEditsForAutoImportByFilePath", + "name": "AutoImporter._getTextEditsForAutoImportByFilePath", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getTextEditsForAutoImportByFilePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "processModuleSymbolTable", + "func_name": "_getTextEditsForAutoImportByFilePath", "line_range": [ - 346, - 472 + 653, + 772 ], "class_name": "AutoImporter" }, - "description": "scan module symbol table for matches; filter symbols by inclusion rules; collect alias candidates for later resolution; build import edit proposals for symbols" + "description": "compute text edits for auto import; determine insertion text for proposed import; reuse existing imports when possible" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getNameForImportFrom", - "name": "AutoImporter.getNameForImportFrom", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getNameForImportFrom", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._isSimilar", + "name": "AutoImporter._isSimilar", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._isSimilar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "getNameForImportFrom", + "func_name": "_isSimilar", "line_range": [ - 474, - 476 + 606, + 625 ], "class_name": "AutoImporter" }, - "description": "determine name for import from" + "description": "match candidate name to query; apply pattern based similarity checks" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getUriProperties", - "name": "AutoImporter.getUriProperties", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getUriProperties", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._shouldExclude", + "name": "AutoImporter._shouldExclude", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._shouldExclude", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "getUriProperties", + "func_name": "_shouldExclude", "line_range": [ - 478, - 486 + 627, + 631 ], "class_name": "AutoImporter" }, - "description": "evaluate uri properties for import suitability" + "description": "evaluate exclusion list for name" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.compareImportAliasData", - "name": "AutoImporter.compareImportAliasData", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.compareImportAliasData", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.addImportsFromImportAliasMap", + "name": "AutoImporter.addImportsFromImportAliasMap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.addImportsFromImportAliasMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "compareImportAliasData", + "func_name": "addImportsFromImportAliasMap", "line_range": [ - 488, - 510 + 267, + 344 ], "class_name": "AutoImporter" }, - "description": "rank import alias candidates; select superior alias candidate" + "description": "resolve alias based import opportunities; exclude imports already present in file; generate insertion edits for alias imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.shouldIncludeVariable", - "name": "AutoImporter.shouldIncludeVariable", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.shouldIncludeVariable", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.addImportsFromModuleMap", + "name": "AutoImporter.addImportsFromModuleMap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.addImportsFromModuleMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "shouldIncludeVariable", + "func_name": "addImportsFromModuleMap", "line_range": [ - 512, - 520 + 242, + 265 ], "class_name": "AutoImporter" }, - "description": "filter variables for auto import; exclude private or ambiguous names" + "description": "enumerate modules for candidate imports; evaluate module symbols for candidacy" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._addToImportAliasMap", - "name": "AutoImporter._addToImportAliasMap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._addToImportAliasMap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.compareImportAliasData", + "name": "AutoImporter.compareImportAliasData", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.compareImportAliasData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_addToImportAliasMap", + "func_name": "compareImportAliasData", "line_range": [ - 522, - 552 + 488, + 510 ], "class_name": "AutoImporter" }, - "description": "add alias candidate to map; merge competing alias candidates" + "description": "rank import alias candidates; select superior alias candidate" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getImportPartsForSymbols", - "name": "AutoImporter._getImportPartsForSymbols", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getImportPartsForSymbols", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getAutoImportCandidates", + "name": "AutoImporter.getAutoImportCandidates", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getAutoImportCandidates", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_getImportPartsForSymbols", + "func_name": "getAutoImportCandidates", "line_range": [ - 554, - 574 + 206, + 217 ], "class_name": "AutoImporter" }, - "description": "derive import parts for module symbols; determine import group and naming" + "description": "collect auto import candidates; flatten candidate map into list" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getImportParts", - "name": "AutoImporter._getImportParts", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getImportParts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getCandidates", + "name": "AutoImporter.getCandidates", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getCandidates", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_getImportParts", + "func_name": "getCandidates", "line_range": [ - 576, - 604 + 227, + 240 ], "class_name": "AutoImporter" }, - "description": "compute import parts from uri; extract candidate import name segments" + "description": "gather candidate import mappings; compose alias and module candidates" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._isSimilar", - "name": "AutoImporter._isSimilar", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._isSimilar", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getCompletionItemData", + "name": "AutoImporter.getCompletionItemData", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getCompletionItemData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_isSimilar", + "func_name": "getCompletionItemData", "line_range": [ - 606, - 625 + 223, + 225 ], "class_name": "AutoImporter" }, - "description": "match candidate name to query; apply pattern based similarity checks" + "description": "extract completion item metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._shouldExclude", - "name": "AutoImporter._shouldExclude", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._shouldExclude", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getNameForImportFrom", + "name": "AutoImporter.getNameForImportFrom", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getNameForImportFrom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_shouldExclude", + "func_name": "getNameForImportFrom", "line_range": [ - 627, - 631 + 474, + 476 ], "class_name": "AutoImporter" }, - "description": "evaluate exclusion list for name" + "description": "determine name for import from" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._containsName", - "name": "AutoImporter._containsName", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._containsName", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.getUriProperties", + "name": "AutoImporter.getUriProperties", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.getUriProperties", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_containsName", + "func_name": "getUriProperties", "line_range": [ - 633, - 644 + 478, + 486 ], "class_name": "AutoImporter" }, - "description": "check if name already included; prevent duplicate import suggestions" + "description": "evaluate uri properties for import suitability" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getModuleNameAndTypeFromFilePath", - "name": "AutoImporter._getModuleNameAndTypeFromFilePath", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getModuleNameAndTypeFromFilePath", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.processModuleSymbolTable", + "name": "AutoImporter.processModuleSymbolTable", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.processModuleSymbolTable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_getModuleNameAndTypeFromFilePath", + "func_name": "processModuleSymbolTable", "line_range": [ - 649, - 651 + 346, + 472 ], "class_name": "AutoImporter" }, - "description": "resolve module name and type from path" + "description": "scan module symbol table for matches; filter symbols by inclusion rules; collect alias candidates for later resolution; build import edit proposals for symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._getTextEditsForAutoImportByFilePath", - "name": "AutoImporter._getTextEditsForAutoImportByFilePath", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._getTextEditsForAutoImportByFilePath", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter.shouldIncludeVariable", + "name": "AutoImporter.shouldIncludeVariable", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter.shouldIncludeVariable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_getTextEditsForAutoImportByFilePath", + "func_name": "shouldIncludeVariable", "line_range": [ - 653, - 772 + 512, + 520 ], "class_name": "AutoImporter" }, - "description": "compute text edits for auto import; determine insertion text for proposed import; reuse existing imports when possible" + "description": "filter variables for auto import; exclude private or ambiguous names" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::AutoImporter._addResult", - "name": "AutoImporter._addResult", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/AutoImporter._addResult", + "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::buildModuleSymbolsMap", + "name": "buildModuleSymbolsMap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/autoImporter.ts/buildModuleSymbolsMap", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts", - "func_name": "_addResult", + "func_name": "buildModuleSymbolsMap", "line_range": [ - 774, - 782 - ], - "class_name": "AutoImporter" + 119, + 186 + ] }, - "description": "insert auto import result into map; initialize result list if missing" + "description": "build module symbols map; collect visible module symbols; exclude stub files from map; exclude private or protected modules; omit workspace import aliases; classify variable symbols; mark symbols as library or user; yield symbol entries with metadata; include export membership information" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts::convertSymbolKindToCompletionItemKind", @@ -43884,20 +44170,52 @@ "description": "store program view; store file uri; store cursor position; capture cancellation token; record parse results" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider.onPrepare", - "name": "CallHierarchyProvider.onPrepare", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider.onPrepare", + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider._getDeclaration", + "name": "CallHierarchyProvider._getDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider._getDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "onPrepare", + "func_name": "_getDeclaration", "line_range": [ - 56, - 101 + 276, + 285 ], "class_name": "CallHierarchyProvider" }, - "description": "locate declaration at position; select primary target declaration; resolve alias to declaration; build call hierarchy item; verify file navigation permission" + "description": "retrieve declaration and references" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider._getIncomingCallsForDeclaration", + "name": "CallHierarchyProvider._getIncomingCallsForDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider._getIncomingCallsForDeclaration", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "_getIncomingCallsForDeclaration", + "line_range": [ + 263, + 274 + ], + "class_name": "CallHierarchyProvider" + }, + "description": "find incoming calls in file" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider._getTargetDeclaration", + "name": "CallHierarchyProvider._getTargetDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider._getTargetDeclaration", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "_getTargetDeclaration", + "line_range": [ + 221, + 261 + ], + "class_name": "CallHierarchyProvider" + }, + "description": "choose target declaration among candidates; prefer declarations with declared type; derive symbol name and uri" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider.getIncomingCalls", @@ -43932,52 +44250,115 @@ "description": "locate target declaration for symbol; resolve alias declarations to primary; find implementation parse root; discover outgoing calls from implementation; filter outgoing calls by navigation permission" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider._getTargetDeclaration", - "name": "CallHierarchyProvider._getTargetDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider._getTargetDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider.onPrepare", + "name": "CallHierarchyProvider.onPrepare", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider.onPrepare", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "_getTargetDeclaration", + "func_name": "onPrepare", "line_range": [ - 221, - 261 + 56, + 101 ], "class_name": "CallHierarchyProvider" }, - "description": "choose target declaration among candidates; prefer declarations with declared type; derive symbol name and uri" + "description": "locate declaration at position; select primary target declaration; resolve alias to declaration; build call hierarchy item; verify file navigation permission" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider._getIncomingCallsForDeclaration", - "name": "CallHierarchyProvider._getIncomingCallsForDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider._getIncomingCallsForDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker", + "name": "FindIncomingCallTreeWalker", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "FindIncomingCallTreeWalker", + "line_range": [ + 421, + 627 + ] + }, + "description": "initialize walker state; create symbol usage providers; collect target declarations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker._addIncomingCallForDeclaration", + "name": "FindIncomingCallTreeWalker._addIncomingCallForDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker._addIncomingCallForDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "_getIncomingCallsForDeclaration", + "func_name": "_addIncomingCallForDeclaration", "line_range": [ - 263, - 274 + 554, + 626 ], - "class_name": "CallHierarchyProvider" + "class_name": "FindIncomingCallTreeWalker" }, - "description": "find incoming calls in file" + "description": "determine execution scope of call; construct call source hierarchy item; aggregate caller ranges for source; record incoming call entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::CallHierarchyProvider._getDeclaration", - "name": "CallHierarchyProvider._getDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/CallHierarchyProvider._getDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker._getDeclarations", + "name": "FindIncomingCallTreeWalker._getDeclarations", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker._getDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "_getDeclaration", + "func_name": "_getDeclarations", "line_range": [ - 276, - 285 + 540, + 552 ], - "class_name": "CallHierarchyProvider" + "class_name": "FindIncomingCallTreeWalker" }, - "description": "retrieve declaration and references" + "description": "collect declarations for node; augment declarations from usage providers" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker.findCalls", + "name": "FindIncomingCallTreeWalker.findCalls", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker.findCalls", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "findCalls", + "line_range": [ + 448, + 451 + ], + "class_name": "FindIncomingCallTreeWalker" + }, + "description": "traverse parse tree; return collected incoming calls" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker.visitCall", + "name": "FindIncomingCallTreeWalker.visitCall", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker.visitCall", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "visitCall", + "line_range": [ + 453, + 489 + ], + "class_name": "FindIncomingCallTreeWalker" + }, + "description": "detect calls to target symbol; resolve alias declarations when present; compare call declarations to target; record incoming call occurrence" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker.visitMemberAccess", + "name": "FindIncomingCallTreeWalker.visitMemberAccess", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker.visitMemberAccess", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "visitMemberAccess", + "line_range": [ + 491, + 534 + ], + "class_name": "FindIncomingCallTreeWalker" + }, + "description": "identify member access to symbol; resolve member types and subtypes; match member declarations to target; treat property access as call" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindOutgoingCallTreeWalker", @@ -43994,6 +44375,22 @@ }, "description": "initialize outgoing call walker" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindOutgoingCallTreeWalker._addOutgoingCallForDeclaration", + "name": "FindOutgoingCallTreeWalker._addOutgoingCallForDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindOutgoingCallTreeWalker._addOutgoingCallForDeclaration", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", + "func_name": "_addOutgoingCallForDeclaration", + "line_range": [ + 374, + 418 + ], + "class_name": "FindOutgoingCallTreeWalker" + }, + "description": "resolve declaration aliases; ignore non function or class declarations; create call item for declaration; merge duplicate call destinations; record call source range" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindOutgoingCallTreeWalker.findCalls", "name": "FindOutgoingCallTreeWalker.findCalls", @@ -44043,191 +44440,222 @@ "description": "identify property accessors as callees; record calls for property declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindOutgoingCallTreeWalker._addOutgoingCallForDeclaration", - "name": "FindOutgoingCallTreeWalker._addOutgoingCallForDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindOutgoingCallTreeWalker._addOutgoingCallForDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::__file__", + "name": "codeActionProvider", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "_addOutgoingCallForDeclaration", + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", + "func_name": "codeActionProvider", "line_range": [ - 374, - 418 - ], - "class_name": "FindOutgoingCallTreeWalker" + 1, + 78 + ] }, - "description": "resolve declaration aliases; ignore non function or class declarations; create call item for declaration; merge duplicate call destinations; record call source range" + "description": "Provides quick-fix code actions for diagnostics, including a create-type-stub action" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker", - "name": "FindIncomingCallTreeWalker", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker", + "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::CodeActionProvider", + "name": "CodeActionProvider", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts/CodeActionProvider", "meta": { "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "FindIncomingCallTreeWalker", + "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", + "func_name": "CodeActionProvider", "line_range": [ - 421, - 627 + 20, + 77 ] + } + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::CodeActionProvider.getCodeActionsForPosition", + "name": "CodeActionProvider.getCodeActionsForPosition", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts/CodeActionProvider.getCodeActionsForPosition", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", + "func_name": "getCodeActionsForPosition", + "line_range": [ + 30, + 76 + ], + "class_name": "CodeActionProvider" }, - "description": "initialize walker state; create symbol usage providers; collect target declarations" + "description": "gather code actions for position; filter actions by requested kinds; verify workspace availability and services; retrieve diagnostics for range; identify diagnostics suggesting type stub; create type stub quick fix; respect cancellation requests" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker.findCalls", - "name": "FindIncomingCallTreeWalker.findCalls", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker.findCalls", + "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::CodeActionProvider.mightSupport", + "name": "CodeActionProvider.mightSupport", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts/CodeActionProvider.mightSupport", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "findCalls", + "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", + "func_name": "mightSupport", "line_range": [ - 448, - 451 + 21, + 28 ], - "class_name": "FindIncomingCallTreeWalker" + "class_name": "CodeActionProvider" }, - "description": "traverse parse tree; return collected incoming calls" + "description": "determine quick fix support" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker.visitCall", - "name": "FindIncomingCallTreeWalker.visitCall", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker.visitCall", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "name": "completionProvider", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts", + "meta": { + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "completionProvider", + "line_range": [ + 1, + 3867 + ] + }, + "description": "Provides Python language-service completions for symbols, imports, members, calls, literals, and snippets" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap", + "name": "CompletionMap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "CompletionMap", + "line_range": [ + 3767, + 3866 + ] + } + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.clear", + "name": "CompletionMap.clear", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.clear", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "visitCall", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "clear", "line_range": [ - 453, - 489 + 3810, + 3812 ], - "class_name": "FindIncomingCallTreeWalker" + "class_name": "CompletionMap" }, - "description": "detect calls to target symbol; resolve alias declarations when present; compare call declarations to target; record incoming call occurrence" + "description": "remove all completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker.visitMemberAccess", - "name": "FindIncomingCallTreeWalker.visitMemberAccess", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker.visitMemberAccess", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.delete", + "name": "CompletionMap.delete", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.delete", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "visitMemberAccess", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "delete", "line_range": [ - 491, - 534 + 3814, + 3816 ], - "class_name": "FindIncomingCallTreeWalker" + "class_name": "CompletionMap" }, - "description": "identify member access to symbol; resolve member types and subtypes; match member declarations to target; treat property access as call" + "description": "remove completion label" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker._getDeclarations", - "name": "FindIncomingCallTreeWalker._getDeclarations", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker._getDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.get", + "name": "CompletionMap.get", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.get", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "_getDeclarations", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "get", "line_range": [ - 540, - 552 + 3785, + 3787 ], - "class_name": "FindIncomingCallTreeWalker" + "class_name": "CompletionMap" }, - "description": "collect declarations for node; augment declarations from usage providers" + "description": "retrieve completion entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts::FindIncomingCallTreeWalker._addIncomingCallForDeclaration", - "name": "FindIncomingCallTreeWalker._addIncomingCallForDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/callHierarchyProvider.ts/FindIncomingCallTreeWalker._addIncomingCallForDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.has", + "name": "CompletionMap.has", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.has", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts", - "func_name": "_addIncomingCallForDeclaration", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "has", "line_range": [ - 554, - 626 + 3789, + 3808 ], - "class_name": "FindIncomingCallTreeWalker" + "class_name": "CompletionMap" }, - "description": "determine execution scope of call; construct call source hierarchy item; aggregate caller ranges for source; record incoming call entry" + "description": "check completion label; evaluate completion predicate" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::__file__", - "name": "codeActionProvider", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.labelOnlyIgnoringAutoImports", + "name": "CompletionMap.labelOnlyIgnoringAutoImports", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.labelOnlyIgnoringAutoImports", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", - "func_name": "codeActionProvider", + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "labelOnlyIgnoringAutoImports", "line_range": [ - 1, - 78 - ] + 3850, + 3865 + ], + "class_name": "CompletionMap" }, - "description": "Provides quick-fix code actions for diagnostics, including a create-type-stub action" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::CodeActionProvider", - "name": "CodeActionProvider", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts/CodeActionProvider", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", - "func_name": "CodeActionProvider", - "line_range": [ - 20, - 77 - ] - } + "description": "detect non imported completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::CodeActionProvider.mightSupport", - "name": "CodeActionProvider.mightSupport", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts/CodeActionProvider.mightSupport", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.matchKindAndImportText", + "name": "CompletionMap.matchKindAndImportText", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.matchKindAndImportText", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", - "func_name": "mightSupport", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "matchKindAndImportText", "line_range": [ - 21, - 28 + 3832, + 3848 ], - "class_name": "CodeActionProvider" + "class_name": "CompletionMap" }, - "description": "determine quick fix support" + "description": "match completion kind; match import source" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts::CodeActionProvider.getCodeActionsForPosition", - "name": "CodeActionProvider.getCodeActionsForPosition", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/codeActionProvider.ts/CodeActionProvider.getCodeActionsForPosition", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.set", + "name": "CompletionMap.set", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.set", "meta": { "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts", - "func_name": "getCodeActionsForPosition", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "set", "line_range": [ - 30, - 76 + 3774, + 3783 ], - "class_name": "CodeActionProvider" + "class_name": "CompletionMap" }, - "description": "gather code actions for position; filter actions by requested kinds; verify workspace availability and services; retrieve diagnostics for range; identify diagnostics suggesting type stub; create type stub quick fix; respect cancellation requests" + "description": "store completion item; preserve duplicate labels" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", - "name": "completionProvider", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.toArray", + "name": "CompletionMap.toArray", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.toArray", "meta": { - "type": "file", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "completionProvider", + "func_name": "toArray", "line_range": [ - 1, - 3698 - ] + 3818, + 3830 + ], + "class_name": "CompletionMap" }, - "description": "Provides Python language completion items for a source position using type and symbol analysis" + "description": "list completion items" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider", @@ -44238,299 +44666,299 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", "func_name": "CompletionProvider", "line_range": [ - 286, - 3596 + 369, + 3765 ] }, - "description": "initialize completion provider context" + "description": "initialize completion context" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getCompletions", - "name": "CompletionProvider.getCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addCallArgumentCompletions", + "name": "CompletionProvider._addCallArgumentCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addCallArgumentCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "getCompletions", + "func_name": "_addCallArgumentCompletions", "line_range": [ - 314, - 321 + 2338, + 2375 ], "class_name": "CompletionProvider" }, - "description": "generate completion suggestion list" + "description": "suggest call arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.resolveCompletionItem", - "name": "CompletionProvider.resolveCompletionItem", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.resolveCompletionItem", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addClassVariableTypeAnnotationCompletions", + "name": "CompletionProvider._addClassVariableTypeAnnotationCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addClassVariableTypeAnnotationCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "resolveCompletionItem", + "func_name": "_addClassVariableTypeAnnotationCompletions", "line_range": [ - 326, - 409 + 1895, + 1994 ], "class_name": "CompletionProvider" }, - "description": "update recent selection history; resolve completion documentation and edits" + "description": "suggest class variable annotations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getCompletionItemData", - "name": "CompletionProvider.getCompletionItemData", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getCompletionItemData", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addImplicitImportsToCompletion", + "name": "CompletionProvider._addImplicitImportsToCompletion", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addImplicitImportsToCompletion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "getCompletionItemData", + "func_name": "_addImplicitImportsToCompletion", "line_range": [ - 423, - 425 + 3368, + 3381 ], "class_name": "CompletionProvider" }, - "description": "extract completion item metadata" + "description": "add implicit imports" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addAdditionalExpressionCompletions", - "name": "CompletionProvider.addAdditionalExpressionCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addAdditionalExpressionCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addLiteralValuesForArgument", + "name": "CompletionProvider._addLiteralValuesForArgument", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addLiteralValuesForArgument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "addAdditionalExpressionCompletions", + "func_name": "_addLiteralValuesForArgument", "line_range": [ - 427, - 435 + 2377, + 2400 ], "class_name": "CompletionProvider" }, - "description": "inject additional expression completions" + "description": "suggest argument literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getMethodOverrideCompletions", - "name": "CompletionProvider.getMethodOverrideCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getMethodOverrideCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addLiteralValuesForExpectedTypes", + "name": "CompletionProvider._addLiteralValuesForExpectedTypes", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addLiteralValuesForExpectedTypes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "getMethodOverrideCompletions", + "func_name": "_addLiteralValuesForExpectedTypes", "line_range": [ - 437, - 539 + 2988, + 3012 ], "class_name": "CompletionProvider" }, - "description": "suggest method override stubs" + "description": "suggest expected type literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.printOverriddenMethodBody", - "name": "CompletionProvider.printOverriddenMethodBody", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.printOverriddenMethodBody", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addLiteralValuesForTargetType", + "name": "CompletionProvider._addLiteralValuesForTargetType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addLiteralValuesForTargetType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "printOverriddenMethodBody", + "func_name": "_addLiteralValuesForTargetType", "line_range": [ - 541, - 613 + 2402, + 2427 ], "class_name": "CompletionProvider" }, - "description": "generate overridden method body" + "description": "suggest target literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createReplaceEdits", - "name": "CompletionProvider.createReplaceEdits", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createReplaceEdits", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addNamedParameters", + "name": "CompletionProvider._addNamedParameters", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addNamedParameters", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "createReplaceEdits", + "func_name": "_addNamedParameters", "line_range": [ - 615, - 627 + 3393, + 3448 ], "class_name": "CompletionProvider" }, - "description": "create text replacement edits" + "description": "suggest named parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createReplaceEditWithOverlap", - "name": "CompletionProvider.createReplaceEditWithOverlap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createReplaceEditWithOverlap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addNamedParametersToMap", + "name": "CompletionProvider._addNamedParametersToMap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addNamedParametersToMap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "createReplaceEditWithOverlap", + "func_name": "_addNamedParametersToMap", "line_range": [ - 629, - 636 + 3450, + 3467 ], "class_name": "CompletionProvider" }, - "description": "create replacement edits with overlap" + "description": "add named parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.shouldProcessDeclaration", - "name": "CompletionProvider.shouldProcessDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.shouldProcessDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addStringLiteralToCompletions", + "name": "CompletionProvider._addStringLiteralToCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addStringLiteralToCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "shouldProcessDeclaration", + "func_name": "_addStringLiteralToCompletions", "line_range": [ - 638, - 641 + 3262, + 3308 ], "class_name": "CompletionProvider" }, - "description": "determine declaration eligibility for completion" + "description": "add string literal completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addSymbol", - "name": "CompletionProvider.addSymbol", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addSymbol", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addSymbols", + "name": "CompletionProvider._addSymbols", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addSymbols", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "addSymbol", + "func_name": "_addSymbols", "line_range": [ - 643, - 767 + 3469, + 3522 ], "class_name": "CompletionProvider" }, - "description": "add symbol to completion list" + "description": "add visible symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getMemberAccessCompletions", - "name": "CompletionProvider.getMemberAccessCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getMemberAccessCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addSymbolsForSymbolTable", + "name": "CompletionProvider._addSymbolsForSymbolTable", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addSymbolsForSymbolTable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "getMemberAccessCompletions", + "func_name": "_addSymbolsForSymbolTable", "line_range": [ - 769, - 844 + 3524, + 3565 ], "class_name": "CompletionProvider" }, - "description": "suggest member access completions" + "description": "add scoped symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createAutoImporter", - "name": "CompletionProvider.createAutoImporter", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createAutoImporter", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._canUseExpectedTypeForLiteralCompletion", + "name": "CompletionProvider._canUseExpectedTypeForLiteralCompletion", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._canUseExpectedTypeForLiteralCompletion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "createAutoImporter", + "func_name": "_canUseExpectedTypeForLiteralCompletion", "line_range": [ - 846, - 864 + 3014, + 3016 ], "class_name": "CompletionProvider" }, - "description": "create auto import completion helper" + "description": "validate expected literal type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addAutoImportCompletions", - "name": "CompletionProvider.addAutoImportCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addAutoImportCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._convertDeclarationTypeToItemKind", + "name": "CompletionProvider._convertDeclarationTypeToItemKind", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._convertDeclarationTypeToItemKind", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "addAutoImportCompletions", + "func_name": "_convertDeclarationTypeToItemKind", "line_range": [ - 866, - 893 + 3640, + 3686 ], "class_name": "CompletionProvider" }, - "description": "add auto import completion suggestions" + "description": "classify declaration completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addImportResults", - "name": "CompletionProvider.addImportResults", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addImportResults", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._convertTypeToItemKind", + "name": "CompletionProvider._convertTypeToItemKind", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._convertTypeToItemKind", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "addImportResults", + "func_name": "_convertTypeToItemKind", "line_range": [ - 895, - 937 + 3688, + 3707 ], "class_name": "CompletionProvider" }, - "description": "merge import results into completions" + "description": "classify type completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addExtraCommitChar", - "name": "CompletionProvider.addExtraCommitChar", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addExtraCommitChar", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._createSingleKeywordCompletion", + "name": "CompletionProvider._createSingleKeywordCompletion", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._createSingleKeywordCompletion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "addExtraCommitChar", + "func_name": "_createSingleKeywordCompletion", "line_range": [ - 939, - 941 + 1886, + 1893 ], "class_name": "CompletionProvider" }, - "description": "augment completion with commit character" + "description": "create keyword completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addNameToCompletions", - "name": "CompletionProvider.addNameToCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addNameToCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._findMatchingKeywords", + "name": "CompletionProvider._findMatchingKeywords", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._findMatchingKeywords", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "addNameToCompletions", + "func_name": "_findMatchingKeywords", "line_range": [ - 943, - 1108 + 3383, + 3391 ], "class_name": "CompletionProvider" }, - "description": "add name suggestion to completions" + "description": "find matching keywords" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getAutoImportText", - "name": "CompletionProvider.getAutoImportText", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getAutoImportText", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._formatInteger", + "name": "CompletionProvider._formatInteger", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._formatInteger", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "getAutoImportText", + "func_name": "_formatInteger", "line_range": [ - 1110, - 1126 + 3623, + 3638 ], "class_name": "CompletionProvider" }, - "description": "compute auto import insertion text" + "description": "format numeric rank" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getTypeOfSymbol", - "name": "CompletionProvider._getTypeOfSymbol", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getTypeOfSymbol", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getClassVariableCompletions", + "name": "CompletionProvider._getClassVariableCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getClassVariableCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getTypeOfSymbol", + "func_name": "_getClassVariableCompletions", "line_range": [ - 1132, - 1175 + 1996, + 2041 ], "class_name": "CompletionProvider" }, - "description": "infer type for a symbol" + "description": "suggest class variables" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getCompletions", @@ -44541,156 +44969,156 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", "func_name": "_getCompletions", "line_range": [ - 1177, - 1424 + 1292, + 1539 ], "class_name": "CompletionProvider" }, - "description": "compute all applicable completion suggestions" + "description": "collect context completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryGetNameCompletions", - "name": "CompletionProvider._tryGetNameCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryGetNameCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getDictExpressionStringKeys", + "name": "CompletionProvider._getDictExpressionStringKeys", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getDictExpressionStringKeys", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_tryGetNameCompletions", + "func_name": "_getDictExpressionStringKeys", "line_range": [ - 1429, - 1571 + 2429, + 2463 ], "class_name": "CompletionProvider" }, - "description": "attempt name-based completion suggestions" + "description": "collect dictionary string keys" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isRecoveredPatternMemberAccessName", - "name": "CompletionProvider._isRecoveredPatternMemberAccessName", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isRecoveredPatternMemberAccessName", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getExpressionCompletions", + "name": "CompletionProvider._getExpressionCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getExpressionCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isRecoveredPatternMemberAccessName", + "func_name": "_getExpressionCompletions", "line_range": [ - 1573, - 1585 + 2240, + 2323 ], "class_name": "CompletionProvider" }, - "description": "detect recovered pattern member access" + "description": "suggest expression completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isWithinComment", - "name": "CompletionProvider._isWithinComment", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isWithinComment", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getExpressionErrorCompletions", + "name": "CompletionProvider._getExpressionErrorCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getExpressionErrorCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isWithinComment", + "func_name": "_getExpressionErrorCompletions", "line_range": [ - 1587, - 1629 + 1746, + 1872 ], "class_name": "CompletionProvider" }, - "description": "detect if position is in comment" + "description": "suggest expression recovery" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getExpressionErrorCompletions", - "name": "CompletionProvider._getExpressionErrorCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getExpressionErrorCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getFilteredMatchSubjectTypeForCaseCompletions", + "name": "CompletionProvider._getFilteredMatchSubjectTypeForCaseCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getFilteredMatchSubjectTypeForCaseCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getExpressionErrorCompletions", + "func_name": "_getFilteredMatchSubjectTypeForCaseCompletions", "line_range": [ - 1631, - 1757 + 3018, + 3099 ], "class_name": "CompletionProvider" }, - "description": "suggest completions for expression errors" + "description": "narrow match subject type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getMissingMemberAccessNameCompletions", - "name": "CompletionProvider._getMissingMemberAccessNameCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getMissingMemberAccessNameCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getImportFromCompletions", + "name": "CompletionProvider._getImportFromCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getImportFromCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getMissingMemberAccessNameCompletions", + "func_name": "_getImportFromCompletions", "line_range": [ - 1759, - 1765 + 3310, + 3366 ], "class_name": "CompletionProvider" }, - "description": "suggest missing member access names" + "description": "suggest imported names" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isOverload", - "name": "CompletionProvider._isOverload", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isOverload", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getImportModuleCompletions", + "name": "CompletionProvider._getImportModuleCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getImportModuleCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isOverload", + "func_name": "_getImportModuleCompletions", "line_range": [ - 1767, - 1769 + 3709, + 3740 ], "class_name": "CompletionProvider" }, - "description": "determine if declaration is overload" + "description": "suggest import modules" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._createSingleKeywordCompletion", - "name": "CompletionProvider._createSingleKeywordCompletion", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._createSingleKeywordCompletion", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getIndexKeys", + "name": "CompletionProvider._getIndexKeys", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getIndexKeys", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_createSingleKeywordCompletion", + "func_name": "_getIndexKeys", "line_range": [ - 1771, - 1778 + 2501, + 2622 ], "class_name": "CompletionProvider" }, - "description": "create single keyword completion" + "description": "suggest index keys" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addClassVariableTypeAnnotationCompletions", - "name": "CompletionProvider._addClassVariableTypeAnnotationCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addClassVariableTypeAnnotationCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getIndexKeyType", + "name": "CompletionProvider._getIndexKeyType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getIndexKeyType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addClassVariableTypeAnnotationCompletions", + "func_name": "_getIndexKeyType", "line_range": [ - 1780, - 1879 + 2477, + 2499 ], "class_name": "CompletionProvider" }, - "description": "suggest class variable type annotations" + "description": "resolve index key type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getClassVariableCompletions", - "name": "CompletionProvider._getClassVariableCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getClassVariableCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getLiteralCompletions", + "name": "CompletionProvider._getLiteralCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getLiteralCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getClassVariableCompletions", + "func_name": "_getLiteralCompletions", "line_range": [ - 1881, - 1926 + 2669, + 2690 ], "class_name": "CompletionProvider" }, - "description": "provide class variable completions" + "description": "suggest literal values" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getMethodOverloadsCompletions", @@ -44701,28 +45129,60 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", "func_name": "_getMethodOverloadsCompletions", "line_range": [ - 1928, - 1993 + 2043, + 2108 ], "class_name": "CompletionProvider" }, - "description": "suggest method overload completions" + "description": "suggest method overloads" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._printMethodSignature", - "name": "CompletionProvider._printMethodSignature", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._printMethodSignature", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getMissingMemberAccessNameCompletions", + "name": "CompletionProvider._getMissingMemberAccessNameCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getMissingMemberAccessNameCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_printMethodSignature", + "func_name": "_getMissingMemberAccessNameCompletions", + "line_range": [ + 1874, + 1880 + ], + "class_name": "CompletionProvider" + }, + "description": "suggest missing member names" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getQuoteInfo", + "name": "CompletionProvider._getQuoteInfo", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getQuoteInfo", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "_getQuoteInfo", + "line_range": [ + 3194, + 3241 + ], + "class_name": "CompletionProvider" + }, + "description": "identify string quote style" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getRecentListIndex", + "name": "CompletionProvider._getRecentListIndex", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getRecentListIndex", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "_getRecentListIndex", "line_range": [ - 1995, - 2059 + 3588, + 3592 ], "class_name": "CompletionProvider" }, - "description": "format method signature string" + "description": "find recent completion" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getStatementCompletions", @@ -44733,188 +45193,220 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", "func_name": "_getStatementCompletions", "line_range": [ - 2061, - 2069 + 2176, + 2184 ], "class_name": "CompletionProvider" }, - "description": "provide statement-level completions" + "description": "suggest statement keywords" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getExpressionCompletions", - "name": "CompletionProvider._getExpressionCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getExpressionCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getSubTypesWithLiteralValues", + "name": "CompletionProvider._getSubTypesWithLiteralValues", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getSubTypesWithLiteralValues", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getExpressionCompletions", + "func_name": "_getSubTypesWithLiteralValues", "line_range": [ - 2071, - 2149 + 2465, + 2475 ], "class_name": "CompletionProvider" }, - "description": "provide expression-level completions" + "description": "collect literal subtypes" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isIndexArgument", - "name": "CompletionProvider._isIndexArgument", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isIndexArgument", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getTypeOfSymbol", + "name": "CompletionProvider._getTypeOfSymbol", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getTypeOfSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isIndexArgument", + "func_name": "_getTypeOfSymbol", "line_range": [ - 2151, - 2162 + 1247, + 1290 ], "class_name": "CompletionProvider" }, - "description": "determine if index is argument" + "description": "resolve symbol type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addCallArgumentCompletions", - "name": "CompletionProvider._addCallArgumentCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addCallArgumentCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isEnumMember", + "name": "CompletionProvider._isEnumMember", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isEnumMember", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addCallArgumentCompletions", + "func_name": "_isEnumMember", "line_range": [ - 2164, - 2201 + 3748, + 3764 ], "class_name": "CompletionProvider" }, - "description": "suggest call argument completions" + "description": "detect enumeration member" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addLiteralValuesForArgument", - "name": "CompletionProvider._addLiteralValuesForArgument", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addLiteralValuesForArgument", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isExpressionOnlySlot", + "name": "CompletionProvider._isExpressionOnlySlot", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isExpressionOnlySlot", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addLiteralValuesForArgument", + "func_name": "_isExpressionOnlySlot", "line_range": [ - 2203, - 2226 + 2193, + 2238 ], "class_name": "CompletionProvider" }, - "description": "suggest literal values for argument" + "description": "detect expression position" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addLiteralValuesForTargetType", - "name": "CompletionProvider._addLiteralValuesForTargetType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addLiteralValuesForTargetType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isIndexArgument", + "name": "CompletionProvider._isIndexArgument", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isIndexArgument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addLiteralValuesForTargetType", + "func_name": "_isIndexArgument", "line_range": [ - 2228, - 2253 + 2325, + 2336 ], "class_name": "CompletionProvider" }, - "description": "suggest literal values for target type" + "description": "detect index argument" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getDictExpressionStringKeys", - "name": "CompletionProvider._getDictExpressionStringKeys", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getDictExpressionStringKeys", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isOverload", + "name": "CompletionProvider._isOverload", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isOverload", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getDictExpressionStringKeys", + "func_name": "_isOverload", "line_range": [ - 2255, - 2289 + 1882, + 1884 + ], + "class_name": "CompletionProvider" + }, + "description": "detect overload declarations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isPossiblePropertyDeclaration", + "name": "CompletionProvider._isPossiblePropertyDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isPossiblePropertyDeclaration", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "_isPossiblePropertyDeclaration", + "line_range": [ + 3742, + 3746 + ], + "class_name": "CompletionProvider" + }, + "description": "detect property declaration" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isRecoveredPatternMemberAccessName", + "name": "CompletionProvider._isRecoveredPatternMemberAccessName", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isRecoveredPatternMemberAccessName", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", + "func_name": "_isRecoveredPatternMemberAccessName", + "line_range": [ + 1688, + 1700 ], "class_name": "CompletionProvider" }, - "description": "extract string keys from dictionary" + "description": "detect recovered member access" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getSubTypesWithLiteralValues", - "name": "CompletionProvider._getSubTypesWithLiteralValues", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getSubTypesWithLiteralValues", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isSubscriptInTypeContext", + "name": "CompletionProvider._isSubscriptInTypeContext", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isSubscriptInTypeContext", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getSubTypesWithLiteralValues", + "func_name": "_isSubscriptInTypeContext", "line_range": [ - 2291, - 2301 + 2624, + 2667 ], "class_name": "CompletionProvider" }, - "description": "find subtypes with literal values" + "description": "detect type subscript context" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getIndexKeyType", - "name": "CompletionProvider._getIndexKeyType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getIndexKeyType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isWithinComment", + "name": "CompletionProvider._isWithinComment", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isWithinComment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getIndexKeyType", + "func_name": "_isWithinComment", "line_range": [ - 2303, - 2325 + 1702, + 1744 ], "class_name": "CompletionProvider" }, - "description": "compute index key type" + "description": "detect comment context" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getIndexKeys", - "name": "CompletionProvider._getIndexKeys", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getIndexKeys", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._makeSortText", + "name": "CompletionProvider._makeSortText", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._makeSortText", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getIndexKeys", + "func_name": "_makeSortText", "line_range": [ - 2327, - 2448 + 3594, + 3621 ], "class_name": "CompletionProvider" }, - "description": "suggest index keys for indexing operations" + "description": "rank completion item" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isSubscriptInTypeContext", - "name": "CompletionProvider._isSubscriptInTypeContext", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isSubscriptInTypeContext", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._printMethodSignature", + "name": "CompletionProvider._printMethodSignature", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._printMethodSignature", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isSubscriptInTypeContext", + "func_name": "_printMethodSignature", "line_range": [ - 2450, - 2493 + 2110, + 2174 ], "class_name": "CompletionProvider" }, - "description": "determine if subscript is type context" + "description": "generate method signature" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getLiteralCompletions", - "name": "CompletionProvider._getLiteralCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getLiteralCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._shouldShowAutoParensForClass", + "name": "CompletionProvider._shouldShowAutoParensForClass", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._shouldShowAutoParensForClass", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getLiteralCompletions", + "func_name": "_shouldShowAutoParensForClass", "line_range": [ - 2495, - 2516 + 3567, + 3586 ], "class_name": "CompletionProvider" }, - "description": "provide literal completions" + "description": "decide class call insertion" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddLiterals", @@ -44925,12 +45417,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", "func_name": "_tryAddLiterals", "line_range": [ - 2518, - 2763 + 2692, + 2937 ], "class_name": "CompletionProvider" }, - "description": "attempt to add literal completions" + "description": "add literal completions" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddMatchCaseLiteralCompletions", @@ -44941,630 +45433,622 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", "func_name": "_tryAddMatchCaseLiteralCompletions", "line_range": [ - 2765, - 2812 + 2939, + 2986 ], "class_name": "CompletionProvider" }, - "description": "add match-case literal completions" + "description": "suggest match case literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addLiteralValuesForExpectedTypes", - "name": "CompletionProvider._addLiteralValuesForExpectedTypes", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addLiteralValuesForExpectedTypes", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddTypedDictKeys", + "name": "CompletionProvider._tryAddTypedDictKeys", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryAddTypedDictKeys", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addLiteralValuesForExpectedTypes", + "func_name": "_tryAddTypedDictKeys", "line_range": [ - 2814, - 2838 + 3101, + 3142 ], "class_name": "CompletionProvider" }, - "description": "suggest literals based on expected types" + "description": "suggest typed dictionary keys" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._canUseExpectedTypeForLiteralCompletion", - "name": "CompletionProvider._canUseExpectedTypeForLiteralCompletion", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._canUseExpectedTypeForLiteralCompletion", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddTypedDictKeysFromDictionary", + "name": "CompletionProvider._tryAddTypedDictKeysFromDictionary", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryAddTypedDictKeysFromDictionary", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_canUseExpectedTypeForLiteralCompletion", + "func_name": "_tryAddTypedDictKeysFromDictionary", "line_range": [ - 2840, - 2842 + 3144, + 3169 ], "class_name": "CompletionProvider" }, - "description": "check expected types for literal completions" + "description": "suggest dictionary keys" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getFilteredMatchSubjectTypeForCaseCompletions", - "name": "CompletionProvider._getFilteredMatchSubjectTypeForCaseCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getFilteredMatchSubjectTypeForCaseCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddTypedDictKeysFromIndexer", + "name": "CompletionProvider._tryAddTypedDictKeysFromIndexer", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryAddTypedDictKeysFromIndexer", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getFilteredMatchSubjectTypeForCaseCompletions", + "func_name": "_tryAddTypedDictKeysFromIndexer", "line_range": [ - 2844, - 2925 + 3243, + 3260 ], "class_name": "CompletionProvider" }, - "description": "filter subject type for case completions" + "description": "suggest indexed dictionary keys" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddTypedDictKeys", - "name": "CompletionProvider._tryAddTypedDictKeys", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryAddTypedDictKeys", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryGetNameCompletions", + "name": "CompletionProvider._tryGetNameCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryGetNameCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_tryAddTypedDictKeys", + "func_name": "_tryGetNameCompletions", "line_range": [ - 2927, - 2968 + 1544, + 1686 ], "class_name": "CompletionProvider" }, - "description": "suggest typed dict key completions" + "description": "suggest name completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddTypedDictKeysFromDictionary", - "name": "CompletionProvider._tryAddTypedDictKeysFromDictionary", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryAddTypedDictKeysFromDictionary", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryNarrowTypedDicts", + "name": "CompletionProvider._tryNarrowTypedDicts", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryNarrowTypedDicts", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_tryAddTypedDictKeysFromDictionary", + "func_name": "_tryNarrowTypedDicts", "line_range": [ - 2970, - 2995 + 3171, + 3190 ], "class_name": "CompletionProvider" }, - "description": "derive typed dict keys from dictionary" + "description": "narrow typed dictionaries" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryNarrowTypedDicts", - "name": "CompletionProvider._tryNarrowTypedDicts", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryNarrowTypedDicts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addAdditionalExpressionCompletions", + "name": "CompletionProvider.addAdditionalExpressionCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addAdditionalExpressionCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_tryNarrowTypedDicts", + "func_name": "addAdditionalExpressionCompletions", "line_range": [ - 2997, - 3016 + 538, + 546 ], "class_name": "CompletionProvider" }, - "description": "narrow typed dicts for key extraction" + "description": "add expression suggestions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getQuoteInfo", - "name": "CompletionProvider._getQuoteInfo", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getQuoteInfo", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addAutoImportCompletions", + "name": "CompletionProvider.addAutoImportCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addAutoImportCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getQuoteInfo", + "func_name": "addAutoImportCompletions", "line_range": [ - 3020, - 3067 + 979, + 1006 ], "class_name": "CompletionProvider" }, - "description": "determine string quote context" + "description": "suggest importable symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._tryAddTypedDictKeysFromIndexer", - "name": "CompletionProvider._tryAddTypedDictKeysFromIndexer", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._tryAddTypedDictKeysFromIndexer", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addExtraCommitChar", + "name": "CompletionProvider.addExtraCommitChar", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addExtraCommitChar", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_tryAddTypedDictKeysFromIndexer", + "func_name": "addExtraCommitChar", "line_range": [ - 3069, - 3086 + 1052, + 1054 ], "class_name": "CompletionProvider" }, - "description": "suggest typed dict keys from index operations" + "description": "add commit trigger" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addStringLiteralToCompletions", - "name": "CompletionProvider._addStringLiteralToCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addStringLiteralToCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addImportResults", + "name": "CompletionProvider.addImportResults", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addImportResults", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addStringLiteralToCompletions", + "func_name": "addImportResults", "line_range": [ - 3088, - 3134 + 1008, + 1050 ], "class_name": "CompletionProvider" }, - "description": "add string literal completions" + "description": "add import suggestions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getImportFromCompletions", - "name": "CompletionProvider._getImportFromCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getImportFromCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addNameToCompletions", + "name": "CompletionProvider.addNameToCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addNameToCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getImportFromCompletions", + "func_name": "addNameToCompletions", "line_range": [ - 3136, - 3196 + 1056, + 1223 ], "class_name": "CompletionProvider" }, - "description": "suggest imported symbol completions" + "description": "add named completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addImplicitImportsToCompletion", - "name": "CompletionProvider._addImplicitImportsToCompletion", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addImplicitImportsToCompletion", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.addSymbol", + "name": "CompletionProvider.addSymbol", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.addSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addImplicitImportsToCompletion", + "func_name": "addSymbol", "line_range": [ - 3198, - 3211 + 754, + 880 ], "class_name": "CompletionProvider" }, - "description": "add implicit imports to completions" + "description": "add symbol completion" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._findMatchingKeywords", - "name": "CompletionProvider._findMatchingKeywords", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._findMatchingKeywords", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createAutoImporter", + "name": "CompletionProvider.createAutoImporter", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createAutoImporter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_findMatchingKeywords", + "func_name": "createAutoImporter", "line_range": [ - 3213, - 3221 + 959, + 977 ], "class_name": "CompletionProvider" }, - "description": "find matching keyword completions" + "description": "create import suggester" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addNamedParameters", - "name": "CompletionProvider._addNamedParameters", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addNamedParameters", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createCompletionItemData", + "name": "CompletionProvider.createCompletionItemData", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createCompletionItemData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addNamedParameters", + "func_name": "createCompletionItemData", "line_range": [ - 3223, - 3282 + 530, + 536 ], "class_name": "CompletionProvider" }, - "description": "suggest named parameter completions" + "description": "create completion metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addNamedParametersToMap", - "name": "CompletionProvider._addNamedParametersToMap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addNamedParametersToMap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createReplaceEdits", + "name": "CompletionProvider.createReplaceEdits", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createReplaceEdits", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addNamedParametersToMap", + "func_name": "createReplaceEdits", "line_range": [ - 3284, - 3301 + 726, + 738 ], "class_name": "CompletionProvider" }, - "description": "insert named parameters into map" + "description": "create replacement edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addSymbols", - "name": "CompletionProvider._addSymbols", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addSymbols", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createReplaceEditWithOverlap", + "name": "CompletionProvider.createReplaceEditWithOverlap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.createReplaceEditWithOverlap", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addSymbols", + "func_name": "createReplaceEditWithOverlap", "line_range": [ - 3303, - 3356 + 740, + 747 ], "class_name": "CompletionProvider" }, - "description": "add symbols to completion map" + "description": "create overlapping replacement edit" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._addSymbolsForSymbolTable", - "name": "CompletionProvider._addSymbolsForSymbolTable", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._addSymbolsForSymbolTable", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.feedsMru", + "name": "CompletionProvider.feedsMru", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.feedsMru", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_addSymbolsForSymbolTable", + "func_name": "feedsMru", "line_range": [ - 3358, - 3391 + 416, + 418 ], "class_name": "CompletionProvider" }, - "description": "add symbols from symbol table" + "description": "select reusable completion items" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._shouldShowAutoParensForClass", - "name": "CompletionProvider._shouldShowAutoParensForClass", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._shouldShowAutoParensForClass", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getAutoImportText", + "name": "CompletionProvider.getAutoImportText", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getAutoImportText", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_shouldShowAutoParensForClass", + "func_name": "getAutoImportText", "line_range": [ - 3393, - 3412 + 1225, + 1241 ], "class_name": "CompletionProvider" }, - "description": "decide auto-parens display for class" + "description": "create import label" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getRecentListIndex", - "name": "CompletionProvider._getRecentListIndex", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getRecentListIndex", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getCompletionItemData", + "name": "CompletionProvider.getCompletionItemData", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getCompletionItemData", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getRecentListIndex", + "func_name": "getCompletionItemData", "line_range": [ - 3414, - 3418 + 521, + 523 ], "class_name": "CompletionProvider" }, - "description": "lookup recent completion list index" + "description": "read completion metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._makeSortText", - "name": "CompletionProvider._makeSortText", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._makeSortText", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getCompletions", + "name": "CompletionProvider.getCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_makeSortText", + "func_name": "getCompletions", "line_range": [ - 3420, - 3445 + 397, + 408 ], "class_name": "CompletionProvider" }, - "description": "generate sort text for items" + "description": "provide completion suggestions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._formatInteger", - "name": "CompletionProvider._formatInteger", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._formatInteger", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getMemberAccessCompletions", + "name": "CompletionProvider.getMemberAccessCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getMemberAccessCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_formatInteger", + "func_name": "getMemberAccessCompletions", "line_range": [ - 3447, - 3462 + 882, + 957 ], "class_name": "CompletionProvider" }, - "description": "format integer as fixed-width string" + "description": "suggest member access" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._convertDeclarationTypeToItemKind", - "name": "CompletionProvider._convertDeclarationTypeToItemKind", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._convertDeclarationTypeToItemKind", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getMethodOverrideCompletions", + "name": "CompletionProvider.getMethodOverrideCompletions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.getMethodOverrideCompletions", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_convertDeclarationTypeToItemKind", + "func_name": "getMethodOverrideCompletions", "line_range": [ - 3464, - 3510 + 548, + 650 ], "class_name": "CompletionProvider" }, - "description": "map declaration to completion kind" + "description": "suggest method overrides" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._convertTypeToItemKind", - "name": "CompletionProvider._convertTypeToItemKind", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._convertTypeToItemKind", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.printOverriddenMethodBody", + "name": "CompletionProvider.printOverriddenMethodBody", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.printOverriddenMethodBody", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_convertTypeToItemKind", + "func_name": "printOverriddenMethodBody", "line_range": [ - 3512, - 3531 + 652, + 724 ], "class_name": "CompletionProvider" }, - "description": "map type to completion kind" + "description": "generate override body" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._getImportModuleCompletions", - "name": "CompletionProvider._getImportModuleCompletions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._getImportModuleCompletions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.recordCompletionAccepted", + "name": "CompletionProvider.recordCompletionAccepted", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.recordCompletionAccepted", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_getImportModuleCompletions", + "func_name": "recordCompletionAccepted", "line_range": [ - 3533, - 3571 + 424, + 445 ], "class_name": "CompletionProvider" }, - "description": "suggest import module name completions" + "description": "remember accepted completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isPossiblePropertyDeclaration", - "name": "CompletionProvider._isPossiblePropertyDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isPossiblePropertyDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.resolveCompletionItem", + "name": "CompletionProvider.resolveCompletionItem", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.resolveCompletionItem", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isPossiblePropertyDeclaration", + "func_name": "resolveCompletionItem", "line_range": [ - 3573, - 3577 + 450, + 507 ], "class_name": "CompletionProvider" }, - "description": "check if function is property declaration" + "description": "enrich selected completion item; provide completion documentation; provide import edits" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isEnumMember", - "name": "CompletionProvider._isEnumMember", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider._isEnumMember", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.shouldProcessDeclaration", + "name": "CompletionProvider.shouldProcessDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionProvider.shouldProcessDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "_isEnumMember", + "func_name": "shouldProcessDeclaration", "line_range": [ - 3579, - 3595 + 749, + 752 ], "class_name": "CompletionProvider" }, - "description": "determine if symbol is enum member" + "description": "filter completion declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap", - "name": "CompletionMap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::hoistCompletionItemDataDefault", + "name": "hoistCompletionItemDataDefault", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/hoistCompletionItemDataDefault", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "CompletionMap", + "func_name": "hoistCompletionItemDataDefault", "line_range": [ - 3598, - 3697 + 336, + 344 ] }, - "description": "initialize completion storage map" + "description": "share completion item context; merge completion item data" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.set", - "name": "CompletionMap.set", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.set", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::__file__", + "name": "completionProviderUtils", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "set", + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", + "func_name": "completionProviderUtils", "line_range": [ - 3605, - 3614 - ], - "class_name": "CompletionMap" + 1, + 254 + ] }, - "description": "add completion item by label" + "description": "Builds completion item details, documentation, and trailing text overlap metadata for Pyright completions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.get", - "name": "CompletionMap.get", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.get", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::detectTrailingOverlap", + "name": "detectTrailingOverlap", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts/detectTrailingOverlap", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "get", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", + "func_name": "detectTrailingOverlap", "line_range": [ - 3616, - 3618 - ], - "class_name": "CompletionMap" + 221, + 253 + ] }, - "description": "retrieve completion item by label" + "description": "detect trailing text overlap; reject invalid overlap characters; ignore inline whitespace" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.has", - "name": "CompletionMap.has", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.has", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::getCompletionItemDocumentation", + "name": "getCompletionItemDocumentation", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts/getCompletionItemDocumentation", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "has", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", + "func_name": "getCompletionItemDocumentation", "line_range": [ - 3620, - 3639 - ], - "class_name": "CompletionMap" + 155, + 194 + ] }, - "description": "check completion label existence; validate completion by kind and import" + "description": "compose completion documentation; include completion type detail; convert docstring content" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.clear", - "name": "CompletionMap.clear", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.clear", + "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::getTypeDetail", + "name": "getTypeDetail", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts/getTypeDetail", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "clear", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", + "func_name": "getTypeDetail", "line_range": [ - 3641, - 3643 - ], - "class_name": "CompletionMap" + 64, + 153 + ] }, - "description": "clear all completion entries" + "description": "format module completion detail; format variable type detail; format callable signature detail; resolve bound callable detail; format property type detail; format class completion detail; format alias completion detail" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.delete", - "name": "CompletionMap.delete", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.delete", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", + "name": "definitionProvider", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "delete", + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "definitionProvider", "line_range": [ - 3645, - 3647 - ], - "class_name": "CompletionMap" + 1, + 420 + ] }, - "description": "remove completion items by label" + "description": "Provides go-to-definition and type-definition results for Python symbols in analyzed source files" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.toArray", - "name": "CompletionMap.toArray", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.toArray", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_addIfUnique", + "name": "_addIfUnique", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_addIfUnique", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "toArray", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_addIfUnique", "line_range": [ - 3649, - 3661 - ], - "class_name": "CompletionMap" + 411, + 419 + ] }, - "description": "collect all completion items as array" + "description": "add unique definition location" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.matchKindAndImportText", - "name": "CompletionMap.matchKindAndImportText", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.matchKindAndImportText", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_createModuleEntry", + "name": "_createModuleEntry", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_createModuleEntry", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "matchKindAndImportText", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_createModuleEntry", "line_range": [ - 3663, - 3679 - ], - "class_name": "CompletionMap" + 336, + 344 + ] }, - "description": "match completion kind and import text" + "description": "create module definition location" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionMap.labelOnlyIgnoringAutoImports", - "name": "CompletionMap.labelOnlyIgnoringAutoImports", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProvider.ts/CompletionMap.labelOnlyIgnoringAutoImports", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_filterSourceMappedDeclarations", + "name": "_filterSourceMappedDeclarations", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_filterSourceMappedDeclarations", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts", - "func_name": "labelOnlyIgnoringAutoImports", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_filterSourceMappedDeclarations", "line_range": [ - 3681, - 3696 - ], - "class_name": "CompletionMap" + 350, + 371 + ] }, - "description": "identify label only completions ignoring imports" + "description": "prefer source declarations; prune redundant alias declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::__file__", - "name": "completionProviderUtils", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_getDirectAssignmentExpression", + "name": "_getDirectAssignmentExpression", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_getDirectAssignmentExpression", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", - "func_name": "completionProviderUtils", + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_getDirectAssignmentExpression", "line_range": [ - 1, - 252 + 396, + 405 ] }, - "description": "Helper utilities for completion items: type details, formatted documentation, and trailing overlap detection" + "description": "extract direct assignment expression" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::getTypeDetail", - "name": "getTypeDetail", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts/getTypeDetail", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_isKnownTypingModule", + "name": "_isKnownTypingModule", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_isKnownTypingModule", "meta": { "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", - "func_name": "getTypeDetail", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_isKnownTypingModule", "line_range": [ - 62, - 151 + 407, + 409 ] }, - "description": "format variable type annotation; format function signature; format property type annotation; format class constructor signature; format alias display name; format module import name; expand matching type alias; bind function to class or object" + "description": "identify standard typing module" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::getCompletionItemDocumentation", - "name": "getCompletionItemDocumentation", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts/getCompletionItemDocumentation", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_isKnownTypingStubDeclaration", + "name": "_isKnownTypingStubDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_isKnownTypingStubDeclaration", "meta": { "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", - "func_name": "getCompletionItemDocumentation", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_isKnownTypingStubDeclaration", "line_range": [ - 153, - 192 + 373, + 377 ] }, - "description": "format markdown documentation; format plain text documentation; embed code block for type detail; convert docstring to markdown; convert docstring to plain text" + "description": "identify standard typing stub" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::detectTrailingOverlap", - "name": "detectTrailingOverlap", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/completionProviderUtils.ts/detectTrailingOverlap", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_isTypingAliasFactoryVariableDeclaration", + "name": "_isTypingAliasFactoryVariableDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_isTypingAliasFactoryVariableDeclaration", "meta": { "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts", - "func_name": "detectTrailingOverlap", + "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", + "func_name": "_isTypingAliasFactoryVariableDeclaration", "line_range": [ - 219, - 251 + 379, + 394 ] }, - "description": "detect trailing overlap with text; validate overlap characters allowed; skip inline whitespace per policy; compute consumed character count" + "description": "identify typing alias factory variables" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", - "name": "definitionProvider", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_tryGetNode", + "name": "_tryGetNode", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_tryGetNode", "meta": { - "type": "file", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "definitionProvider", + "func_name": "_tryGetNode", "line_range": [ - 1, - 348 + 323, + 334 ] }, - "description": "Maps positions to symbol and type declarations for go-to-definition and type-definition features" + "description": "locate node at position" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::addDeclarationsToDefinitions", @@ -45575,73 +46059,73 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", "func_name": "addDeclarationsToDefinitions", "line_range": [ - 47, - 129 + 49, + 136 ] }, - "description": "resolve alias declarations; skip unresolved alias declarations; add declarations to definitions; add overload declarations to definitions; map stub declarations to implementations; map stub module to source" + "description": "resolve declaration targets; add definition locations; include overload declarations; map declarations to source counterparts" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::filterDefinitions", - "name": "filterDefinitions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/filterDefinitions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProvider", + "name": "DefinitionProvider", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProvider", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "filterDefinitions", + "func_name": "DefinitionProvider", "line_range": [ - 131, - 145 + 224, + 265 ] }, - "description": "return all definitions when requested; prefer stub definitions when available; fallback to original definitions when none" + "description": "prepare definition lookup" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase", - "name": "DefinitionProviderBase", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProviderBase", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProvider.getDefinitions", + "name": "DefinitionProvider.getDefinitions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProvider.getDefinitions", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "DefinitionProviderBase", + "func_name": "getDefinitions", "line_range": [ - 147, - 215 - ] + 258, + 264 + ], + "class_name": "DefinitionProvider" }, - "description": "initialize definition resolver context; store service and evaluation dependencies; record target node and offset" + "description": "retrieve current definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase.getDefinitionsForNode", - "name": "DefinitionProviderBase.getDefinitionsForNode", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProviderBase.getDefinitionsForNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProvider.getDefinitionsForNode", + "name": "DefinitionProvider.getDefinitionsForNode", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProvider.getDefinitionsForNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", "func_name": "getDefinitionsForNode", "line_range": [ - 158, - 193 + 239, + 256 ], - "class_name": "DefinitionProviderBase" + "class_name": "DefinitionProvider" }, - "description": "handle cancellation requests promptly; query external definition providers; resolve declarations into document ranges; use evaluator for missing declarations; include synthesized type locations as definitions; apply filter to final definitions" + "description": "find node definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase.resolveDeclarations", - "name": "DefinitionProviderBase.resolveDeclarations", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProviderBase.resolveDeclarations", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase", + "name": "DefinitionProviderBase", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProviderBase", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "resolveDeclarations", + "func_name": "DefinitionProviderBase", "line_range": [ - 195, - 197 - ], - "class_name": "DefinitionProviderBase" + 154, + 222 + ] }, - "description": "map declarations to document ranges; merge resolved definitions into results" + "description": "initialize definition lookup context" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase.addSynthesizedTypes", @@ -45652,59 +46136,59 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", "func_name": "addSynthesizedTypes", "line_range": [ - 199, - 214 + 206, + 221 ], "class_name": "DefinitionProviderBase" }, - "description": "convert synthesized types to ranges; add synthesized type ranges to results; ensure uniqueness of synthesized definitions" + "description": "add synthesized type definitions; avoid duplicate definition targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProvider", - "name": "DefinitionProvider", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProvider", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase.getDefinitionsForNode", + "name": "DefinitionProviderBase.getDefinitionsForNode", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProviderBase.getDefinitionsForNode", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "DefinitionProvider", + "func_name": "getDefinitionsForNode", "line_range": [ - 217, - 258 - ] + 165, + 200 + ], + "class_name": "DefinitionProviderBase" }, - "description": "initialize definition provider context; resolve node and offset; obtain source mapper for file" + "description": "honor cancellation requests; find node definitions; include synthesized type targets; filter returned definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProvider.getDefinitionsForNode", - "name": "DefinitionProvider.getDefinitionsForNode", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProvider.getDefinitionsForNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProviderBase.resolveDeclarations", + "name": "DefinitionProviderBase.resolveDeclarations", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProviderBase.resolveDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "getDefinitionsForNode", + "func_name": "resolveDeclarations", "line_range": [ - 232, - 249 + 202, + 204 ], - "class_name": "DefinitionProvider" + "class_name": "DefinitionProviderBase" }, - "description": "lookup definitions for node; instantiate base provider for lookup" + "description": "resolve declarations to definitions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::DefinitionProvider.getDefinitions", - "name": "DefinitionProvider.getDefinitions", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/DefinitionProvider.getDefinitions", + "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::filterDefinitions", + "name": "filterDefinitions", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/filterDefinitions", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "getDefinitions", + "func_name": "filterDefinitions", "line_range": [ - 251, - 257 - ], - "class_name": "DefinitionProvider" + 138, + 152 + ] }, - "description": "retrieve definitions at current position; verify node presence before lookup" + "description": "select preferred definition locations" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::TypeDefinitionProvider", @@ -45715,11 +46199,11 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", "func_name": "TypeDefinitionProvider", "line_range": [ - 260, - 314 + 267, + 321 ] }, - "description": "initialize source mapping; determine node at position; initialize provider evaluation context" + "description": "initialize type definition lookup" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::TypeDefinitionProvider.getDefinitions", @@ -45730,57 +46214,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", "func_name": "getDefinitions", "line_range": [ - 272, - 313 + 279, + 320 ], "class_name": "TypeDefinitionProvider" }, - "description": "check cancellation state; validate node presence; collect definition locations; resolve type for name node; collect class declarations for type; fallback to name declarations; convert declarations to document ranges; resolve declarations from string literal; signal no definitions found; provide collected definition ranges" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_tryGetNode", - "name": "_tryGetNode", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_tryGetNode", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "_tryGetNode", - "line_range": [ - 316, - 327 - ] - }, - "description": "convert position to offset; find parse node by offset; return defaults when parse missing" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_createModuleEntry", - "name": "_createModuleEntry", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_createModuleEntry", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "_createModuleEntry", - "line_range": [ - 329, - 337 - ] - }, - "description": "create module document range entry; initialize range at file start" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_addIfUnique", - "name": "_addIfUnique", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/definitionProvider.ts/_addIfUnique", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts", - "func_name": "_addIfUnique", - "line_range": [ - 339, - 347 - ] - }, - "description": "add definition if unique; compare uri and range equality; prevent duplicate definitions in list" + "description": "cancel abandoned requests; retrieve type definitions; resolve class declarations; fallback to symbol declarations; resolve string declarations; return matched ranges" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts::__file__", @@ -45838,10 +46277,55 @@ "func_name": "documentSymbolCollector", "line_range": [ 1, - 622 + 737 + ] + }, + "description": "Collects document ranges that refer to the same semantic symbol for reference and rename features" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::_getDeclarationsForModuleNameNode", + "name": "_getDeclarationsForModuleNameNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/_getDeclarationsForModuleNameNode", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", + "func_name": "_getDeclarationsForModuleNameNode", + "line_range": [ + 635, + 736 + ] + }, + "description": "resolve module name declarations; match module import references; normalize aliased module declarations; resolve submodule declarations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::_getDeclarationsForNonModuleNameNode", + "name": "_getDeclarationsForNonModuleNameNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/_getDeclarationsForNonModuleNameNode", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", + "func_name": "_getDeclarationsForNonModuleNameNode", + "line_range": [ + 588, + 633 + ] + }, + "description": "resolve ordinary name declarations; resolve synthesized module declarations; match aliased import declarations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::addDeclarationIfUnique", + "name": "addDeclarationIfUnique", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/addDeclarationIfUnique", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", + "func_name": "addDeclarationIfUnique", + "line_range": [ + 571, + 586 ] }, - "description": "Collects and resolves symbol declarations and references within a parse tree for document-level symbol occurrences" + "description": "add unique declaration" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::AliasResolver", @@ -45852,11 +46336,11 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", "func_name": "AliasResolver", "line_range": [ - 68, - 90 + 79, + 101 ] }, - "description": "store evaluator dependency" + "description": "initialize alias resolver" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::AliasResolver.resolve", @@ -45867,12 +46351,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", "func_name": "resolve", "line_range": [ - 75, - 89 + 86, + 100 ], "class_name": "AliasResolver" }, - "description": "resolve alias declaration; reuse cached resolution when available; cache resolved declarations by local names flag; resolve with relaxed validation checks" + "description": "resolve alias declaration; control local name resolution" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector", @@ -45883,263 +46367,297 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", "func_name": "DocumentSymbolCollector", "line_range": [ - 94, - 444 + 113, + 559 ] }, - "description": "initialize collector state; register symbol names and declarations; configure usage providers; detect module export list nodes" + "description": "initialize symbol collection; configure usage providers; identify exported name strings" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.collectFromNode", - "name": "DocumentSymbolCollector.collectFromNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.collectFromNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._addResult", + "name": "DocumentSymbolCollector._addResult", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._addResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "collectFromNode", + "func_name": "_addResult", "line_range": [ - 146, - 170 + 436, + 438 ], "class_name": "DocumentSymbolCollector" }, - "description": "resolve declarations for name node; collect symbols starting at module node" + "description": "record collection result" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.getDeclarationsForNode", - "name": "DocumentSymbolCollector.getDeclarationsForNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.getDeclarationsForNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._getResolveAliasDeclaration", + "name": "DocumentSymbolCollector._getResolveAliasDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._getResolveAliasDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "getDeclarationsForNode", + "func_name": "_getResolveAliasDeclaration", "line_range": [ - 172, - 270 + 503, + 525 ], "class_name": "DocumentSymbolCollector" }, - "description": "find declarations for name node; resolve alias and implementation declarations; append cell docs and implicit declarations" + "description": "resolve import alias declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.collect", - "name": "DocumentSymbolCollector.collect", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.collect", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._isAlreadyCollected", + "name": "DocumentSymbolCollector._isAlreadyCollected", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._isAlreadyCollected", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "collect", + "func_name": "_isAlreadyCollected", "line_range": [ - 272, - 275 + 432, + 434 ], "class_name": "DocumentSymbolCollector" }, - "description": "traverse parse tree and collect results" + "description": "detect collected reference ranges" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.walk", - "name": "DocumentSymbolCollector.walk", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.walk", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._isDeclarationAllowed", + "name": "DocumentSymbolCollector._isDeclarationAllowed", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._isDeclarationAllowed", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "walk", + "func_name": "_isDeclarationAllowed", "line_range": [ - 277, - 281 + 440, + 449 ], "class_name": "DocumentSymbolCollector" }, - "description": "traverse nodes respecting reachability" + "description": "validate candidate declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitName", - "name": "DocumentSymbolCollector.visitName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.visitName", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._mergePendingSeedDeclarations", + "name": "DocumentSymbolCollector._mergePendingSeedDeclarations", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._mergePendingSeedDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "visitName", + "func_name": "_mergePendingSeedDeclarations", "line_range": [ - 283, - 305 + 451, + 463 ], "class_name": "DocumentSymbolCollector" }, - "description": "identify matching name usages; filter usages by declaration match" + "description": "merge discovered seed declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitStringList", - "name": "DocumentSymbolCollector.visitStringList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.visitStringList", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._resultRange", + "name": "DocumentSymbolCollector._resultRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._resultRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "visitStringList", + "func_name": "_resultRange", "line_range": [ - 307, - 318 + 424, + 426 ], "class_name": "DocumentSymbolCollector" }, - "description": "select matching string entries in lists" + "description": "compute reference result range" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitString", - "name": "DocumentSymbolCollector.visitString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.visitString", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._resultsContainsDeclaration", + "name": "DocumentSymbolCollector._resultsContainsDeclaration", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._resultsContainsDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "visitString", + "func_name": "_resultsContainsDeclaration", "line_range": [ - 320, - 338 + 465, + 501 ], "class_name": "DocumentSymbolCollector" }, - "description": "include module export string references; treat string literals as symbol references" + "description": "match usage declarations; collect related seed declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._addResult", - "name": "DocumentSymbolCollector._addResult", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._addResult", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._setDunderAllNodes", + "name": "DocumentSymbolCollector._setDunderAllNodes", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._setDunderAllNodes", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_addResult", + "func_name": "_setDunderAllNodes", "line_range": [ - 344, - 347 + 527, + 558 ], "class_name": "DocumentSymbolCollector" }, - "description": "record node occurrence and range" + "description": "identify exported name strings; match exported string declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._isDeclarationAllowed", - "name": "DocumentSymbolCollector._isDeclarationAllowed", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._isDeclarationAllowed", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.collect", + "name": "DocumentSymbolCollector.collect", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.collect", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_isDeclarationAllowed", + "func_name": "collect", "line_range": [ - 349, - 358 + 317, + 332 ], "class_name": "DocumentSymbolCollector" }, - "description": "check if declaration matches target set" + "description": "collect document references; merge discovered seed declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._resultsContainsDeclaration", - "name": "DocumentSymbolCollector._resultsContainsDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._resultsContainsDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.collectFromNode", + "name": "DocumentSymbolCollector.collectFromNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.collectFromNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_resultsContainsDeclaration", + "func_name": "collectFromNode", "line_range": [ - 360, - 386 + 184, + 208 ], "class_name": "DocumentSymbolCollector" }, - "description": "determine if usage refers to target declarations; augment declaration candidates using providers; resolve aliases to compare declarations" + "description": "collect node references; choose reference search scope" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._getResolveAliasDeclaration", - "name": "DocumentSymbolCollector._getResolveAliasDeclaration", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._getResolveAliasDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.getDeclarationsForNode", + "name": "DocumentSymbolCollector.getDeclarationsForNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.getDeclarationsForNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_getResolveAliasDeclaration", + "func_name": "getDeclarationsForNode", "line_range": [ - 388, - 410 + 210, + 308 ], "class_name": "DocumentSymbolCollector" }, - "description": "resolve alias declarations to underlying declarations" + "description": "resolve node declarations; include implementation declarations; include notebook cell declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._setDunderAllNodes", - "name": "DocumentSymbolCollector._setDunderAllNodes", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector._setDunderAllNodes", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.getSeedDeclarations", + "name": "DocumentSymbolCollector.getSeedDeclarations", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.getSeedDeclarations", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_setDunderAllNodes", + "func_name": "getSeedDeclarations", "line_range": [ - 412, - 443 + 313, + 315 ], "class_name": "DocumentSymbolCollector" }, - "description": "identify exported names from module export list; mark module export string nodes as results" + "description": "expose seed declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::getDeclarationsForNameNode", - "name": "getDeclarationsForNameNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/getDeclarationsForNameNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitName", + "name": "DocumentSymbolCollector.visitName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.visitName", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "getDeclarationsForNameNode", + "func_name": "visitName", "line_range": [ - 446, - 454 - ] + 340, + 372 + ], + "class_name": "DocumentSymbolCollector" }, - "description": "get declarations for name node; dispatch module and non module handling" + "description": "match name references; skip collected reference ranges; record matching name references" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::addDeclarationIfUnique", - "name": "addDeclarationIfUnique", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/addDeclarationIfUnique", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitString", + "name": "DocumentSymbolCollector.visitString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.visitString", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "addDeclarationIfUnique", + "func_name": "visitString", "line_range": [ - 456, - 471 - ] + 391, + 418 + ], + "class_name": "DocumentSymbolCollector" }, - "description": "add declaration if unique; prevent adding duplicate declarations" + "description": "match string references; include exported name strings; record provider string usages" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::_getDeclarationsForNonModuleNameNode", - "name": "_getDeclarationsForNonModuleNameNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/_getDeclarationsForNonModuleNameNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitStringList", + "name": "DocumentSymbolCollector.visitStringList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.visitStringList", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", + "func_name": "visitStringList", + "line_range": [ + 374, + 389 + ], + "class_name": "DocumentSymbolCollector" + }, + "description": "match string list references; record matching string references" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.walk", + "name": "DocumentSymbolCollector.walk", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/DocumentSymbolCollector.walk", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", + "func_name": "walk", + "line_range": [ + 334, + 338 + ], + "class_name": "DocumentSymbolCollector" + }, + "description": "skip unreachable regions" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::getDeclarationsForNameNode", + "name": "getDeclarationsForNameNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/getDeclarationsForNameNode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_getDeclarationsForNonModuleNameNode", + "func_name": "getDeclarationsForNameNode", "line_range": [ - 473, - 518 + 561, + 569 ] }, - "description": "get declarations for non module name node; filter declarations for from import statements; synthesize module declaration from type; append base import declarations for alias imports" + "description": "resolve name declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::_getDeclarationsForModuleNameNode", - "name": "_getDeclarationsForModuleNameNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/_getDeclarationsForModuleNameNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::getResultRangeKey", + "name": "getResultRangeKey", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolCollector.ts/getResultRangeKey", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts", - "func_name": "_getDeclarationsForModuleNameNode", + "func_name": "getResultRangeKey", "line_range": [ - 520, - 621 + 107, + 109 ] }, - "description": "get declarations for module name node; collect synthesized declarations for module imports; reconcile binder and synthesized declarations for aliased imports; retrieve declarations for submodule name parts; filter symbol declarations to matching import statement" + "description": "create range key" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::__file__", @@ -46156,6 +46674,21 @@ }, "description": "Provides document symbol extraction and conversion to hierarchical or flat LSP SymbolInformation for a source file" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::_appendToFlatSymbolsRecursive", + "name": "_appendToFlatSymbolsRecursive", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolProvider.ts/_appendToFlatSymbolsRecursive", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts", + "func_name": "_appendToFlatSymbolsRecursive", + "line_range": [ + 118, + 146 + ] + }, + "description": "append symbol information for document symbol; include symbol tags when present; assign container name from parent symbol; recursively flatten child symbols" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::convertToFlatSymbols", "name": "convertToFlatSymbols", @@ -46187,20 +46720,20 @@ "description": "initialize provider with program and uri; capture initial parse results snapshot; retain cancellation token and options" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::DocumentSymbolProvider.getSymbols", - "name": "DocumentSymbolProvider.getSymbols", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolProvider.ts/DocumentSymbolProvider.getSymbols", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::DocumentSymbolProvider.appendDocumentSymbolsRecursive", + "name": "DocumentSymbolProvider.appendDocumentSymbolsRecursive", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolProvider.ts/DocumentSymbolProvider.appendDocumentSymbolsRecursive", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts", - "func_name": "getSymbols", + "func_name": "appendDocumentSymbolsRecursive", "line_range": [ - 49, - 60 + 80, + 115 ], "class_name": "DocumentSymbolProvider" }, - "description": "provide document symbols for uri; return flat symbols when hierarchical unsupported; return empty symbols on missing parse results" + "description": "append symbol nodes recursively; filter out alias symbols; skip unnamed symbol entries; honor cancellation requests during traversal; construct symbol nodes with ranges; attach child symbols to parents" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::DocumentSymbolProvider.getHierarchicalSymbols", @@ -46219,35 +46752,20 @@ "description": "index symbols from parse results; assemble hierarchical symbol list; return empty symbols on missing data" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::DocumentSymbolProvider.appendDocumentSymbolsRecursive", - "name": "DocumentSymbolProvider.appendDocumentSymbolsRecursive", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolProvider.ts/DocumentSymbolProvider.appendDocumentSymbolsRecursive", + "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::DocumentSymbolProvider.getSymbols", + "name": "DocumentSymbolProvider.getSymbols", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolProvider.ts/DocumentSymbolProvider.getSymbols", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts", - "func_name": "appendDocumentSymbolsRecursive", + "func_name": "getSymbols", "line_range": [ - 80, - 115 + 49, + 60 ], "class_name": "DocumentSymbolProvider" }, - "description": "append symbol nodes recursively; filter out alias symbols; skip unnamed symbol entries; honor cancellation requests during traversal; construct symbol nodes with ranges; attach child symbols to parents" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::_appendToFlatSymbolsRecursive", - "name": "_appendToFlatSymbolsRecursive", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/documentSymbolProvider.ts/_appendToFlatSymbolsRecursive", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts", - "func_name": "_appendToFlatSymbolsRecursive", - "line_range": [ - 118, - 146 - ] - }, - "description": "append symbol information for document symbol; include symbol tags when present; assign container name from parent symbol; recursively flatten child symbols" + "description": "provide document symbols for uri; return flat symbols when hierarchical unsupported; return empty symbols on missing parse results" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::__file__", @@ -46280,36 +46798,20 @@ "description": "initialize feature identity" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.register", - "name": "DynamicFeature.register", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeature.register", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", - "func_name": "register", - "line_range": [ - 18, - 23 - ], - "class_name": "DynamicFeature" - }, - "description": "register feature asynchronously; replace previous registration" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.update", - "name": "DynamicFeature.update", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeature.update", + "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.disable", + "name": "DynamicFeature.disable", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeature.disable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", - "func_name": "update", + "func_name": "disable", "line_range": [ - 25, - 27 + 36, + 38 ], "class_name": "DynamicFeature" }, - "description": "update feature settings" + "description": "disable feature until update" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.dispose", @@ -46328,20 +46830,20 @@ "description": "unregister current registration; clear registration state" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.disable", - "name": "DynamicFeature.disable", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeature.disable", + "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.register", + "name": "DynamicFeature.register", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeature.register", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", - "func_name": "disable", + "func_name": "register", "line_range": [ - 36, - 38 + 18, + 23 ], "class_name": "DynamicFeature" }, - "description": "disable feature until update" + "description": "register feature asynchronously; replace previous registration" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.registerFeature", @@ -46359,6 +46861,22 @@ }, "description": "create feature registration" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeature.update", + "name": "DynamicFeature.update", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeature.update", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", + "func_name": "update", + "line_range": [ + 25, + 27 + ], + "class_name": "DynamicFeature" + }, + "description": "update feature settings" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeatures", "name": "DynamicFeatures", @@ -46383,28 +46901,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", "func_name": "add", "line_range": [ - 46, - 53 - ], - "class_name": "DynamicFeatures" - }, - "description": "add dynamic feature; replace existing feature by name" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeatures.update", - "name": "DynamicFeatures.update", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeatures.update", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", - "func_name": "update", - "line_range": [ - 55, - 59 + 46, + 53 ], "class_name": "DynamicFeatures" }, - "description": "update features with server settings" + "description": "add dynamic feature; replace existing feature by name" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeatures.register", @@ -46438,6 +46940,22 @@ }, "description": "unregister and clear feature registry" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts::DynamicFeatures.update", + "name": "DynamicFeatures.update", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/dynamicFeature.ts/DynamicFeatures.update", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts", + "func_name": "update", + "line_range": [ + 55, + 59 + ], + "class_name": "DynamicFeatures" + }, + "description": "update features with server settings" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts::__file__", "name": "fileWatcherDynamicFeature", @@ -46494,70 +47012,85 @@ "func_name": "hoverProvider", "line_range": [ 1, - 682 + 712 ] }, - "description": "Generates editor hover tooltips for Python symbols with type info, signatures, and documentation" + "description": "Provides markdown hover text for Python symbols at editor positions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::convertHoverResults", - "name": "convertHoverResults", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/convertHoverResults", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addDocumentationResultsPart", + "name": "addDocumentationResultsPart", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/addDocumentationResultsPart", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "convertHoverResults", + "func_name": "addDocumentationResultsPart", "line_range": [ - 69, - 97 + 168, + 200 ] }, - "description": "convert hover results; format python code blocks for markdown; format python code blocks for plaintext; preserve non python text parts" + "description": "convert symbol documentation; append symbol documentation; separate documentation sections" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::getDocumentationSeparator", - "name": "getDocumentationSeparator", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/getDocumentationSeparator", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addParameterResultsPart", + "name": "addParameterResultsPart", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/addParameterResultsPart", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "getDocumentationSeparator", + "func_name": "addParameterResultsPart", "line_range": [ - 99, - 113 + 116, + 143 ] }, - "description": "generate documentation separator; adjust separator to trailing newlines" + "description": "extract parameter documentation; append parameter documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addParameterResultsPart", - "name": "addParameterResultsPart", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/addParameterResultsPart", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addReturnResultsPart", + "name": "addReturnResultsPart", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/addReturnResultsPart", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "addParameterResultsPart", + "func_name": "addReturnResultsPart", "line_range": [ - 115, - 142 + 145, + 166 ] }, - "description": "extract parameter documentation from docstring; append parameter documentation part" + "description": "extract return documentation; append return documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addDocumentationResultsPart", - "name": "addDocumentationResultsPart", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/addDocumentationResultsPart", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::convertHoverResults", + "name": "convertHoverResults", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/convertHoverResults", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "addDocumentationResultsPart", + "func_name": "convertHoverResults", "line_range": [ - 144, - 176 + 70, + 98 + ] + }, + "description": "convert hover results; format hover text; preserve hover range" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::getDocumentationSeparator", + "name": "getDocumentationSeparator", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/getDocumentationSeparator", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", + "func_name": "getDocumentationSeparator", + "line_range": [ + 100, + 114 ] }, - "description": "convert documentation to requested format; insert documentation separator between parts; apply literal override for built in modules; append converted documentation part" + "description": "separate hover documentation" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::getVariableTypeText", @@ -46568,11 +47101,11 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", "func_name": "getVariableTypeText", "line_range": [ - 178, - 231 + 202, + 255 ] }, - "description": "determine variable or constant label; detect and describe type aliases; detect and describe type variables; generate tooltip for function type; format variable type annotation text" + "description": "label variable declaration; render type alias text; render callable type text; render variable type text" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider", @@ -46583,59 +47116,59 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", "func_name": "HoverProvider", "line_range": [ - 233, - 681 + 257, + 711 ] }, - "description": "initialize hover provider context" + "description": "initialize hover context" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider.getHover", - "name": "HoverProvider.getHover", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider.getHover", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addDocumentationPart", + "name": "HoverProvider._addDocumentationPart", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addDocumentationPart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "getHover", + "func_name": "_addDocumentationPart", "line_range": [ - 248, - 250 + 673, + 676 ], "class_name": "HoverProvider" }, - "description": "produce formatted hover result" + "description": "attach symbol documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider.getPrimaryDeclaration", - "name": "HoverProvider.getPrimaryDeclaration", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider.getPrimaryDeclaration", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addDocumentationPartForType", + "name": "HoverProvider._addDocumentationPartForType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addDocumentationPartForType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "getPrimaryDeclaration", + "func_name": "_addDocumentationPartForType", "line_range": [ - 252, - 274 + 678, + 703 ], "class_name": "HoverProvider" }, - "description": "choose primary declaration for symbol" + "description": "attach type documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._getHoverResult", - "name": "HoverProvider._getHoverResult", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._getHoverResult", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addInitOrNewMethodInsteadIfCallNode", + "name": "HoverProvider._addInitOrNewMethodInsteadIfCallNode", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addInitOrNewMethodInsteadIfCallNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "_getHoverResult", + "func_name": "_addInitOrNewMethodInsteadIfCallNode", "line_range": [ - 284, - 366 + 639, + 660 ], "class_name": "HoverProvider" }, - "description": "compute hover content for node; determine hover range for node" + "description": "display constructor signature; display constructor documentation" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addResultsForDeclaration", @@ -46646,12 +47179,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", "func_name": "_addResultsForDeclaration", "line_range": [ - 368, - 534 + 398, + 564 ], "class_name": "HoverProvider" }, - "description": "render hover text for declaration; include documentation for declaration; show type and signature information" + "description": "describe declared symbol; show symbol documentation" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addResultsForSynthesizedType", @@ -46662,44 +47195,44 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", "func_name": "_addResultsForSynthesizedType", "line_range": [ - 536, - 559 + 566, + 589 ], "class_name": "HoverProvider" }, - "description": "display synthesized type information" + "description": "describe synthesized type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._tryAddPartsForTypedDictKey", - "name": "HoverProvider._tryAddPartsForTypedDictKey", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._tryAddPartsForTypedDictKey", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addResultsPart", + "name": "HoverProvider._addResultsPart", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addResultsPart", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "_tryAddPartsForTypedDictKey", + "func_name": "_addResultsPart", "line_range": [ - 561, - 607 + 705, + 710 ], "class_name": "HoverProvider" }, - "description": "show typed dict key type and documentation" + "description": "add hover content" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addInitOrNewMethodInsteadIfCallNode", - "name": "HoverProvider._addInitOrNewMethodInsteadIfCallNode", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addInitOrNewMethodInsteadIfCallNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._getHoverResult", + "name": "HoverProvider._getHoverResult", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._getHoverResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "_addInitOrNewMethodInsteadIfCallNode", + "func_name": "_getHoverResult", "line_range": [ - 609, - 630 + 308, + 396 ], "class_name": "HoverProvider" }, - "description": "show constructor signature for class call" + "description": "collect hover information; identify hovered symbol; describe hovered string; describe function return" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._getType", @@ -46710,12 +47243,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", "func_name": "_getType", "line_range": [ - 632, - 636 + 662, + 666 ], "class_name": "HoverProvider" }, - "description": "retrieve type for tooltip display" + "description": "resolve tooltip type" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._getTypeText", @@ -46726,60 +47259,60 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", "func_name": "_getTypeText", "line_range": [ - 638, - 641 + 668, + 671 ], "class_name": "HoverProvider" }, - "description": "format type text for display" + "description": "format type description" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addDocumentationPart", - "name": "HoverProvider._addDocumentationPart", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addDocumentationPart", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._tryAddPartsForTypedDictKey", + "name": "HoverProvider._tryAddPartsForTypedDictKey", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._tryAddPartsForTypedDictKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "_addDocumentationPart", + "func_name": "_tryAddPartsForTypedDictKey", "line_range": [ - 643, - 646 + 591, + 637 ], "class_name": "HoverProvider" }, - "description": "add documentation for hovered symbol" + "description": "describe typed dictionary key; show key documentation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addDocumentationPartForType", - "name": "HoverProvider._addDocumentationPartForType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addDocumentationPartForType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider.getHover", + "name": "HoverProvider.getHover", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider.getHover", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "_addDocumentationPartForType", + "func_name": "getHover", "line_range": [ - 648, - 673 + 272, + 274 ], "class_name": "HoverProvider" }, - "description": "attach documentation derived from type and declaration" + "description": "produce hover response" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider._addResultsPart", - "name": "HoverProvider._addResultsPart", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider._addResultsPart", + "id": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::HoverProvider.getPrimaryDeclaration", + "name": "HoverProvider.getPrimaryDeclaration", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/hover documentation/hoverProvider.ts/HoverProvider.getPrimaryDeclaration", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts", - "func_name": "_addResultsPart", + "func_name": "getPrimaryDeclaration", "line_range": [ - 675, - 680 + 276, + 298 ], "class_name": "HoverProvider" }, - "description": "append text part to hover output" + "description": "select primary declaration" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::__file__", @@ -46812,52 +47345,68 @@ "description": "store parse results reference; store cancellation token reference; prepare sorter for operations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter.sort", - "name": "ImportSorter.sort", - "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter.sort", + "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._addSecondaryReplacementRanges", + "name": "ImportSorter._addSecondaryReplacementRanges", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._addSecondaryReplacementRanges", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", - "func_name": "sort", + "func_name": "_addSecondaryReplacementRanges", "line_range": [ - 33, - 60 + 80, + 113 ], "class_name": "ImportSorter" }, - "description": "check for cancellation token; collect top level imports; sort import statements by group and name; compute primary replacement range; generate sorted import text; create primary text edit action; add secondary replacement ranges; return text edit actions" + "description": "identify secondary import blocks; add deletion edits for secondary blocks" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._getPrimaryReplacementRange", - "name": "ImportSorter._getPrimaryReplacementRange", - "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._getPrimaryReplacementRange", + "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._compareSymbols", + "name": "ImportSorter._compareSymbols", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._compareSymbols", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", - "func_name": "_getPrimaryReplacementRange", + "func_name": "_compareSymbols", "line_range": [ - 65, - 76 + 193, + 195 ], "class_name": "ImportSorter" }, - "description": "determine primary import text range; detect contiguous import block end" + "description": "compare import symbols alphabetically" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._addSecondaryReplacementRanges", - "name": "ImportSorter._addSecondaryReplacementRanges", - "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._addSecondaryReplacementRanges", + "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._formatImportFromNode", + "name": "ImportSorter._formatImportFromNode", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._formatImportFromNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", - "func_name": "_addSecondaryReplacementRanges", + "func_name": "_formatImportFromNode", "line_range": [ - 80, - 113 + 154, + 191 ], "class_name": "ImportSorter" }, - "description": "identify secondary import blocks; add deletion edits for secondary blocks" + "description": "format from import statement text; sort imported symbols alphabetically; wrap long import lists with parens; format wildcard imports compactly" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._formatImportNode", + "name": "ImportSorter._formatImportNode", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._formatImportNode", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", + "func_name": "_formatImportNode", + "line_range": [ + 145, + 152 + ], + "class_name": "ImportSorter" + }, + "description": "format import statement node text; include alias when present" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._generateSortedImportText", @@ -46876,52 +47425,96 @@ "description": "generate sorted import block text; insert blank lines between groups; format each import into text; preserve predominant end of line" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._formatImportNode", - "name": "ImportSorter._formatImportNode", - "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._formatImportNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._getPrimaryReplacementRange", + "name": "ImportSorter._getPrimaryReplacementRange", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._getPrimaryReplacementRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", - "func_name": "_formatImportNode", + "func_name": "_getPrimaryReplacementRange", "line_range": [ - 145, - 152 + 65, + 76 ], "class_name": "ImportSorter" }, - "description": "format import statement node text; include alias when present" + "description": "determine primary import text range; detect contiguous import block end" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._formatImportFromNode", - "name": "ImportSorter._formatImportFromNode", - "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._formatImportFromNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter.sort", + "name": "ImportSorter.sort", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter.sort", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", - "func_name": "_formatImportFromNode", + "func_name": "sort", "line_range": [ - 154, - 191 + 33, + 60 ], "class_name": "ImportSorter" }, - "description": "format from import statement text; sort imported symbols alphabetically; wrap long import lists with parens; format wildcard imports compactly" + "description": "check for cancellation token; collect top level imports; sort import statements by group and name; compute primary replacement range; generate sorted import text; create primary text edit action; add secondary replacement ranges; return text edit actions" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter._compareSymbols", - "name": "ImportSorter._compareSymbols", - "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importSorter.ts/ImportSorter._compareSymbols", + "id": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "name": "importStatementCandidates", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importStatementCandidates.ts", "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts", - "func_name": "_compareSymbols", + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts", + "func_name": "importStatementCandidates", "line_range": [ - 193, - 195 - ], - "class_name": "ImportSorter" + 1, + 100 + ] }, - "description": "compare import symbols alphabetically" + "description": "Enumerates import-statement candidate names from module completions and resolved from-import targets" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::createModuleNameCompletionDescriptor", + "name": "createModuleNameCompletionDescriptor", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importStatementCandidates.ts/createModuleNameCompletionDescriptor", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts", + "func_name": "createModuleNameCompletionDescriptor", + "line_range": [ + 29, + 49 + ] + }, + "description": "describe module completion target; broaden misspelled module suggestions" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::getImportFromTarget", + "name": "getImportFromTarget", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importStatementCandidates.ts/getImportFromTarget", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts", + "func_name": "getImportFromTarget", + "line_range": [ + 70, + 86 + ] + }, + "description": "resolve import target metadata; retrieve import target symbols" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::getModuleNameCompletionSuggestions", + "name": "getModuleNameCompletionSuggestions", + "feature_path": "pyright-whole-repo/ImportResolution/Serve language service/editor feature requests/importStatementCandidates.ts/getModuleNameCompletionSuggestions", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts", + "func_name": "getModuleNameCompletionSuggestions", + "line_range": [ + 54, + 63 + ] + }, + "description": "resolve module name suggestions" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts::__file__", @@ -47030,36 +47623,36 @@ "description": "disable pull diagnostics registration" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts::PullDiagnosticsDynamicFeature.update", - "name": "PullDiagnosticsDynamicFeature.update", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/pullDiagnosticsDynamicFeature.ts/PullDiagnosticsDynamicFeature.update", + "id": "packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts::PullDiagnosticsDynamicFeature.registerFeature", + "name": "PullDiagnosticsDynamicFeature.registerFeature", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/pullDiagnosticsDynamicFeature.ts/PullDiagnosticsDynamicFeature.registerFeature", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts", - "func_name": "update", + "func_name": "registerFeature", "line_range": [ - 29, - 39 + 41, + 50 ], "class_name": "PullDiagnosticsDynamicFeature" }, - "description": "update workspace diagnostics support; reregister diagnostics on settings change" + "description": "register diagnostics provider with client; configure diagnostics workspace mode" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts::PullDiagnosticsDynamicFeature.registerFeature", - "name": "PullDiagnosticsDynamicFeature.registerFeature", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/pullDiagnosticsDynamicFeature.ts/PullDiagnosticsDynamicFeature.registerFeature", + "id": "packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts::PullDiagnosticsDynamicFeature.update", + "name": "PullDiagnosticsDynamicFeature.update", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/diagnostics and fixes/pullDiagnosticsDynamicFeature.ts/PullDiagnosticsDynamicFeature.update", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts", - "func_name": "registerFeature", + "func_name": "update", "line_range": [ - 41, - 50 + 29, + 39 ], "class_name": "PullDiagnosticsDynamicFeature" }, - "description": "register diagnostics provider with client; configure diagnostics workspace mode" + "description": "update workspace diagnostics support; reregister diagnostics on settings change" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts::__file__", @@ -47101,56 +47694,41 @@ "func_name": "referencesProvider", "line_range": [ 1, - 528 + 734 ] }, - "description": "Finds symbol references in files and returns DocumentRange/LSP locations" + "description": "Finds and reports symbol references across files with declaration seeding and visibility-aware workspace traversal" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesResult", - "name": "ReferencesResult", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesResult", + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::FindReferencesTreeWalker", + "name": "FindReferencesTreeWalker", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/FindReferencesTreeWalker", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "ReferencesResult", + "func_name": "FindReferencesTreeWalker", "line_range": [ - 45, - 111 + 135, + 198 ] }, - "description": "initialize reference search context; filter declarations to non import ones; exclude alias imports unless matching symbol; store symbol and provider metadata" + "description": "initialize reference search" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesResult.addResults", - "name": "ReferencesResult.addResults", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesResult.addResults", + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::FindReferencesTreeWalker.createDocumentRange", + "name": "FindReferencesTreeWalker.createDocumentRange", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/FindReferencesTreeWalker.createDocumentRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "addResults", + "func_name": "createDocumentRange", "line_range": [ - 100, - 110 + 189, + 197 ], - "class_name": "ReferencesResult" - }, - "description": "ignore empty additions; notify reporter of locations; append locations to results" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::FindReferencesTreeWalker", - "name": "FindReferencesTreeWalker", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/FindReferencesTreeWalker", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "FindReferencesTreeWalker", - "line_range": [ - 113, - 185 - ] + "class_name": "FindReferencesTreeWalker" }, - "description": "initialize parse results; store program and search parameters" + "description": "create document range; map reference positions" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::FindReferencesTreeWalker.findReferences", @@ -47161,28 +47739,42 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", "func_name": "findReferences", "line_range": [ - 131, - 174 + 154, + 187 ], "class_name": "FindReferencesTreeWalker" }, - "description": "collect document symbols in file; filter matching symbol occurrences; include or exclude declaration; build location entries with ranges; attach parent node range metadata" + "description": "find symbol references; filter declaration references; return discovered declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::FindReferencesTreeWalker.createDocumentRange", - "name": "FindReferencesTreeWalker.createDocumentRange", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/FindReferencesTreeWalker.createDocumentRange", + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::isVisibleOutside", + "name": "isVisibleOutside", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/isVisibleOutside", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "createDocumentRange", + "func_name": "isVisibleOutside", "line_range": [ - 176, - 184 - ], - "class_name": "FindReferencesTreeWalker" + 617, + 733 + ] + }, + "description": "determine external symbol visibility; identify declarations needing global search" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::mergeSeedDeclarations", + "name": "mergeSeedDeclarations", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/mergeSeedDeclarations", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", + "func_name": "mergeSeedDeclarations", + "line_range": [ + 601, + 615 + ] }, - "description": "create document range from offsets; convert offsets to document positions; associate uri with computed range" + "description": "merge seed declarations; record discovered symbol names" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider", @@ -47193,43 +47785,59 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", "func_name": "ReferencesProvider", "line_range": [ - 187, - 409 + 200, + 596 ] }, - "description": "initialize references provider; store document conversion callbacks" + "description": "initialize reference search dependencies" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.reportReferences", - "name": "ReferencesProvider.reportReferences", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesProvider.reportReferences", + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.addReferencesToResult", + "name": "ReferencesProvider.addReferencesToResult", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesProvider.addReferencesToResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "reportReferences", + "func_name": "addReferencesToResult", "line_range": [ - 201, - 314 + 348, + 351 ], "class_name": "ReferencesProvider" }, - "description": "gather references for symbol; search program files for references; include declaration locations when requested; report or accumulate found locations; deduplicate and return locations list; respect cancellation and memory constraints" + "description": "add file references" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.addReferencesToResult", - "name": "ReferencesProvider.addReferencesToResult", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesProvider.addReferencesToResult", + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.collectFileReferences", + "name": "ReferencesProvider.collectFileReferences", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesProvider.collectFileReferences", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "addReferencesToResult", + "func_name": "collectFileReferences", "line_range": [ - 316, - 332 + 324, + 346 + ], + "class_name": "ReferencesProvider" + }, + "description": "collect file references; discover related declarations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.collectWorkspaceReferences", + "name": "ReferencesProvider.collectWorkspaceReferences", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesProvider.collectWorkspaceReferences", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", + "func_name": "collectWorkspaceReferences", + "line_range": [ + 384, + 519 ], "class_name": "ReferencesProvider" }, - "description": "search file for symbol occurrences; aggregate found references into result" + "description": "collect workspace references; discover related declarations; avoid duplicate references; support cancellable reference search" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.getDeclarationForNode", @@ -47240,12 +47848,12 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", "func_name": "getDeclarationForNode", "line_range": [ - 334, - 375 + 521, + 562 ], "class_name": "ReferencesProvider" }, - "description": "find declarations for name node; assess global search necessity; collect symbol names and declarations; compose references result with providers" + "description": "resolve symbol declarations; determine reference search scope; collect related symbol names; create reference query" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.getDeclarationForPosition", @@ -47256,42 +47864,104 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", "func_name": "getDeclarationForPosition", "line_range": [ - 377, - 408 - ], - "class_name": "ReferencesProvider" + 564, + 595 + ], + "class_name": "ReferencesProvider" + }, + "description": "resolve declaration at position; identify reference target; create reference query" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.reportReferences", + "name": "ReferencesProvider.reportReferences", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesProvider.reportReferences", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", + "func_name": "reportReferences", + "line_range": [ + 214, + 320 + ], + "class_name": "ReferencesProvider" + }, + "description": "find symbol references; report reference locations; include declaration locations; deduplicate reference locations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesResult", + "name": "ReferencesResult", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesResult", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", + "func_name": "ReferencesResult", + "line_range": [ + 63, + 133 + ] + }, + "description": "initialize reference search context; select renameable declarations" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesResult.addResults", + "name": "ReferencesResult.addResults", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/ReferencesResult.addResults", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", + "func_name": "addResults", + "line_range": [ + 122, + 132 + ], + "class_name": "ReferencesResult" + }, + "description": "publish reference locations; store reference results" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "name": "renameProvider", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts", + "meta": { + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", + "func_name": "renameProvider", + "line_range": [ + 1, + 245 + ] }, - "description": "validate parse results and position; resolve node at source position; derive declaration from name node" + "description": "Provides rename preparation and workspace edits for Python symbols while preventing non-user-code renames" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::isVisibleOutside", - "name": "isVisibleOutside", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/referencesProvider.ts/isVisibleOutside", + "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::assertRenameTargetsAreUserCode", + "name": "assertRenameTargetsAreUserCode", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/assertRenameTargetsAreUserCode", "meta": { "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts", - "func_name": "isVisibleOutside", + "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", + "func_name": "assertRenameTargetsAreUserCode", "line_range": [ - 411, - 527 + 37, + 55 ] }, - "description": "determine symbol external visibility; use symbol lookup for visibility; require global search for external declarations; consider module and class declarations visible; treat member variables as externally visible; exclude local scopes from external visibility; recursively evaluate alias and container visibility; limit recursion depth for visibility checks; exclude type parameters from external visibility; exclude unnamed declarations from external visibility" + "description": "reject non user rename targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", - "name": "renameProvider", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::getRenameSymbolRange", + "name": "getRenameSymbolRange", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/getRenameSymbolRange", "meta": { - "type": "file", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", - "func_name": "renameProvider", + "func_name": "getRenameSymbolRange", "line_range": [ - 1, - 204 + 63, + 66 ] }, - "description": "Provides rename support: checks rename eligibility and produces workspace edits for a symbol and its references" + "description": "resolve rename symbol range" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider", @@ -47302,43 +47972,43 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", "func_name": "RenameProvider", "line_range": [ - 24, - 203 + 68, + 244 ] }, - "description": "initialize rename provider context; record target file and position; obtain parse results for file" + "description": "prepare symbol rename request" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider.canRenameSymbol", - "name": "RenameProvider.canRenameSymbol", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/RenameProvider.canRenameSymbol", + "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider._getReferenceResult", + "name": "RenameProvider._getReferenceResult", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/RenameProvider._getReferenceResult", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", - "func_name": "canRenameSymbol", + "func_name": "_getReferenceResult", "line_range": [ - 36, - 60 + 212, + 243 ], "class_name": "RenameProvider" }, - "description": "determine rename availability; compute symbol range for rename" + "description": "resolve rename target declarations; filter invalid rename targets" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider.renameSymbol", - "name": "RenameProvider.renameSymbol", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/RenameProvider.renameSymbol", + "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider.canRenameSymbol", + "name": "RenameProvider.canRenameSymbol", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/RenameProvider.canRenameSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", - "func_name": "renameSymbol", + "func_name": "canRenameSymbol", "line_range": [ - 62, - 132 + 80, + 104 ], "class_name": "RenameProvider" }, - "description": "determine rename scope mode; collect references for rename across files; construct workspace edit for rename" + "description": "validate symbol rename availability; identify rename target range" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider.getRenameSymbolMode", @@ -47349,28 +48019,28 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", "func_name": "getRenameSymbolMode", "line_range": [ - 134, - 169 + 175, + 210 ], "class_name": "RenameProvider" }, - "description": "classify rename mode by workspace and declarations" + "description": "choose rename search scope; block external symbol renames" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider._getReferenceResult", - "name": "RenameProvider._getReferenceResult", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/RenameProvider._getReferenceResult", + "id": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider.renameSymbol", + "name": "RenameProvider.renameSymbol", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/navigation requests/renameProvider.ts/RenameProvider.renameSymbol", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts", - "func_name": "_getReferenceResult", + "func_name": "renameSymbol", "line_range": [ - 171, - 202 + 106, + 173 ], "class_name": "RenameProvider" }, - "description": "resolve declaration references at position; filter out import only declarations; prepare references result for renaming" + "description": "rename symbol references; create rename edit set; protect noneditable rename targets" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::__file__", @@ -47382,10 +48052,10 @@ "func_name": "signatureHelpProvider", "line_range": [ 1, - 488 + 515 ] }, - "description": "Provides signature help for Python call sites by mapping a cursor position to callable signatures and parameter info" + "description": "Provides signature help for Python calls based on callable types and active arguments" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider", @@ -47396,107 +48066,107 @@ "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", "func_name": "SignatureHelpProvider", "line_range": [ - 49, - 468 + 56, + 495 ] }, - "description": "initialize provider state; acquire parsing and mapping resources" + "description": "initialize request context; prepare source mapping" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider.getSignatureHelp", - "name": "SignatureHelpProvider.getSignatureHelp", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider.getSignatureHelp", + "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._convert", + "name": "SignatureHelpProvider._convert", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._convert", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", - "func_name": "getSignatureHelp", + "func_name": "_convert", "line_range": [ - 68, - 70 + 165, + 255 ], "class_name": "SignatureHelpProvider" }, - "description": "produce converted signature help result" + "description": "convert signature results; select active signature; preserve user signature selection; avoid invalid parameter highlighting" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._getSignatureHelp", - "name": "SignatureHelpProvider._getSignatureHelp", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._getSignatureHelp", + "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._getDocStringFromCallNode", + "name": "SignatureHelpProvider._getDocStringFromCallNode", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._getDocStringFromCallNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", - "func_name": "_getSignatureHelp", + "func_name": "_getDocStringFromCallNode", "line_range": [ - 76, - 156 + 460, + 494 ], "class_name": "SignatureHelpProvider" }, - "description": "compute signature help results; locate call node by offset; determine active parameter index; retrieve call signatures from evaluator; suppress signature help inside string literals" + "description": "recover call documentation; resolve callable declaration" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._convert", - "name": "SignatureHelpProvider._convert", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._convert", + "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._getSignatureHelp", + "name": "SignatureHelpProvider._getSignatureHelp", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._getSignatureHelp", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", - "func_name": "_convert", + "func_name": "_getSignatureHelp", "line_range": [ - 158, - 248 + 83, + 163 ], "class_name": "SignatureHelpProvider" }, - "description": "format signature help for client; map parameters to parameter information; determine active signature and parameter; preserve user signature selection; handle active parameter capability" + "description": "locate active call; identify active argument; derive signature candidates; suppress string literal signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._makeSignature", - "name": "SignatureHelpProvider._makeSignature", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._makeSignature", + "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._getWrappedFunctionType", + "name": "SignatureHelpProvider._getWrappedFunctionType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._getWrappedFunctionType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", - "func_name": "_makeSignature", + "func_name": "_getWrappedFunctionType", "line_range": [ - 250, - 351 + 380, + 458 ], "class_name": "SignatureHelpProvider" }, - "description": "use wrapped function type when present; build signature label and parameters; extract parameter documentation for active param; retrieve function docstring for signature; format documentation according to markup" + "description": "resolve callable declaration; identify wrapped function; select callable overload" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._getWrappedFunctionType", - "name": "SignatureHelpProvider._getWrappedFunctionType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._getWrappedFunctionType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._makeSignature", + "name": "SignatureHelpProvider._makeSignature", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._makeSignature", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", - "func_name": "_getWrappedFunctionType", + "func_name": "_makeSignature", "line_range": [ - 353, - 431 + 257, + 378 ], "class_name": "SignatureHelpProvider" }, - "description": "resolve function declaration from call node; detect decorated wrapped function types; return wrapped implementation or overload" + "description": "build signature label; map displayed parameters; select active parameter; attach parameter documentation; attach signature documentation; prefer wrapped function signature" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider._getDocStringFromCallNode", - "name": "SignatureHelpProvider._getDocStringFromCallNode", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider._getDocStringFromCallNode", + "id": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts::SignatureHelpProvider.getSignatureHelp", + "name": "SignatureHelpProvider.getSignatureHelp", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/completion requests/signatureHelpProvider.ts/SignatureHelpProvider.getSignatureHelp", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts", - "func_name": "_getDocStringFromCallNode", + "func_name": "getSignatureHelp", "line_range": [ - 433, - 467 + 75, + 77 ], "class_name": "SignatureHelpProvider" }, - "description": "heuristically extract docstring from call site; resolve declaration and derive documentation parts; return docstring when available" + "description": "provide signature help" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::__file__", @@ -47513,52 +48183,6 @@ }, "description": "Indexes all externally visible symbols and aliases in a source file into structured metadata" }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::isIndexSymbolVisibleFlagSet", - "name": "isIndexSymbolVisibleFlagSet", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/symbolIndexer.ts/isIndexSymbolVisibleFlagSet", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts", - "func_name": "isIndexSymbolVisibleFlagSet", - "line_range": [ - 52, - 54 - ] - }, - "description": "check index symbol visibility flag" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::SymbolIndexer", - "name": "SymbolIndexer", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/symbolIndexer.ts/SymbolIndexer", - "meta": { - "type": "class", - "path": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts", - "func_name": "SymbolIndexer", - "line_range": [ - 67, - 93 - ] - }, - "description": "provide static indexer interface" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::SymbolIndexer.indexSymbols", - "name": "SymbolIndexer.indexSymbols", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/symbolIndexer.ts/SymbolIndexer.indexSymbols", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts", - "func_name": "indexSymbols", - "line_range": [ - 68, - 92 - ], - "class_name": "SymbolIndexer" - }, - "description": "index public symbols for stub modules; index public symbols for typed packages; index only declared public symbols for untyped packages; extract symbol metadata from parse tree; aggregate collected symbol index data; respect cancellation requests during indexing" - }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::collectSymbolIndexData", "name": "collectSymbolIndexData", @@ -47589,6 +48213,21 @@ }, "description": "determine symbol kind for declaration; skip symbols with unknown kind; compute symbol ranges and selection; collect child symbols for classes and functions; adjust range for import aliases; assemble and append index entry" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::isIndexSymbolVisibleFlagSet", + "name": "isIndexSymbolVisibleFlagSet", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/symbolIndexer.ts/isIndexSymbolVisibleFlagSet", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts", + "func_name": "isIndexSymbolVisibleFlagSet", + "line_range": [ + 52, + 54 + ] + }, + "description": "check index symbol visibility flag" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::shouldAliasBeIndexed", "name": "shouldAliasBeIndexed", @@ -47605,79 +48244,80 @@ "description": "respect alias inclusion option; allow only import statements with alias" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::__file__", - "name": "tooltipUtils", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts", + "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::SymbolIndexer", + "name": "SymbolIndexer", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/symbolIndexer.ts/SymbolIndexer", "meta": { - "type": "file", - "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "tooltipUtils", + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts", + "func_name": "SymbolIndexer", "line_range": [ - 1, - 846 + 67, + 93 ] }, - "description": "Formats and generates hover/completion tooltips and documentation text for types, functions, classes, and symbols" + "description": "provide static indexer interface" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getToolTipForType", - "name": "getToolTipForType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getToolTipForType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts::SymbolIndexer.indexSymbols", + "name": "SymbolIndexer.indexSymbols", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/symbolIndexer.ts/SymbolIndexer.indexSymbols", "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getToolTipForType", + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts", + "func_name": "indexSymbols", "line_range": [ - 62, - 112 - ] + 68, + 92 + ], + "class_name": "SymbolIndexer" }, - "description": "generate tooltip for type; resolve bound call method signatures; format function and overload tooltips; fallback to printed type representation" + "description": "index public symbols for stub modules; index public symbols for typed packages; index only declared public symbols for untyped packages; extract symbol metadata from parse tree; aggregate collected symbol index data; respect cancellation requests during indexing" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getOverloadedTooltip", - "name": "getOverloadedTooltip", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getOverloadedTooltip", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::__file__", + "name": "tooltipUtils", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts", "meta": { - "type": "function", + "type": "file", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getOverloadedTooltip", + "func_name": "tooltipUtils", "line_range": [ - 115, - 151 + 1, + 846 ] }, - "description": "format overloaded function signatures; append ellipsis to overload entries; insert spacing for long signatures" + "description": "Formats and generates hover/completion tooltips and documentation text for types, functions, classes, and symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getFunctionTooltip", - "name": "getFunctionTooltip", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getFunctionTooltip", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::_isFunctoolsWrapsDecoratedFunction", + "name": "_isFunctoolsWrapsDecoratedFunction", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/_isFunctoolsWrapsDecoratedFunction", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getFunctionTooltip", + "func_name": "_isFunctoolsWrapsDecoratedFunction", "line_range": [ - 153, - 186 + 624, + 642 ] }, - "description": "format function signature tooltip; include async def prefix when applicable; represent instantiable types as type" + "description": "detect functools wraps decoration on function" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::replaceStubEllipsisDefaultValues", - "name": "replaceStubEllipsisDefaultValues", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/replaceStubEllipsisDefaultValues", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::_isFunctoolsWrapsDecorator", + "name": "_isFunctoolsWrapsDecorator", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/_isFunctoolsWrapsDecorator", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "replaceStubEllipsisDefaultValues", + "func_name": "_isFunctoolsWrapsDecorator", "line_range": [ - 191, - 257 + 644, + 667 ] }, - "description": "substitute stub ellipsis default values; map stub parameters to implementation defaults; validate and apply safe default text" + "description": "identify functools wraps decorator nodes; support qualified and unqualified wraps forms" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::_isSafeSourceDefaultValueText", @@ -47710,94 +48350,94 @@ "description": "extract parameter name from printed text; strip star prefixes from parameter string" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getConstructorTooltip", - "name": "getConstructorTooltip", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getConstructorTooltip", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::bindFunctionToClassOrObjectToolTip", + "name": "bindFunctionToClassOrObjectToolTip", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/bindFunctionToClassOrObjectToolTip", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getConstructorTooltip", + "func_name": "bindFunctionToClassOrObjectToolTip", "line_range": [ - 284, - 310 + 790, + 809 ] }, - "description": "format constructor signature tooltip; handle overloaded constructor variants" + "description": "bind function to class or object; apply call based overload limitation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::formatSignature", - "name": "formatSignature", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/formatSignature", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::combineExpressionTypes", + "name": "combineExpressionTypes", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/combineExpressionTypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "formatSignature", + "func_name": "combineExpressionTypes", "line_range": [ - 313, - 323 + 684, + 705 ] }, - "description": "format parameter list with indentation; choose multiline or singleline signature" + "description": "combine expression types; extract inner element type from list; map range to int type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getFunctionDocStringFromType", - "name": "getFunctionDocStringFromType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getFunctionDocStringFromType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::formatSignature", + "name": "formatSignature", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/formatSignature", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getFunctionDocStringFromType", + "func_name": "formatSignature", "line_range": [ - 325, - 327 + 313, + 323 ] }, - "description": "extract function docstring text" + "description": "format parameter list with indentation; choose multiline or singleline signature" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getFunctionDocStringFromTypeInfo", - "name": "getFunctionDocStringFromTypeInfo", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getFunctionDocStringFromTypeInfo", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getAutoImportText", + "name": "getAutoImportText", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getAutoImportText", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getFunctionDocStringFromTypeInfo", + "func_name": "getAutoImportText", "line_range": [ - 335, - 345 + 669, + 682 ] }, - "description": "resolve function docstring with inheritance; return docstring source metadata" + "description": "format auto import text; append alias to import text" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getOverloadedDocStringsFromType", - "name": "getOverloadedDocStringsFromType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getOverloadedDocStringsFromType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getClassAndConstructorTypes", + "name": "getClassAndConstructorTypes", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getClassAndConstructorTypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getOverloadedDocStringsFromType", + "func_name": "getClassAndConstructorTypes", "line_range": [ - 347, - 378 + 707, + 788 ] }, - "description": "collect docstrings for overloaded functions; fallback to shared docstring for synthesized overloads" + "description": "detect class instantiation call; retrieve class type for tooltip; resolve constructor method type; exclude class parameter for constructors" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartForTypeAlias", - "name": "getDocumentationPartForTypeAlias", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getDocumentationPartForTypeAlias", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getConstructorTooltip", + "name": "getConstructorTooltip", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getConstructorTooltip", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getDocumentationPartForTypeAlias", + "func_name": "getConstructorTooltip", "line_range": [ - 380, - 416 + 284, + 310 ] }, - "description": "retrieve documentation for type alias; fallback to variable docstring when alias lacks doc; extract property function docstring" + "description": "format constructor signature tooltip; handle overloaded constructor variants" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartForType", @@ -47814,6 +48454,21 @@ }, "description": "retrieve documentation text for type" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartForTypeAlias", + "name": "getDocumentationPartForTypeAlias", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getDocumentationPartForTypeAlias", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", + "func_name": "getDocumentationPartForTypeAlias", + "line_range": [ + 380, + 416 + ] + }, + "description": "retrieve documentation for type alias; fallback to variable docstring when alias lacks doc; extract property function docstring" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartForTypeInfo", "name": "getDocumentationPartForTypeInfo", @@ -47829,6 +48484,21 @@ }, "description": "resolve documentation for modules classes and functions; bind function type to object for documentation; select overload documentation when available" }, + { + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartsForTypeAndDecl", + "name": "getDocumentationPartsForTypeAndDecl", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getDocumentationPartsForTypeAndDecl", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", + "func_name": "getDocumentationPartsForTypeAndDecl", + "line_range": [ + 556, + 568 + ] + }, + "description": "get combined documentation text" + }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartsForTypeAndDeclWithSource", "name": "getDocumentationPartsForTypeAndDeclWithSource", @@ -47845,124 +48515,124 @@ "description": "combine alias and type documentation; fallback to declaration docstring for decorated functions; resolve module documentation for aliased imports; prefer property docs for property aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getDocumentationPartsForTypeAndDecl", - "name": "getDocumentationPartsForTypeAndDecl", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getDocumentationPartsForTypeAndDecl", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getFunctionDocStringFromType", + "name": "getFunctionDocStringFromType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getFunctionDocStringFromType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getDocumentationPartsForTypeAndDecl", + "func_name": "getFunctionDocStringFromType", "line_range": [ - 556, - 568 + 325, + 327 ] }, - "description": "get combined documentation text" + "description": "extract function docstring text" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getWrappedFunctionType", - "name": "getWrappedFunctionType", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getWrappedFunctionType", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getFunctionDocStringFromTypeInfo", + "name": "getFunctionDocStringFromTypeInfo", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getFunctionDocStringFromTypeInfo", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getWrappedFunctionType", + "func_name": "getFunctionDocStringFromTypeInfo", "line_range": [ - 575, - 623 + 335, + 345 ] }, - "description": "detect functools wraps and retrieve wrapped type; return implementation type for overloaded wrap target" + "description": "resolve function docstring with inheritance; return docstring source metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::_isFunctoolsWrapsDecoratedFunction", - "name": "_isFunctoolsWrapsDecoratedFunction", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/_isFunctoolsWrapsDecoratedFunction", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getFunctionTooltip", + "name": "getFunctionTooltip", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getFunctionTooltip", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "_isFunctoolsWrapsDecoratedFunction", + "func_name": "getFunctionTooltip", "line_range": [ - 624, - 642 + 153, + 186 ] }, - "description": "detect functools wraps decoration on function" + "description": "format function signature tooltip; include async def prefix when applicable; represent instantiable types as type" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::_isFunctoolsWrapsDecorator", - "name": "_isFunctoolsWrapsDecorator", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/_isFunctoolsWrapsDecorator", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getOverloadedDocStringsFromType", + "name": "getOverloadedDocStringsFromType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getOverloadedDocStringsFromType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "_isFunctoolsWrapsDecorator", + "func_name": "getOverloadedDocStringsFromType", "line_range": [ - 644, - 667 + 347, + 378 ] }, - "description": "identify functools wraps decorator nodes; support qualified and unqualified wraps forms" + "description": "collect docstrings for overloaded functions; fallback to shared docstring for synthesized overloads" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getAutoImportText", - "name": "getAutoImportText", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getAutoImportText", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getOverloadedTooltip", + "name": "getOverloadedTooltip", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getOverloadedTooltip", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getAutoImportText", + "func_name": "getOverloadedTooltip", "line_range": [ - 669, - 682 + 115, + 151 ] }, - "description": "format auto import text; append alias to import text" + "description": "format overloaded function signatures; append ellipsis to overload entries; insert spacing for long signatures" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::combineExpressionTypes", - "name": "combineExpressionTypes", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/combineExpressionTypes", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getToolTipForType", + "name": "getToolTipForType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getToolTipForType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "combineExpressionTypes", + "func_name": "getToolTipForType", "line_range": [ - 684, - 705 + 62, + 112 ] }, - "description": "combine expression types; extract inner element type from list; map range to int type" + "description": "generate tooltip for type; resolve bound call method signatures; format function and overload tooltips; fallback to printed type representation" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getClassAndConstructorTypes", - "name": "getClassAndConstructorTypes", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getClassAndConstructorTypes", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getTypeForToolTip", + "name": "getTypeForToolTip", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getTypeForToolTip", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getClassAndConstructorTypes", + "func_name": "getTypeForToolTip", "line_range": [ - 707, - 788 + 840, + 845 ] }, - "description": "detect class instantiation call; retrieve class type for tooltip; resolve constructor method type; exclude class parameter for constructors" + "description": "obtain type for tooltip; fallback to unknown for missing type; limit overloads based on call" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::bindFunctionToClassOrObjectToolTip", - "name": "bindFunctionToClassOrObjectToolTip", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/bindFunctionToClassOrObjectToolTip", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getWrappedFunctionType", + "name": "getWrappedFunctionType", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getWrappedFunctionType", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "bindFunctionToClassOrObjectToolTip", + "func_name": "getWrappedFunctionType", "line_range": [ - 790, - 809 + 575, + 623 ] }, - "description": "bind function to class or object; apply call based overload limitation" + "description": "detect functools wraps and retrieve wrapped type; return implementation type for overloaded wrap target" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::limitOverloadBasedOnCall", @@ -47980,19 +48650,19 @@ "description": "limit overloads based on call; select overloads used for call; reduce overload set to matching alternatives" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::getTypeForToolTip", - "name": "getTypeForToolTip", - "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/getTypeForToolTip", + "id": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::replaceStubEllipsisDefaultValues", + "name": "replaceStubEllipsisDefaultValues", + "feature_path": "pyright-whole-repo/LanguageServerFeatures/Serve language service/editor feature requests/tooltipUtils.ts/replaceStubEllipsisDefaultValues", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts", - "func_name": "getTypeForToolTip", + "func_name": "replaceStubEllipsisDefaultValues", "line_range": [ - 840, - 845 + 191, + 257 ] }, - "description": "obtain type for tooltip; fallback to unknown for missing type; limit overloads based on call" + "description": "substitute stub ellipsis default values; map stub parameters to implementation defaults; validate and apply safe default text" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::__file__", @@ -48025,36 +48695,36 @@ "description": "store workspace references; configure result reporter callback; store query and cancellation token" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider.reportSymbols", - "name": "WorkspaceSymbolProvider.reportSymbols", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider.reportSymbols", + "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider._getContainerName", + "name": "WorkspaceSymbolProvider._getContainerName", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider._getContainerName", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts", - "func_name": "reportSymbols", + "func_name": "_getContainerName", "line_range": [ - 38, - 57 + 154, + 160 ], "class_name": "WorkspaceSymbolProvider" }, - "description": "scan workspaces for symbols; filter disabled or uninitialized workspaces; invoke program symbol collection; return aggregated symbol list" + "description": "compute hierarchical container name" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider.getSymbolsForDocument", - "name": "WorkspaceSymbolProvider.getSymbolsForDocument", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider.getSymbolsForDocument", + "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider._reportSymbolsForProgram", + "name": "WorkspaceSymbolProvider._reportSymbolsForProgram", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider._reportSymbolsForProgram", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts", - "func_name": "getSymbolsForDocument", + "func_name": "_reportSymbolsForProgram", "line_range": [ - 59, - 81 + 130, + 152 ], "class_name": "WorkspaceSymbolProvider" }, - "description": "extract symbols from document; index symbols for file; build symbol information list" + "description": "prevent empty query searches; scan program source files for symbols; filter non user code files; report document symbols; monitor and handle memory usage" }, { "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider.appendWorkspaceSymbolsRecursive", @@ -48073,36 +48743,36 @@ "description": "check cancellation token periodically; traverse symbol tree recursively; exclude alias symbols; match symbols to query pattern; append matching symbols to list; compute container name for symbols" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider._reportSymbolsForProgram", - "name": "WorkspaceSymbolProvider._reportSymbolsForProgram", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider._reportSymbolsForProgram", + "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider.getSymbolsForDocument", + "name": "WorkspaceSymbolProvider.getSymbolsForDocument", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider.getSymbolsForDocument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts", - "func_name": "_reportSymbolsForProgram", + "func_name": "getSymbolsForDocument", "line_range": [ - 130, - 152 + 59, + 81 ], "class_name": "WorkspaceSymbolProvider" }, - "description": "prevent empty query searches; scan program source files for symbols; filter non user code files; report document symbols; monitor and handle memory usage" + "description": "extract symbols from document; index symbols for file; build symbol information list" }, { - "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider._getContainerName", - "name": "WorkspaceSymbolProvider._getContainerName", - "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider._getContainerName", + "id": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts::WorkspaceSymbolProvider.reportSymbols", + "name": "WorkspaceSymbolProvider.reportSymbols", + "feature_path": "pyright-whole-repo/ParserAndBinder/Serve language service/navigation requests/workspaceSymbolProvider.ts/WorkspaceSymbolProvider.reportSymbols", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts", - "func_name": "_getContainerName", + "func_name": "reportSymbols", "line_range": [ - 154, - 160 + 38, + 57 ], "class_name": "WorkspaceSymbolProvider" }, - "description": "compute hierarchical container name" + "description": "scan workspaces for symbols; filter disabled or uninitialized workspaces; invoke program symbol collection; return aggregated symbol list" }, { "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::__file__", @@ -48114,57 +48784,25 @@ "func_name": "localize", "line_range": [ 1, - 1704 + 1690 ] }, - "description": "Localization utilities and parameterized string formatting for retrieving locale-specific message strings" + "description": "Provides locale-aware lookup and formatting for Pyright user-facing strings" }, { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::ParameterizedString", - "name": "ParameterizedString", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/ParameterizedString", + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::getLocaleFromEnv", + "name": "getLocaleFromEnv", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/getLocaleFromEnv", "meta": { - "type": "class", + "type": "function", "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "ParameterizedString", + "func_name": "getLocaleFromEnv", "line_range": [ - 28, - 42 + 136, + 169 ] }, - "description": "store format template" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::ParameterizedString.format", - "name": "ParameterizedString.format", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/ParameterizedString.format", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "format", - "line_range": [ - 31, - 37 - ], - "class_name": "ParameterizedString" - }, - "description": "format template with parameters; replace named placeholders; convert parameters to strings" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::ParameterizedString.getFormatString", - "name": "ParameterizedString.getFormatString", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/ParameterizedString.getFormatString", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "getFormatString", - "line_range": [ - 39, - 41 - ], - "class_name": "ParameterizedString" - }, - "description": "return stored format template" + "description": "resolve active locale; read editor locale; read system locale; fallback to default locale" }, { "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::getRawStringDefault", @@ -48179,22 +48817,7 @@ 91 ] }, - "description": "ensure localization initialized; detect diagnostic key; lookup raw localized string; honor force english diagnostics flag; fallback to default strings; fail on missing localized string" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::setGetRawString", - "name": "setGetRawString", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/setGetRawString", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "setGetRawString", - "line_range": [ - 97, - 101 - ] - }, - "description": "override raw string getter; return previous getter function" + "description": "initialize localized strings; resolve localized string; prefer english diagnostic text; fallback to default string; report missing localized string" }, { "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::getRawStringFromMap", @@ -48206,10 +48829,10 @@ "func_name": "getRawStringFromMap", "line_range": [ 103, - 125 + 115 ] }, - "description": "traverse nested entries by keys; retrieve final string value; use message property as fallback; return undefined when missing" + "description": "resolve localized string entry; extract localized message" }, { "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::initialize", @@ -48220,86 +48843,133 @@ "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", "func_name": "initialize", "line_range": [ - 127, - 131 + 117, + 121 ] }, - "description": "load default localization strings; determine locale from environment; load localized strings for locale" + "description": "load default strings; resolve current locale; load locale strings" }, { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::setLocaleOverride", - "name": "setLocaleOverride", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/setLocaleOverride", + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::loadDefaultStrings", + "name": "loadDefaultStrings", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/loadDefaultStrings", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "setLocaleOverride", + "func_name": "loadDefaultStrings", "line_range": [ - 136, - 141 + 171, + 178 ] }, - "description": "set locale override; normalize locale string; force localized strings reload" + "description": "load default strings; report missing default strings" }, { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::setForceEnglishDiagnostics", - "name": "setForceEnglishDiagnostics", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/setForceEnglishDiagnostics", + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::loadStringsForLocale", + "name": "loadStringsForLocale", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/loadStringsForLocale", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "setForceEnglishDiagnostics", + "func_name": "loadStringsForLocale", "line_range": [ - 143, - 145 + 180, + 202 ] }, - "description": "set force english diagnostics" + "description": "resolve locale override strings; fallback to base locale" }, { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::getLocaleFromEnv", - "name": "getLocaleFromEnv", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/getLocaleFromEnv", + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::ParameterizedString", + "name": "ParameterizedString", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/ParameterizedString", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", + "func_name": "ParameterizedString", + "line_range": [ + 28, + 42 + ] + }, + "description": "store template text" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::ParameterizedString.format", + "name": "ParameterizedString.format", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/ParameterizedString.format", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", + "func_name": "format", + "line_range": [ + 31, + 37 + ], + "class_name": "ParameterizedString" + }, + "description": "render parameterized text; substitute named values" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::ParameterizedString.getFormatString", + "name": "ParameterizedString.getFormatString", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/ParameterizedString.getFormatString", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", + "func_name": "getFormatString", + "line_range": [ + 39, + 41 + ], + "class_name": "ParameterizedString" + }, + "description": "retrieve template text" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::setForceEnglishDiagnostics", + "name": "setForceEnglishDiagnostics", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/setForceEnglishDiagnostics", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "getLocaleFromEnv", + "func_name": "setForceEnglishDiagnostics", "line_range": [ - 147, - 184 + 132, + 134 ] }, - "description": "respect locale override; parse embedded localization config; read language environment variables; normalize locale string and return; fallback to default locale" + "description": "set english diagnostic preference" }, { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::loadDefaultStrings", - "name": "loadDefaultStrings", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/loadDefaultStrings", + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::setGetRawString", + "name": "setGetRawString", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/setGetRawString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "loadDefaultStrings", + "func_name": "setGetRawString", "line_range": [ - 186, - 193 + 97, + 101 ] }, - "description": "retrieve default locale strings; log error when missing default strings; return empty lookup on failure" + "description": "replace string lookup; return previous lookup" }, { - "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::loadStringsForLocale", - "name": "loadStringsForLocale", - "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/loadStringsForLocale", + "id": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::setLocaleOverride", + "name": "setLocaleOverride", + "feature_path": "pyright-whole-repo/DiagnosticsAndConfiguration/Manage shared helpers/utility conversion code/localize.ts/setLocaleOverride", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/localization/localize.ts", - "func_name": "loadStringsForLocale", + "func_name": "setLocaleOverride", "line_range": [ - 195, - 223 + 126, + 130 ] }, - "description": "return empty when locale missing; normalize locale string; skip loading for default locale; lookup exact locale override; fallback to base language locale; return empty when no override" + "description": "set locale override; invalidate localized strings" }, { "id": "packages/pyright/packages/pyright-internal/src/nodeMain.ts::__file__", @@ -48347,34 +49017,34 @@ "description": "Starts and configures the Pyright language server in Node, initializing deps and handling main vs worker threads" }, { - "id": "packages/pyright/packages/pyright-internal/src/nodeServer.ts::run", - "name": "run", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/nodeServer.ts/run", + "id": "packages/pyright/packages/pyright-internal/src/nodeServer.ts::getConnectionOptions", + "name": "getConnectionOptions", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/nodeServer.ts/getConnectionOptions", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/nodeServer.ts", - "func_name": "run", + "func_name": "getConnectionOptions", "line_range": [ - 16, - 24 + 26, + 28 ] }, - "description": "initialize required runtime dependencies; choose execution path by thread role; start server connection using derived options; execute background tasks in worker thread" + "description": "compute connection configuration options; derive cancellation strategy from arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/nodeServer.ts::getConnectionOptions", - "name": "getConnectionOptions", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/nodeServer.ts/getConnectionOptions", + "id": "packages/pyright/packages/pyright-internal/src/nodeServer.ts::run", + "name": "run", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/nodeServer.ts/run", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/nodeServer.ts", - "func_name": "getConnectionOptions", + "func_name": "run", "line_range": [ - 26, - 28 + 16, + 24 ] }, - "description": "compute connection configuration options; derive cancellation strategy from arguments" + "description": "initialize required runtime dependencies; choose execution path by thread role; start server connection using derived options; execute background tasks in worker thread" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::__file__", @@ -48392,94 +49062,79 @@ "description": "Classifies Unicode characters and provides fast lookup helpers for identifier tokenization" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isIdentifierStartChar", - "name": "isIdentifierStartChar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isIdentifierStartChar", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isIdentifierStartChar", - "line_range": [ - 45, - 64 - ] - }, - "description": "determine identifier start char; recognize surrogate pair start char" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isIdentifierChar", - "name": "isIdentifierChar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isIdentifierChar", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_buildIdentifierLookupTable", + "name": "_buildIdentifierLookupTable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_buildIdentifierLookupTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isIdentifierChar", + "func_name": "_buildIdentifierLookupTable", "line_range": [ - 66, - 88 + 248, + 282 ] }, - "description": "determine identifier char; recognize surrogate pair identifier char" + "description": "construct identifier lookup tables" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isSurrogateChar", - "name": "isSurrogateChar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isSurrogateChar", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_buildIdentifierLookupTableFromSurrogateRangeTable", + "name": "_buildIdentifierLookupTableFromSurrogateRangeTable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_buildIdentifierLookupTableFromSurrogateRangeTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isSurrogateChar", + "func_name": "_buildIdentifierLookupTableFromSurrogateRangeTable", "line_range": [ - 90, - 102 + 227, + 245 ] }, - "description": "detect surrogate identifier marker" + "description": "build surrogate based identifier category map" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isWhiteSpace", - "name": "isWhiteSpace", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isWhiteSpace", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_buildIdentifierLookupTableFromUnicodeRangeTable", + "name": "_buildIdentifierLookupTableFromUnicodeRangeTable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_buildIdentifierLookupTableFromUnicodeRangeTable", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isWhiteSpace", + "func_name": "_buildIdentifierLookupTableFromUnicodeRangeTable", "line_range": [ - 104, - 106 + 194, + 225 ] }, - "description": "recognize horizontal whitespace characters" + "description": "build identifier category map from unicode ranges" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isLineBreak", - "name": "isLineBreak", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isLineBreak", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_lookUpSurrogate", + "name": "_lookUpSurrogate", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_lookUpSurrogate", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isLineBreak", + "func_name": "_lookUpSurrogate", "line_range": [ - 108, - 110 + 132, + 143 ] }, - "description": "recognize line break characters" + "description": "resolve surrogate pair character category" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isNumber", - "name": "isNumber", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isNumber", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isBinary", + "name": "isBinary", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isBinary", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isNumber", + "func_name": "isBinary", "line_range": [ - 112, - 114 + 128, + 130 ] }, - "description": "identify decimal digit or separator" + "description": "recognize binary digit or separator" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isDecimal", @@ -48512,124 +49167,203 @@ "description": "recognize hexadecimal digit or separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isOctal", - "name": "isOctal", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isOctal", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isIdentifierChar", + "name": "isIdentifierChar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isIdentifierChar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isOctal", + "func_name": "isIdentifierChar", "line_range": [ - 124, - 126 + 66, + 88 ] }, - "description": "recognize octal digit or separator" + "description": "determine identifier char; recognize surrogate pair identifier char" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isBinary", - "name": "isBinary", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isBinary", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isIdentifierStartChar", + "name": "isIdentifierStartChar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isIdentifierStartChar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "isBinary", + "func_name": "isIdentifierStartChar", "line_range": [ - 128, - 130 + 45, + 64 ] }, - "description": "recognize binary digit or separator" + "description": "determine identifier start char; recognize surrogate pair start char" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_lookUpSurrogate", - "name": "_lookUpSurrogate", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_lookUpSurrogate", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isLineBreak", + "name": "isLineBreak", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isLineBreak", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "_lookUpSurrogate", + "func_name": "isLineBreak", "line_range": [ - 132, - 143 + 108, + 110 ] }, - "description": "resolve surrogate pair character category" + "description": "recognize line break characters" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_buildIdentifierLookupTableFromUnicodeRangeTable", - "name": "_buildIdentifierLookupTableFromUnicodeRangeTable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_buildIdentifierLookupTableFromUnicodeRangeTable", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isNumber", + "name": "isNumber", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isNumber", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "_buildIdentifierLookupTableFromUnicodeRangeTable", + "func_name": "isNumber", "line_range": [ - 194, - 225 + 112, + 114 ] }, - "description": "build identifier category map from unicode ranges" + "description": "identify decimal digit or separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_buildIdentifierLookupTableFromSurrogateRangeTable", - "name": "_buildIdentifierLookupTableFromSurrogateRangeTable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_buildIdentifierLookupTableFromSurrogateRangeTable", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isOctal", + "name": "isOctal", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isOctal", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "_buildIdentifierLookupTableFromSurrogateRangeTable", + "func_name": "isOctal", "line_range": [ - 227, - 245 + 124, + 126 ] }, - "description": "build surrogate based identifier category map" + "description": "recognize octal digit or separator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::_buildIdentifierLookupTable", - "name": "_buildIdentifierLookupTable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/_buildIdentifierLookupTable", + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isSurrogateChar", + "name": "isSurrogateChar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isSurrogateChar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", - "func_name": "_buildIdentifierLookupTable", + "func_name": "isSurrogateChar", "line_range": [ - 248, - 282 + 90, + 102 + ] + }, + "description": "detect surrogate identifier marker" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/characters.ts::isWhiteSpace", + "name": "isWhiteSpace", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characters.ts/isWhiteSpace", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/parser/characters.ts", + "func_name": "isWhiteSpace", + "line_range": [ + 104, + 106 + ] + }, + "description": "recognize horizontal whitespace characters" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::__file__", + "name": "characterStream", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts", + "meta": { + "type": "file", + "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", + "func_name": "characterStream", + "line_range": [ + 1, + 167 + ] + }, + "description": "Provides a character stream for inspecting and advancing through text used by parsers and tokenizers" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream", + "name": "CharacterStream", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream", + "meta": { + "type": "class", + "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", + "func_name": "CharacterStream", + "line_range": [ + 16, + 166 ] }, - "description": "construct identifier lookup tables" + "description": "initialize character stream state" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream._checkBounds", + "name": "CharacterStream._checkBounds", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream._checkBounds", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", + "func_name": "_checkBounds", + "line_range": [ + 154, + 165 + ], + "class_name": "CharacterStream" + }, + "description": "validate and normalize stream bounds" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.advance", + "name": "CharacterStream.advance", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.advance", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", + "func_name": "advance", + "line_range": [ + 76, + 78 + ], + "class_name": "CharacterStream" + }, + "description": "adjust position by offset" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::__file__", - "name": "characterStream", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts", + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.charCodeAt", + "name": "CharacterStream.charCodeAt", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.charCodeAt", "meta": { - "type": "file", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "characterStream", + "func_name": "charCodeAt", "line_range": [ - 1, - 167 - ] + 150, + 152 + ], + "class_name": "CharacterStream" }, - "description": "Provides a character stream for inspecting and advancing through text used by parsers and tokenizers" + "description": "get character code at index" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream", - "name": "CharacterStream", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream", + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.getCurrentChar", + "name": "CharacterStream.getCurrentChar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.getCurrentChar", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "CharacterStream", + "func_name": "getCurrentChar", "line_range": [ - 16, - 166 - ] + 63, + 65 + ], + "class_name": "CharacterStream" }, - "description": "initialize character stream state" + "description": "return current character code" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.getText", @@ -48648,20 +49382,36 @@ "description": "retrieve underlying text" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.getCurrentChar", - "name": "CharacterStream.getCurrentChar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.getCurrentChar", + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.isAtLineBreak", + "name": "CharacterStream.isAtLineBreak", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.isAtLineBreak", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "getCurrentChar", + "func_name": "isAtLineBreak", "line_range": [ - 63, - 65 + 95, + 97 ], "class_name": "CharacterStream" }, - "description": "return current character code" + "description": "check current line break" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.isAtWhiteSpace", + "name": "CharacterStream.isAtWhiteSpace", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.isAtWhiteSpace", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", + "func_name": "isAtWhiteSpace", + "line_range": [ + 91, + 93 + ], + "class_name": "CharacterStream" + }, + "description": "check current whitespace character" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.isEndOfStream", @@ -48695,22 +49445,6 @@ }, "description": "peek ahead character code" }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.advance", - "name": "CharacterStream.advance", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.advance", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "advance", - "line_range": [ - 76, - 78 - ], - "class_name": "CharacterStream" - }, - "description": "adjust position by offset" - }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.moveNext", "name": "CharacterStream.moveNext", @@ -48727,38 +49461,6 @@ }, "description": "advance to next character" }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.isAtWhiteSpace", - "name": "CharacterStream.isAtWhiteSpace", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.isAtWhiteSpace", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "isAtWhiteSpace", - "line_range": [ - 91, - 93 - ], - "class_name": "CharacterStream" - }, - "description": "check current whitespace character" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.isAtLineBreak", - "name": "CharacterStream.isAtLineBreak", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.isAtLineBreak", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "isAtLineBreak", - "line_range": [ - 95, - 97 - ], - "class_name": "CharacterStream" - }, - "description": "check current line break" - }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.skipLineBreak", "name": "CharacterStream.skipLineBreak", @@ -48775,22 +49477,6 @@ }, "description": "skip line break sequence" }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.skipWhitespace", - "name": "CharacterStream.skipWhitespace", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.skipWhitespace", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "skipWhitespace", - "line_range": [ - 110, - 136 - ], - "class_name": "CharacterStream" - }, - "description": "skip consecutive whitespace characters" - }, { "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.skipToEol", "name": "CharacterStream.skipToEol", @@ -48824,36 +49510,20 @@ "description": "advance to next whitespace" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.charCodeAt", - "name": "CharacterStream.charCodeAt", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.charCodeAt", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "charCodeAt", - "line_range": [ - 150, - 152 - ], - "class_name": "CharacterStream" - }, - "description": "get character code at index" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream._checkBounds", - "name": "CharacterStream._checkBounds", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream._checkBounds", + "id": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts::CharacterStream.skipWhitespace", + "name": "CharacterStream.skipWhitespace", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/characterStream.ts/CharacterStream.skipWhitespace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/characterStream.ts", - "func_name": "_checkBounds", + "func_name": "skipWhitespace", "line_range": [ - 154, - 165 + 110, + 136 ], "class_name": "CharacterStream" }, - "description": "validate and normalize stream bounds" + "description": "skip consecutive whitespace characters" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::__file__", @@ -48871,34 +49541,34 @@ "description": "Parse node types, enums, and helper functions for representing and manipulating Python AST nodes" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::getNextNodeId", - "name": "getNextNodeId", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseNodes.ts/getNextNodeId", + "id": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::extendRange", + "name": "extendRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseNodes.ts/extendRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts", - "func_name": "getNextNodeId", + "func_name": "extendRange", "line_range": [ - 152, - 154 + 156, + 162 ] }, - "description": "generate unique node id" + "description": "extend node text range" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::extendRange", - "name": "extendRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseNodes.ts/extendRange", + "id": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::getNextNodeId", + "name": "getNextNodeId", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parseNodes.ts/getNextNodeId", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts", - "func_name": "extendRange", + "func_name": "getNextNodeId", "line_range": [ - 156, - 162 + 152, + 154 ] }, - "description": "extend node text range" + "description": "generate unique node id" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::isExpressionNode", @@ -48940,10 +49610,10 @@ "func_name": "parser", "line_range": [ 1, - 5465 + 5474 ] }, - "description": "Parses Python source tokens into an abstract syntax tree and reports diagnostics" + "description": "Parses Python token streams into AST nodes and parser diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::ParseOptions", @@ -48958,7 +49628,7 @@ 184 ] }, - "description": "initialize parse options; mark file as not stub; set default python version; disable invalid string escape reporting; disable skipping function and class body; disable notebook mode parsing; disable errors for parsed string contents" + "description": "initialize parser option defaults" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser", @@ -48970,218 +49640,201 @@ "func_name": "Parser", "line_range": [ 233, - 5464 + 5473 ] - }, - "description": "initialize parser state" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser.parseSourceFile", - "name": "Parser.parseSourceFile", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser.parseSourceFile", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "parseSourceFile", - "line_range": [ - 259, - 309 - ], - "class_name": "Parser" - }, - "description": "parse source file" + } }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser.parseTextExpression", - "name": "Parser.parseTextExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser.parseTextExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._addSyntaxError", + "name": "Parser._addSyntaxError", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._addSyntaxError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "parseTextExpression", + "func_name": "_addSyntaxError", "line_range": [ - 338, - 389 + 5463, + 5472 ], "class_name": "Parser" }, - "description": "parse text expression" + "description": "record syntax diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._startNewParse", - "name": "Parser._startNewParse", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._startNewParse", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._atEof", + "name": "Parser._atEof", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._atEof", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_startNewParse", + "func_name": "_atEof", "line_range": [ - 391, - 415 + 5327, + 5331 ], "class_name": "Parser" }, - "description": "start new parse state" + "description": "detect input end" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseStatement", - "name": "Parser._parseStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokenIfKeyword", + "name": "Parser._consumeTokenIfKeyword", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokenIfKeyword", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseStatement", + "func_name": "_consumeTokenIfKeyword", "line_range": [ - 420, - 497 + 5424, + 5431 ], "class_name": "Parser" }, - "description": "parse statement node" + "description": "accept matching keyword" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAsyncStatement", - "name": "Parser._parseAsyncStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAsyncStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokenIfOperator", + "name": "Parser._consumeTokenIfOperator", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokenIfOperator", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseAsyncStatement", + "func_name": "_consumeTokenIfOperator", "line_range": [ - 500, - 517 + 5433, + 5440 ], "class_name": "Parser" }, - "description": "parse async statement node" + "description": "accept matching operator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseLazyImportStatement", - "name": "Parser._parseLazyImportStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseLazyImportStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokenIfType", + "name": "Parser._consumeTokenIfType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokenIfType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseLazyImportStatement", + "func_name": "_consumeTokenIfType", "line_range": [ - 520, - 546 + 5420, + 5422 ], "class_name": "Parser" }, - "description": "parse lazy import statement" + "description": "accept matching token" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeAliasStatement", - "name": "Parser._parseTypeAliasStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeAliasStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokensUntilType", + "name": "Parser._consumeTokensUntilType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokensUntilType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTypeAliasStatement", + "func_name": "_consumeTokensUntilType", "line_range": [ - 549, - 581 + 5397, + 5410 ], "class_name": "Parser" }, - "description": "parse type alias statement" + "description": "skip tokens until terminator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeParameterList", - "name": "Parser._parseTypeParameterList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeParameterList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._createBinaryOperationNode", + "name": "Parser._createBinaryOperationNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._createBinaryOperationNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTypeParameterList", + "func_name": "_createBinaryOperationNode", "line_range": [ - 584, - 621 + 5105, + 5126 ], "class_name": "Parser" }, - "description": "parse type parameter list" + "description": "create binary operation expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeParameter", - "name": "Parser._parseTypeParameter", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeParameter", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._createUnaryOperationNode", + "name": "Parser._createUnaryOperationNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._createUnaryOperationNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTypeParameter", + "func_name": "_createUnaryOperationNode", "line_range": [ - 624, - 664 + 5128, + 5143 ], "class_name": "Parser" }, - "description": "parse type parameter node" + "description": "create unary operation expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseMatchStatement", - "name": "Parser._parseMatchStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseMatchStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._disallowAssignmentExpression", + "name": "Parser._disallowAssignmentExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._disallowAssignmentExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseMatchStatement", + "func_name": "_disallowAssignmentExpression", "line_range": [ - 670, - 796 + 5309, + 5316 ], "class_name": "Parser" }, - "description": "parse match statement node" + "description": "forbid assignment expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseCaseStatement", - "name": "Parser._parseCaseStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseCaseStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getKeywordToken", + "name": "Parser._getKeywordToken", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getKeywordToken", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseCaseStatement", + "func_name": "_getKeywordToken", "line_range": [ - 801, - 842 + 5442, + 5447 ], "class_name": "Parser" }, - "description": "parse case statement node" + "description": "read required keyword" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isPatternIrrefutable", - "name": "Parser._isPatternIrrefutable", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isPatternIrrefutable", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getLanguageVersion", + "name": "Parser._getLanguageVersion", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getLanguageVersion", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_isPatternIrrefutable", + "func_name": "_getLanguageVersion", "line_range": [ - 846, - 856 + 5449, + 5451 ], "class_name": "Parser" }, - "description": "determine pattern irrefutability" + "description": "read language version" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._reportDuplicatePatternCaptureTargets", - "name": "Parser._reportDuplicatePatternCaptureTargets", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._reportDuplicatePatternCaptureTargets", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getNextToken", + "name": "Parser._getNextToken", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getNextToken", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_reportDuplicatePatternCaptureTargets", + "func_name": "_getNextToken", "line_range": [ - 862, - 947 + 5318, + 5325 ], "class_name": "Parser" }, - "description": "report duplicate pattern capture targets" + "description": "read next token" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getPatternTargetNames", @@ -49197,455 +49850,439 @@ ], "class_name": "Parser" }, - "description": "get pattern target names" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternSequence", - "name": "Parser._parsePatternSequence", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternSequence", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternSequence", - "line_range": [ - 1002, - 1018 - ], - "class_name": "Parser" - }, - "description": "parse pattern sequence node" + "description": "collect pattern target names" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternAs", - "name": "Parser._parsePatternAs", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternAs", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getTokenIfIdentifier", + "name": "Parser._getTokenIfIdentifier", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getTokenIfIdentifier", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternAs", + "func_name": "_getTokenIfIdentifier", "line_range": [ - 1022, - 1093 + 5368, + 5392 ], "class_name": "Parser" }, - "description": "parse pattern as clause" + "description": "read identifier tokens" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternAtom", - "name": "Parser._parsePatternAtom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternAtom", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getTokenIfType", + "name": "Parser._getTokenIfType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getTokenIfType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternAtom", + "func_name": "_getTokenIfType", "line_range": [ - 1108, - 1226 + 5412, + 5418 ], "class_name": "Parser" }, - "description": "parse pattern atom node" + "description": "read matching token" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseClassPatternArgList", - "name": "Parser._parseClassPatternArgList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseClassPatternArgList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getTypeAnnotationCommentText", + "name": "Parser._getTypeAnnotationCommentText", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getTypeAnnotationCommentText", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseClassPatternArgList", + "func_name": "_getTypeAnnotationCommentText", "line_range": [ - 1233, - 1261 + 4840, + 4878 ], "class_name": "Parser" }, - "description": "parse class pattern argument list" + "description": "extract type annotation comments" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseClassPatternArgument", - "name": "Parser._parseClassPatternArgument", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseClassPatternArgument", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._handleExpressionParseError", + "name": "Parser._handleExpressionParseError", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._handleExpressionParseError", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseClassPatternArgument", + "func_name": "_handleExpressionParseError", "line_range": [ - 1264, - 1285 + 4179, + 4203 ], "class_name": "Parser" }, - "description": "parse class pattern argument" + "description": "report expression parse errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternLiteral", - "name": "Parser._parsePatternLiteral", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternLiteral", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isNameOrMemberAccessExpression", + "name": "Parser._isNameOrMemberAccessExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isNameOrMemberAccessExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternLiteral", + "func_name": "_isNameOrMemberAccessExpression", "line_range": [ - 1295, - 1329 + 2525, + 2533 ], "class_name": "Parser" }, - "description": "parse pattern literal node" + "description": "identify member access expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternLiteralNumber", - "name": "Parser._parsePatternLiteralNumber", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternLiteralNumber", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isNextTokenNeverExpression", + "name": "Parser._isNextTokenNeverExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isNextTokenNeverExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternLiteralNumber", + "func_name": "_isNextTokenNeverExpression", "line_range": [ - 1332, - 1368 + 5257, + 5307 ], "class_name": "Parser" }, - "description": "parse numeric pattern literal" + "description": "detect invalid expression starts" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternMapping", - "name": "Parser._parsePatternMapping", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternMapping", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isPatternIrrefutable", + "name": "Parser._isPatternIrrefutable", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isPatternIrrefutable", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternMapping", + "func_name": "_isPatternIrrefutable", "line_range": [ - 1370, - 1386 + 846, + 856 ], "class_name": "Parser" }, - "description": "parse pattern mapping node" + "description": "identify irrefutable patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternMappingItem", - "name": "Parser._parsePatternMappingItem", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternMappingItem", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isTypingAnnotation", + "name": "Parser._isTypingAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isTypingAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternMappingItem", + "func_name": "_isTypingAnnotation", "line_range": [ - 1391, - 1439 + 3655, + 3669 ], "class_name": "Parser" }, - "description": "parse mapping pattern item" + "description": "identify typing annotations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternCaptureOrValue", - "name": "Parser._parsePatternCaptureOrValue", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternCaptureOrValue", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._makeExpressionOrTuple", + "name": "Parser._makeExpressionOrTuple", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._makeExpressionOrTuple", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePatternCaptureOrValue", + "func_name": "_makeExpressionOrTuple", "line_range": [ - 1441, - 1475 + 3199, + 3228 ], "class_name": "Parser" }, - "description": "parse pattern capture or value" + "description": "build tuple expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseIfStatement", - "name": "Parser._parseIfStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseIfStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._makeStringNode", + "name": "Parser._makeStringNode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._makeStringNode", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseIfStatement", + "func_name": "_makeStringNode", "line_range": [ - 1480, - 1499 + 4834, + 4838 ], "class_name": "Parser" }, - "description": "parse if statement node" + "description": "create string expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExceptSuite", - "name": "Parser._parseExceptSuite", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExceptSuite", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAndTest", + "name": "Parser._parseAndTest", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAndTest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseExceptSuite", + "func_name": "_parseAndTest", "line_range": [ - 1501, - 1512 + 3416, + 3432 ], "class_name": "Parser" }, - "description": "parse except suite block" + "description": "parse logical conjunction expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseLoopSuite", - "name": "Parser._parseLoopSuite", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseLoopSuite", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArgList", + "name": "Parser._parseArgList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArgList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseLoopSuite", + "func_name": "_parseArgList", "line_range": [ - 1514, - 1543 + 3997, + 4039 ], "class_name": "Parser" }, - "description": "parse loop suite block" + "description": "parse argument lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSuite", - "name": "Parser._parseSuite", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSuite", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArgument", + "name": "Parser._parseArgument", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArgument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseSuite", + "func_name": "_parseArgument", "line_range": [ - 1546, - 1699 + 4045, + 4083 ], "class_name": "Parser" }, - "description": "parse suite block" + "description": "parse call arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseForStatement", - "name": "Parser._parseForStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseForStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArithmeticExpression", + "name": "Parser._parseArithmeticExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArithmeticExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseForStatement", - "line_range": [ - 1702, - 1768 + "func_name": "_parseArithmeticExpression", + "line_range": [ + 3573, + 3594 ], "class_name": "Parser" }, - "description": "parse for statement node" + "description": "parse arithmetic expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseComprehension", - "name": "Parser._tryParseComprehension", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseComprehension", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArithmeticFactor", + "name": "Parser._parseArithmeticFactor", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArithmeticFactor", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_tryParseComprehension", + "func_name": "_parseArithmeticFactor", "line_range": [ - 1771, - 1804 + 3624, + 3649 ], "class_name": "Parser" }, - "description": "attempt parse comprehension expression" + "description": "parse arithmetic factors" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseCompForStatement", - "name": "Parser._tryParseCompForStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseCompForStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArithmeticTerm", + "name": "Parser._parseArithmeticTerm", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArithmeticTerm", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_tryParseCompForStatement", + "func_name": "_parseArithmeticTerm", "line_range": [ - 1807, - 1849 + 3597, + 3620 ], "class_name": "Parser" }, - "description": "attempt parse comprehension for clause" + "description": "parse arithmetic terms" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseCompIfStatement", - "name": "Parser._tryParseCompIfStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseCompIfStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAssertStatement", + "name": "Parser._parseAssertStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAssertStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_tryParseCompIfStatement", + "func_name": "_parseAssertStatement", "line_range": [ - 1853, - 1866 + 2978, + 2992 ], "class_name": "Parser" }, - "description": "attempt parse comprehension if clause" + "description": "parse assertion statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseWhileStatement", - "name": "Parser._parseWhileStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseWhileStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAssignmentExpression", + "name": "Parser._parseAssignmentExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAssignmentExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseWhileStatement", + "func_name": "_parseAssignmentExpression", "line_range": [ - 1869, - 1885 + 3368, + 3394 ], "class_name": "Parser" }, - "description": "parse while statement node" + "description": "parse assignment expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTryStatement", - "name": "Parser._parseTryStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTryStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAsyncStatement", + "name": "Parser._parseAsyncStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAsyncStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTryStatement", + "func_name": "_parseAsyncStatement", "line_range": [ - 1893, - 2025 + 500, + 517 ], "class_name": "Parser" }, - "description": "parse try statement node" + "description": "parse asynchronous statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFunctionDef", - "name": "Parser._parseFunctionDef", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFunctionDef", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAtom", + "name": "Parser._parseAtom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAtom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFunctionDef", + "func_name": "_parseAtom", "line_range": [ - 2029, - 2132 + 4089, + 4173 ], "class_name": "Parser" }, - "description": "parse function definition node" + "description": "parse atomic expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseVarArgsList", - "name": "Parser._parseVarArgsList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseVarArgsList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAtomExpression", + "name": "Parser._parseAtomExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAtomExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseVarArgsList", + "func_name": "_parseAtomExpression", "line_range": [ - 2146, - 2265 + 3673, + 3825 ], "class_name": "Parser" }, - "description": "parse varargs list node" + "description": "parse primary expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseParameter", - "name": "Parser._parseParameter", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseParameter", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBitwiseAndExpression", + "name": "Parser._parseBitwiseAndExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBitwiseAndExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseParameter", + "func_name": "_parseBitwiseAndExpression", "line_range": [ - 2267, - 2338 + 3534, + 3550 ], "class_name": "Parser" }, - "description": "parse function parameter node" + "description": "parse bitwise conjunction expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseWithStatement", - "name": "Parser._parseWithStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseWithStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBitwiseOrExpression", + "name": "Parser._parseBitwiseOrExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBitwiseOrExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseWithStatement", + "func_name": "_parseBitwiseOrExpression", "line_range": [ - 2343, - 2437 + 3496, + 3512 ], "class_name": "Parser" }, - "description": "parse with statement node" + "description": "parse bitwise disjunction expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseWithItem", - "name": "Parser._parseWithItem", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseWithItem", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBitwiseXorExpression", + "name": "Parser._parseBitwiseXorExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBitwiseXorExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseWithItem", + "func_name": "_parseBitwiseXorExpression", "line_range": [ - 2440, - 2451 + 3515, + 3531 ], "class_name": "Parser" }, - "description": "parse with statement item" + "description": "parse bitwise exclusive expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDecorated", - "name": "Parser._parseDecorated", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDecorated", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBreakStatement", + "name": "Parser._parseBreakStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBreakStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseDecorated", + "func_name": "_parseBreakStatement", "line_range": [ - 2455, - 2488 + 2593, + 2607 ], "class_name": "Parser" }, - "description": "parse decorated definition node" + "description": "parse loop break statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDecorator", - "name": "Parser._parseDecorator", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDecorator", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseCaseStatement", + "name": "Parser._parseCaseStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseCaseStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseDecorator", + "func_name": "_parseCaseStatement", "line_range": [ - 2491, - 2523 + 801, + 842 ], "class_name": "Parser" }, - "description": "parse decorator expression node" + "description": "parse match case clauses" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isNameOrMemberAccessExpression", - "name": "Parser._isNameOrMemberAccessExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isNameOrMemberAccessExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseChainAssignments", + "name": "Parser._parseChainAssignments", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseChainAssignments", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_isNameOrMemberAccessExpression", + "func_name": "_parseChainAssignments", "line_range": [ - 2525, - 2533 + 4650, + 4704 ], "class_name": "Parser" }, - "description": "determine name or member access" + "description": "parse chained assignments" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseClassDef", @@ -49661,39 +50298,55 @@ ], "class_name": "Parser" }, - "description": "parse class definition node" + "description": "parse class declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePassStatement", - "name": "Parser._parsePassStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePassStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseClassPatternArgList", + "name": "Parser._parseClassPatternArgList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseClassPatternArgList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parsePassStatement", + "func_name": "_parseClassPatternArgList", "line_range": [ - 2589, - 2591 + 1233, + 1261 ], "class_name": "Parser" }, - "description": "parse pass statement node" + "description": "parse class pattern arguments" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBreakStatement", - "name": "Parser._parseBreakStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBreakStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseClassPatternArgument", + "name": "Parser._parseClassPatternArgument", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseClassPatternArgument", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseBreakStatement", + "func_name": "_parseClassPatternArgument", "line_range": [ - 2593, - 2607 + 1264, + 1285 + ], + "class_name": "Parser" + }, + "description": "parse class pattern argument" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseComparison", + "name": "Parser._parseComparison", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseComparison", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", + "func_name": "_parseComparison", + "line_range": [ + 3447, + 3493 ], "class_name": "Parser" }, - "description": "parse break statement node" + "description": "parse comparison expressions" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseContinueStatement", @@ -49709,55 +50362,71 @@ ], "class_name": "Parser" }, - "description": "parse continue statement node" + "description": "parse loop continue statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseReturnStatement", - "name": "Parser._parseReturnStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseReturnStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDecorated", + "name": "Parser._parseDecorated", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDecorated", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseReturnStatement", + "func_name": "_parseDecorated", "line_range": [ - 2626, - 2655 + 2455, + 2488 ], "class_name": "Parser" }, - "description": "parse return statement node" + "description": "parse decorated declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFromStatement", - "name": "Parser._parseFromStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFromStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDecorator", + "name": "Parser._parseDecorator", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDecorator", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFromStatement", + "func_name": "_parseDecorator", "line_range": [ - 2661, - 2783 + 2491, + 2523 ], "class_name": "Parser" }, - "description": "parse from import statement" + "description": "parse declaration decorators" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseImportStatement", - "name": "Parser._parseImportStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseImportStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDelStatement", + "name": "Parser._parseDelStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDelStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseImportStatement", + "func_name": "_parseDelStatement", "line_range": [ - 2788, - 2859 + 2995, + 3011 + ], + "class_name": "Parser" + }, + "description": "parse deletion statements" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDictionaryOrSetAtom", + "name": "Parser._parseDictionaryOrSetAtom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDictionaryOrSetAtom", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", + "func_name": "_parseDictionaryOrSetAtom", + "line_range": [ + 4342, + 4523 ], "class_name": "Parser" }, - "description": "parse import statement node" + "description": "parse mapping set literals" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDottedModuleName", @@ -49773,375 +50442,391 @@ ], "class_name": "Parser" }, - "description": "parse dotted module name" + "description": "parse qualified module names" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseGlobalStatement", - "name": "Parser._parseGlobalStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseGlobalStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExceptSuite", + "name": "Parser._parseExceptSuite", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExceptSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseGlobalStatement", + "func_name": "_parseExceptSuite", "line_range": [ - 2908, - 2920 + 1501, + 1512 ], "class_name": "Parser" }, - "description": "parse global statement node" + "description": "parse exception handler suites" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseNonlocalStatement", - "name": "Parser._parseNonlocalStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseNonlocalStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpression", + "name": "Parser._parseExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseNonlocalStatement", + "func_name": "_parseExpression", "line_range": [ - 2922, - 2934 + 3315, + 3323 ], "class_name": "Parser" }, - "description": "parse nonlocal statement node" + "description": "parse expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseNameList", - "name": "Parser._parseNameList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseNameList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionList", + "name": "Parser._parseExpressionList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseNameList", + "func_name": "_parseExpressionList", "line_range": [ - 2936, - 2954 + 3279, + 3281 ], "class_name": "Parser" }, - "description": "parse name list node" + "description": "parse expression lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseRaiseStatement", - "name": "Parser._parseRaiseStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseRaiseStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionListAsPossibleTuple", + "name": "Parser._parseExpressionListAsPossibleTuple", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionListAsPossibleTuple", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseRaiseStatement", + "func_name": "_parseExpressionListAsPossibleTuple", "line_range": [ - 2958, - 2975 + 3230, + 3245 ], "class_name": "Parser" }, - "description": "parse raise statement node" + "description": "parse tuple expression candidates" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAssertStatement", - "name": "Parser._parseAssertStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAssertStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionListGeneric", + "name": "Parser._parseExpressionListGeneric", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionListGeneric", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseAssertStatement", + "func_name": "_parseExpressionListGeneric", "line_range": [ - 2978, - 2992 + 4525, + 4560 ], "class_name": "Parser" }, - "description": "parse assert statement node" + "description": "parse generic expression lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDelStatement", - "name": "Parser._parseDelStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDelStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionStatement", + "name": "Parser._parseExpressionStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseDelStatement", + "func_name": "_parseExpressionStatement", "line_range": [ - 2995, - 3011 + 4568, + 4648 ], "class_name": "Parser" }, - "description": "parse del statement node" + "description": "parse expression statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseYieldExpression", - "name": "Parser._parseYieldExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseYieldExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFormatString", + "name": "Parser._parseFormatString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFormatString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseYieldExpression", + "func_name": "_parseFormatString", "line_range": [ - 3015, - 3038 + 5044, + 5103 ], "class_name": "Parser" }, - "description": "parse yield expression node" + "description": "parse format string expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseYieldExpression", - "name": "Parser._tryParseYieldExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseYieldExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseForStatement", + "name": "Parser._parseForStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseForStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_tryParseYieldExpression", + "func_name": "_parseForStatement", "line_range": [ - 3040, - 3046 + 1702, + 1768 ], "class_name": "Parser" }, - "description": "attempt parse yield expression" + "description": "parse iteration statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSimpleStatement", - "name": "Parser._parseSimpleStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSimpleStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFromStatement", + "name": "Parser._parseFromStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFromStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseSimpleStatement", + "func_name": "_parseFromStatement", "line_range": [ - 3049, - 3109 + 2661, + 2783 ], "class_name": "Parser" }, - "description": "parse simple statement group" + "description": "parse selective import statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSmallStatement", - "name": "Parser._parseSmallStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSmallStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFStringFormatString", + "name": "Parser._parseFStringFormatString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFStringFormatString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseSmallStatement", + "func_name": "_parseFStringFormatString", "line_range": [ - 3115, - 3197 + 5011, + 5042 ], "class_name": "Parser" }, - "description": "parse small statement node" + "description": "parse interpolated string formats" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._makeExpressionOrTuple", - "name": "Parser._makeExpressionOrTuple", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._makeExpressionOrTuple", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFStringReplacementField", + "name": "Parser._parseFStringReplacementField", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFStringReplacementField", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_makeExpressionOrTuple", + "func_name": "_parseFStringReplacementField", "line_range": [ - 3199, - 3228 + 4939, + 5009 ], "class_name": "Parser" }, - "description": "construct expression or tuple node" + "description": "parse interpolated string fields" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionListAsPossibleTuple", - "name": "Parser._parseExpressionListAsPossibleTuple", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionListAsPossibleTuple", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFunctionDef", + "name": "Parser._parseFunctionDef", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFunctionDef", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseExpressionListAsPossibleTuple", + "func_name": "_parseFunctionDef", "line_range": [ - 3230, - 3245 + 2029, + 2132 ], "class_name": "Parser" }, - "description": "parse expression list as tuple" + "description": "parse function declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestListAsExpression", - "name": "Parser._parseTestListAsExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestListAsExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFunctionTypeAnnotation", + "name": "Parser._parseFunctionTypeAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFunctionTypeAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestListAsExpression", + "func_name": "_parseFunctionTypeAnnotation", "line_range": [ - 3247, - 3260 + 4706, + 4757 ], "class_name": "Parser" }, - "description": "parse test list as expression" + "description": "parse function type annotations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestOrStarListAsExpression", - "name": "Parser._parseTestOrStarListAsExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestOrStarListAsExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFunctionTypeAnnotationComment", + "name": "Parser._parseFunctionTypeAnnotationComment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFunctionTypeAnnotationComment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestOrStarListAsExpression", + "func_name": "_parseFunctionTypeAnnotationComment", "line_range": [ - 3262, - 3277 + 4910, + 4937 ], "class_name": "Parser" }, - "description": "parse test or star list expression" + "description": "parse function annotation comments" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionList", - "name": "Parser._parseExpressionList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseGlobalStatement", + "name": "Parser._parseGlobalStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseGlobalStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseExpressionList", + "func_name": "_parseGlobalStatement", "line_range": [ - 3279, - 3281 + 2908, + 2920 ], "class_name": "Parser" }, - "description": "parse expression list node" + "description": "parse global declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestExpressionList", - "name": "Parser._parseTestExpressionList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestExpressionList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseIfStatement", + "name": "Parser._parseIfStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseIfStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestExpressionList", + "func_name": "_parseIfStatement", "line_range": [ - 3284, - 3286 + 1480, + 1499 ], "class_name": "Parser" }, - "description": "parse test expression list node" + "description": "parse conditional statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestOrStarExpressionList", - "name": "Parser._parseTestOrStarExpressionList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestOrStarExpressionList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseImportStatement", + "name": "Parser._parseImportStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseImportStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestOrStarExpressionList", + "func_name": "_parseImportStatement", "line_range": [ - 3288, - 3310 + 2788, + 2859 ], "class_name": "Parser" }, - "description": "parse test or star expression list" + "description": "parse import statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpression", - "name": "Parser._parseExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseLambdaExpression", + "name": "Parser._parseLambdaExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseLambdaExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseExpression", + "func_name": "_parseLambdaExpression", "line_range": [ - 3315, - 3323 + 4206, + 4228 ], "class_name": "Parser" }, - "description": "parse expression node" + "description": "parse lambda expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestOrStarExpression", - "name": "Parser._parseTestOrStarExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestOrStarExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseLazyImportStatement", + "name": "Parser._parseLazyImportStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseLazyImportStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestOrStarExpression", + "func_name": "_parseLazyImportStatement", "line_range": [ - 3326, - 3332 + 520, + 546 ], "class_name": "Parser" }, - "description": "parse test or star expression" + "description": "parse lazy import declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestExpression", - "name": "Parser._parseTestExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseListAtom", + "name": "Parser._parseListAtom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseListAtom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestExpression", + "func_name": "_parseListAtom", "line_range": [ - 3335, - 3365 + 4281, + 4315 ], "class_name": "Parser" }, - "description": "parse test expression node" + "description": "parse list literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAssignmentExpression", - "name": "Parser._parseAssignmentExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAssignmentExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseLoopSuite", + "name": "Parser._parseLoopSuite", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseLoopSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseAssignmentExpression", + "func_name": "_parseLoopSuite", "line_range": [ - 3368, - 3394 + 1514, + 1543 ], "class_name": "Parser" }, - "description": "parse assignment expression node" + "description": "parse loop body suites" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseOrTest", - "name": "Parser._parseOrTest", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseOrTest", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseMatchStatement", + "name": "Parser._parseMatchStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseMatchStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseOrTest", + "func_name": "_parseMatchStatement", "line_range": [ - 3397, - 3413 + 670, + 796 + ], + "class_name": "Parser" + }, + "description": "parse pattern match statements" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseNameList", + "name": "Parser._parseNameList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseNameList", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", + "func_name": "_parseNameList", + "line_range": [ + 2936, + 2954 ], "class_name": "Parser" }, - "description": "parse or test expression" + "description": "parse name lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAndTest", - "name": "Parser._parseAndTest", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAndTest", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseNonlocalStatement", + "name": "Parser._parseNonlocalStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseNonlocalStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseAndTest", + "func_name": "_parseNonlocalStatement", "line_range": [ - 3416, - 3432 + 2922, + 2934 ], "class_name": "Parser" }, - "description": "parse and test expression" + "description": "parse nonlocal declarations" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseNotTest", @@ -50157,183 +50842,183 @@ ], "class_name": "Parser" }, - "description": "parse not test expression" + "description": "parse logical negation expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseComparison", - "name": "Parser._parseComparison", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseComparison", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseOrTest", + "name": "Parser._parseOrTest", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseOrTest", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseComparison", + "func_name": "_parseOrTest", "line_range": [ - 3447, - 3493 + 3397, + 3413 ], "class_name": "Parser" }, - "description": "parse comparison expression node" + "description": "parse logical disjunction expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBitwiseOrExpression", - "name": "Parser._parseBitwiseOrExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBitwiseOrExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseParameter", + "name": "Parser._parseParameter", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseParameter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseBitwiseOrExpression", + "func_name": "_parseParameter", "line_range": [ - 3496, - 3512 + 2267, + 2338 ], "class_name": "Parser" }, - "description": "parse bitwise or expression node" + "description": "parse function parameter" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBitwiseXorExpression", - "name": "Parser._parseBitwiseXorExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBitwiseXorExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePassStatement", + "name": "Parser._parsePassStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePassStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseBitwiseXorExpression", + "func_name": "_parsePassStatement", "line_range": [ - 3515, - 3531 + 2589, + 2591 ], "class_name": "Parser" }, - "description": "parse bitwise xor expression node" + "description": "parse pass statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseBitwiseAndExpression", - "name": "Parser._parseBitwiseAndExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseBitwiseAndExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternAs", + "name": "Parser._parsePatternAs", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternAs", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseBitwiseAndExpression", + "func_name": "_parsePatternAs", "line_range": [ - 3534, - 3550 + 1022, + 1093 ], "class_name": "Parser" }, - "description": "parse bitwise and expression node" + "description": "parse pattern aliases" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseShiftExpression", - "name": "Parser._parseShiftExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseShiftExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternAtom", + "name": "Parser._parsePatternAtom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternAtom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseShiftExpression", + "func_name": "_parsePatternAtom", "line_range": [ - 3553, - 3570 + 1108, + 1226 ], "class_name": "Parser" }, - "description": "parse shift expression node" + "description": "parse atomic patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArithmeticExpression", - "name": "Parser._parseArithmeticExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArithmeticExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternCaptureOrValue", + "name": "Parser._parsePatternCaptureOrValue", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternCaptureOrValue", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseArithmeticExpression", + "func_name": "_parsePatternCaptureOrValue", "line_range": [ - 3573, - 3594 + 1441, + 1475 ], "class_name": "Parser" }, - "description": "parse arithmetic expression node" + "description": "parse capture value patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArithmeticTerm", - "name": "Parser._parseArithmeticTerm", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArithmeticTerm", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternLiteral", + "name": "Parser._parsePatternLiteral", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternLiteral", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseArithmeticTerm", + "func_name": "_parsePatternLiteral", "line_range": [ - 3597, - 3620 + 1295, + 1329 ], "class_name": "Parser" }, - "description": "parse arithmetic term node" + "description": "parse literal patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArithmeticFactor", - "name": "Parser._parseArithmeticFactor", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArithmeticFactor", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternLiteralNumber", + "name": "Parser._parsePatternLiteralNumber", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternLiteralNumber", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseArithmeticFactor", + "func_name": "_parsePatternLiteralNumber", "line_range": [ - 3624, - 3649 + 1332, + 1368 ], "class_name": "Parser" }, - "description": "parse arithmetic factor node" + "description": "parse numeric literal patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isTypingAnnotation", - "name": "Parser._isTypingAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isTypingAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternMapping", + "name": "Parser._parsePatternMapping", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternMapping", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_isTypingAnnotation", + "func_name": "_parsePatternMapping", "line_range": [ - 3655, - 3669 + 1370, + 1386 ], "class_name": "Parser" }, - "description": "determine typing annotation context" + "description": "parse mapping patterns" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAtomExpression", - "name": "Parser._parseAtomExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAtomExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternMappingItem", + "name": "Parser._parsePatternMappingItem", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternMappingItem", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseAtomExpression", + "func_name": "_parsePatternMappingItem", "line_range": [ - 3673, - 3825 + 1391, + 1439 ], "class_name": "Parser" }, - "description": "parse atom expression node" + "description": "parse mapping pattern entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSubscriptList", - "name": "Parser._parseSubscriptList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSubscriptList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePatternSequence", + "name": "Parser._parsePatternSequence", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parsePatternSequence", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseSubscriptList", + "func_name": "_parsePatternSequence", "line_range": [ - 3828, - 3935 + 1002, + 1018 ], "class_name": "Parser" }, - "description": "parse subscript list node" + "description": "parse pattern sequences" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parsePossibleSlice", @@ -50349,503 +51034,487 @@ ], "class_name": "Parser" }, - "description": "parse possible slice expression" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArgList", - "name": "Parser._parseArgList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArgList", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseArgList", - "line_range": [ - 3997, - 4039 - ], - "class_name": "Parser" - }, - "description": "parse argument list node" + "description": "parse slice expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseArgument", - "name": "Parser._parseArgument", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseArgument", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseRaiseStatement", + "name": "Parser._parseRaiseStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseRaiseStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseArgument", + "func_name": "_parseRaiseStatement", "line_range": [ - 4045, - 4083 + 2958, + 2975 ], "class_name": "Parser" }, - "description": "parse argument node" + "description": "parse exception raising statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseAtom", - "name": "Parser._parseAtom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseAtom", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseReturnStatement", + "name": "Parser._parseReturnStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseReturnStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseAtom", + "func_name": "_parseReturnStatement", "line_range": [ - 4089, - 4173 + 2626, + 2655 ], "class_name": "Parser" }, - "description": "parse atom node" + "description": "parse return statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._handleExpressionParseError", - "name": "Parser._handleExpressionParseError", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._handleExpressionParseError", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseShiftExpression", + "name": "Parser._parseShiftExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseShiftExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_handleExpressionParseError", + "func_name": "_parseShiftExpression", "line_range": [ - 4179, - 4203 + 3553, + 3570 ], "class_name": "Parser" }, - "description": "report expression parse error; attempt parse error recovery" + "description": "parse shift expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseLambdaExpression", - "name": "Parser._parseLambdaExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseLambdaExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSimpleStatement", + "name": "Parser._parseSimpleStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSimpleStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseLambdaExpression", + "func_name": "_parseSimpleStatement", "line_range": [ - 4206, - 4228 + 3049, + 3109 ], "class_name": "Parser" }, - "description": "parse lambda expression node" + "description": "parse simple statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseLambdaExpression", - "name": "Parser._tryParseLambdaExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseLambdaExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSmallStatement", + "name": "Parser._parseSmallStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSmallStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_tryParseLambdaExpression", + "func_name": "_parseSmallStatement", "line_range": [ - 4230, - 4236 + 3115, + 3197 ], "class_name": "Parser" }, - "description": "attempt parse lambda expression" + "description": "parse small statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTupleAtom", - "name": "Parser._parseTupleAtom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTupleAtom", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseStatement", + "name": "Parser._parseStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTupleAtom", + "func_name": "_parseStatement", "line_range": [ - 4240, - 4277 + 420, + 497 ], "class_name": "Parser" }, - "description": "parse tuple atom node" + "description": "parse program statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseListAtom", - "name": "Parser._parseListAtom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseListAtom", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseStringList", + "name": "Parser._parseStringList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseStringList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseListAtom", + "func_name": "_parseStringList", "line_range": [ - 4281, - 4315 + 5145, + 5226 ], "class_name": "Parser" }, - "description": "parse list atom node" + "description": "parse adjacent string literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestListWithComprehension", - "name": "Parser._parseTestListWithComprehension", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestListWithComprehension", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSubscriptList", + "name": "Parser._parseSubscriptList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSubscriptList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTestListWithComprehension", + "func_name": "_parseSubscriptList", "line_range": [ - 4317, - 4333 + 3828, + 3935 ], "class_name": "Parser" }, - "description": "parse test list with comprehension" + "description": "parse subscription lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseDictionaryOrSetAtom", - "name": "Parser._parseDictionaryOrSetAtom", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseDictionaryOrSetAtom", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseSuite", + "name": "Parser._parseSuite", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseSuite", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseDictionaryOrSetAtom", + "func_name": "_parseSuite", "line_range": [ - 4342, - 4514 + 1546, + 1699 ], "class_name": "Parser" }, - "description": "parse dictionary or set atom" + "description": "parse statement suites" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionListGeneric", - "name": "Parser._parseExpressionListGeneric", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionListGeneric", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestExpression", + "name": "Parser._parseTestExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseExpressionListGeneric", + "func_name": "_parseTestExpression", "line_range": [ - 4516, - 4551 + 3335, + 3365 ], "class_name": "Parser" }, - "description": "parse generic expression list" + "description": "parse test expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseExpressionStatement", - "name": "Parser._parseExpressionStatement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseExpressionStatement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestExpressionList", + "name": "Parser._parseTestExpressionList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestExpressionList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseExpressionStatement", + "func_name": "_parseTestExpressionList", "line_range": [ - 4559, - 4639 + 3284, + 3286 ], "class_name": "Parser" }, - "description": "parse expression statement node" + "description": "parse test expression lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseChainAssignments", - "name": "Parser._parseChainAssignments", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseChainAssignments", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestListAsExpression", + "name": "Parser._parseTestListAsExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestListAsExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseChainAssignments", + "func_name": "_parseTestListAsExpression", "line_range": [ - 4641, - 4695 + 3247, + 3260 ], "class_name": "Parser" }, - "description": "parse chained assignment expressions" + "description": "parse test expression lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFunctionTypeAnnotation", - "name": "Parser._parseFunctionTypeAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFunctionTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestListWithComprehension", + "name": "Parser._parseTestListWithComprehension", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestListWithComprehension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFunctionTypeAnnotation", + "func_name": "_parseTestListWithComprehension", "line_range": [ - 4697, - 4748 + 4317, + 4333 ], "class_name": "Parser" }, - "description": "parse function type annotation" + "description": "parse comprehension expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeAnnotation", - "name": "Parser._parseTypeAnnotation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeAnnotation", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestOrStarExpression", + "name": "Parser._parseTestOrStarExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestOrStarExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseTypeAnnotation", + "func_name": "_parseTestOrStarExpression", "line_range": [ - 4750, - 4778 + 3326, + 3332 ], "class_name": "Parser" }, - "description": "parse type annotation node" + "description": "parse starred test expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._reportStringTokenErrors", - "name": "Parser._reportStringTokenErrors", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._reportStringTokenErrors", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestOrStarExpressionList", + "name": "Parser._parseTestOrStarExpressionList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestOrStarExpressionList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_reportStringTokenErrors", + "func_name": "_parseTestOrStarExpressionList", "line_range": [ - 4780, - 4823 + 3288, + 3310 ], "class_name": "Parser" }, - "description": "report string token errors" + "description": "parse starred test expression lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._makeStringNode", - "name": "Parser._makeStringNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._makeStringNode", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTestOrStarListAsExpression", + "name": "Parser._parseTestOrStarListAsExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTestOrStarListAsExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_makeStringNode", + "func_name": "_parseTestOrStarListAsExpression", "line_range": [ - 4825, - 4829 + 3262, + 3277 ], "class_name": "Parser" }, - "description": "create string literal node" + "description": "parse starred expression lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getTypeAnnotationCommentText", - "name": "Parser._getTypeAnnotationCommentText", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getTypeAnnotationCommentText", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTryStatement", + "name": "Parser._parseTryStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTryStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_getTypeAnnotationCommentText", + "func_name": "_parseTryStatement", "line_range": [ - 4831, - 4869 + 1893, + 2025 ], "class_name": "Parser" }, - "description": "extract type annotation comment text" + "description": "parse exception handling statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseVariableTypeAnnotationComment", - "name": "Parser._parseVariableTypeAnnotationComment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseVariableTypeAnnotationComment", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTupleAtom", + "name": "Parser._parseTupleAtom", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTupleAtom", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseVariableTypeAnnotationComment", + "func_name": "_parseTupleAtom", "line_range": [ - 4871, - 4899 + 4240, + 4277 ], "class_name": "Parser" }, - "description": "parse variable type annotation comment" + "description": "parse tuple literals" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFunctionTypeAnnotationComment", - "name": "Parser._parseFunctionTypeAnnotationComment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFunctionTypeAnnotationComment", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeAliasStatement", + "name": "Parser._parseTypeAliasStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeAliasStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFunctionTypeAnnotationComment", + "func_name": "_parseTypeAliasStatement", "line_range": [ - 4901, - 4928 + 549, + 581 ], "class_name": "Parser" }, - "description": "parse function type annotation comment" + "description": "parse type alias declarations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFStringReplacementField", - "name": "Parser._parseFStringReplacementField", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFStringReplacementField", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeAnnotation", + "name": "Parser._parseTypeAnnotation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeAnnotation", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFStringReplacementField", + "func_name": "_parseTypeAnnotation", "line_range": [ - 4930, - 5000 + 4759, + 4787 ], "class_name": "Parser" }, - "description": "parse fstring replacement field" + "description": "parse type annotations" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFStringFormatString", - "name": "Parser._parseFStringFormatString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFStringFormatString", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeParameter", + "name": "Parser._parseTypeParameter", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeParameter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFStringFormatString", + "func_name": "_parseTypeParameter", "line_range": [ - 5002, - 5033 + 624, + 664 ], "class_name": "Parser" }, - "description": "parse fstring format string" + "description": "parse type parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseFormatString", - "name": "Parser._parseFormatString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseFormatString", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseTypeParameterList", + "name": "Parser._parseTypeParameterList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseTypeParameterList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseFormatString", + "func_name": "_parseTypeParameterList", "line_range": [ - 5035, - 5094 + 584, + 621 ], "class_name": "Parser" }, - "description": "parse format string sequence" + "description": "parse type parameter lists" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._createBinaryOperationNode", - "name": "Parser._createBinaryOperationNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._createBinaryOperationNode", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseVarArgsList", + "name": "Parser._parseVarArgsList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseVarArgsList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_createBinaryOperationNode", + "func_name": "_parseVarArgsList", "line_range": [ - 5096, - 5117 + 2146, + 2265 ], "class_name": "Parser" }, - "description": "create binary operation node" + "description": "parse function parameters" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._createUnaryOperationNode", - "name": "Parser._createUnaryOperationNode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._createUnaryOperationNode", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseVariableTypeAnnotationComment", + "name": "Parser._parseVariableTypeAnnotationComment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseVariableTypeAnnotationComment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_createUnaryOperationNode", + "func_name": "_parseVariableTypeAnnotationComment", "line_range": [ - 5119, - 5134 + 4880, + 4908 ], "class_name": "Parser" }, - "description": "create unary operation node" + "description": "parse variable annotation comments" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseStringList", - "name": "Parser._parseStringList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseStringList", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseWhileStatement", + "name": "Parser._parseWhileStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseWhileStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_parseStringList", + "func_name": "_parseWhileStatement", "line_range": [ - 5136, - 5217 + 1869, + 1885 ], "class_name": "Parser" }, - "description": "parse string list node" + "description": "parse while statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._reportConditionalErrorForStarTupleElement", - "name": "Parser._reportConditionalErrorForStarTupleElement", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._reportConditionalErrorForStarTupleElement", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseWithItem", + "name": "Parser._parseWithItem", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseWithItem", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_reportConditionalErrorForStarTupleElement", + "func_name": "_parseWithItem", "line_range": [ - 5222, - 5244 + 2440, + 2451 ], "class_name": "Parser" }, - "description": "report conditional error for star tuple element" + "description": "parse resource management item" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._isNextTokenNeverExpression", - "name": "Parser._isNextTokenNeverExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._isNextTokenNeverExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseWithStatement", + "name": "Parser._parseWithStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseWithStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_isNextTokenNeverExpression", + "func_name": "_parseWithStatement", "line_range": [ - 5248, - 5298 + 2343, + 2437 ], "class_name": "Parser" }, - "description": "determine if next token starts expression" + "description": "parse resource management statements" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._disallowAssignmentExpression", - "name": "Parser._disallowAssignmentExpression", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._disallowAssignmentExpression", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._parseYieldExpression", + "name": "Parser._parseYieldExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._parseYieldExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_disallowAssignmentExpression", + "func_name": "_parseYieldExpression", "line_range": [ - 5300, - 5307 + 3015, + 3038 ], "class_name": "Parser" }, - "description": "temporarily disallow assignment expressions" + "description": "parse yield expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getNextToken", - "name": "Parser._getNextToken", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getNextToken", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._peekKeywordType", + "name": "Parser._peekKeywordType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._peekKeywordType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_getNextToken", + "func_name": "_peekKeywordType", "line_range": [ - 5309, - 5316 + 5350, + 5357 ], "class_name": "Parser" }, - "description": "consume next token" + "description": "inspect upcoming keyword type" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._atEof", - "name": "Parser._atEof", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._atEof", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._peekOperatorType", + "name": "Parser._peekOperatorType", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._peekOperatorType", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_atEof", + "func_name": "_peekOperatorType", "line_range": [ - 5318, - 5322 + 5359, + 5366 ], "class_name": "Parser" }, - "description": "determine end of stream" + "description": "inspect upcoming operator type" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._peekToken", @@ -50856,12 +51525,12 @@ "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", "func_name": "_peekToken", "line_range": [ - 5324, - 5335 + 5333, + 5344 ], "class_name": "Parser" }, - "description": "peek token without consuming" + "description": "inspect upcoming tokens" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._peekTokenType", @@ -50872,204 +51541,204 @@ "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", "func_name": "_peekTokenType", "line_range": [ - 5337, - 5339 + 5346, + 5348 ], "class_name": "Parser" }, - "description": "peek next token type" + "description": "inspect upcoming token type" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._peekKeywordType", - "name": "Parser._peekKeywordType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._peekKeywordType", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._reportConditionalErrorForStarTupleElement", + "name": "Parser._reportConditionalErrorForStarTupleElement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._reportConditionalErrorForStarTupleElement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_peekKeywordType", + "func_name": "_reportConditionalErrorForStarTupleElement", "line_range": [ - 5341, - 5348 + 5231, + 5253 ], "class_name": "Parser" }, - "description": "peek next keyword type" + "description": "report unsupported tuple unpacking" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._peekOperatorType", - "name": "Parser._peekOperatorType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._peekOperatorType", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._reportDuplicatePatternCaptureTargets", + "name": "Parser._reportDuplicatePatternCaptureTargets", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._reportDuplicatePatternCaptureTargets", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_peekOperatorType", + "func_name": "_reportDuplicatePatternCaptureTargets", "line_range": [ - 5350, - 5357 + 862, + 947 ], "class_name": "Parser" }, - "description": "peek next operator type" + "description": "report duplicate pattern captures" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getTokenIfIdentifier", - "name": "Parser._getTokenIfIdentifier", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getTokenIfIdentifier", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._reportStringTokenErrors", + "name": "Parser._reportStringTokenErrors", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._reportStringTokenErrors", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_getTokenIfIdentifier", + "func_name": "_reportStringTokenErrors", "line_range": [ - 5359, - 5383 + 4789, + 4832 ], "class_name": "Parser" }, - "description": "get token if identifier" + "description": "report string literal errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokensUntilType", - "name": "Parser._consumeTokensUntilType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokensUntilType", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._startNewParse", + "name": "Parser._startNewParse", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._startNewParse", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_consumeTokensUntilType", + "func_name": "_startNewParse", "line_range": [ - 5388, - 5401 + 391, + 415 ], "class_name": "Parser" }, - "description": "consume tokens until specified terminator" + "description": "initialize parse session" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getTokenIfType", - "name": "Parser._getTokenIfType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getTokenIfType", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._suppressErrors", + "name": "Parser._suppressErrors", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._suppressErrors", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_getTokenIfType", + "func_name": "_suppressErrors", "line_range": [ - 5403, - 5409 + 5453, + 5461 ], "class_name": "Parser" }, - "description": "get token if type matches" + "description": "suppress syntax diagnostics" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokenIfType", - "name": "Parser._consumeTokenIfType", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokenIfType", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseCompForStatement", + "name": "Parser._tryParseCompForStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseCompForStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_consumeTokenIfType", + "func_name": "_tryParseCompForStatement", "line_range": [ - 5411, - 5413 + 1807, + 1849 ], "class_name": "Parser" }, - "description": "consume token if type matches" + "description": "parse comprehension iteration clauses" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokenIfKeyword", - "name": "Parser._consumeTokenIfKeyword", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokenIfKeyword", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseCompIfStatement", + "name": "Parser._tryParseCompIfStatement", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseCompIfStatement", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_consumeTokenIfKeyword", + "func_name": "_tryParseCompIfStatement", "line_range": [ - 5415, - 5422 + 1853, + 1866 ], "class_name": "Parser" }, - "description": "consume token if keyword matches" + "description": "parse comprehension filter clauses" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._consumeTokenIfOperator", - "name": "Parser._consumeTokenIfOperator", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._consumeTokenIfOperator", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseComprehension", + "name": "Parser._tryParseComprehension", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseComprehension", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_consumeTokenIfOperator", + "func_name": "_tryParseComprehension", "line_range": [ - 5424, - 5431 + 1771, + 1804 ], "class_name": "Parser" }, - "description": "consume token if operator matches" + "description": "parse comprehension clauses" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getKeywordToken", - "name": "Parser._getKeywordToken", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getKeywordToken", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseLambdaExpression", + "name": "Parser._tryParseLambdaExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseLambdaExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_getKeywordToken", + "func_name": "_tryParseLambdaExpression", "line_range": [ - 5433, - 5438 + 4230, + 4236 ], "class_name": "Parser" }, - "description": "get specific keyword token" + "description": "parse optional lambda expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._getLanguageVersion", - "name": "Parser._getLanguageVersion", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._getLanguageVersion", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._tryParseYieldExpression", + "name": "Parser._tryParseYieldExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._tryParseYieldExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_getLanguageVersion", + "func_name": "_tryParseYieldExpression", "line_range": [ - 5440, - 5442 + 3040, + 3046 ], "class_name": "Parser" }, - "description": "get language version" + "description": "parse optional yield expressions" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._suppressErrors", - "name": "Parser._suppressErrors", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._suppressErrors", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser.parseSourceFile", + "name": "Parser.parseSourceFile", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser.parseSourceFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_suppressErrors", + "func_name": "parseSourceFile", "line_range": [ - 5444, - 5452 + 259, + 309 ], "class_name": "Parser" }, - "description": "suppress errors during callback" + "description": "parse source files; collect module metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser._addSyntaxError", - "name": "Parser._addSyntaxError", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser._addSyntaxError", + "id": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::Parser.parseTextExpression", + "name": "Parser.parseTextExpression", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/parser.ts/Parser.parseTextExpression", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/parser.ts", - "func_name": "_addSyntaxError", + "func_name": "parseTextExpression", "line_range": [ - 5454, - 5463 + 338, + 389 ], "class_name": "Parser" }, - "description": "add syntax error diagnostic" + "description": "parse selected expressions; report expression diagnostics" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::__file__", @@ -51081,115 +51750,115 @@ "func_name": "stringTokenUtils", "line_range": [ 1, - 384 + 396 ] }, - "description": "Unescapes escaped string tokens and returns the unescaped value, escape errors, and non-ASCII/bytes info" + "description": "Unescapes Python string token literals and reports escape errors" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::completeUnescapedString", - "name": "completeUnescapedString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/completeUnescapedString", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_getHexDigitValue", + "name": "_getHexDigitValue", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_getHexDigitValue", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "completeUnescapedString", + "func_name": "_getHexDigitValue", "line_range": [ - 42, - 52 + 381, + 395 ] }, - "description": "assemble final unescaped string; prefer original string when identical" + "description": "convert hexadecimal digit" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::getUnescapedString", - "name": "getUnescapedString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/getUnescapedString", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isAlphaNumericChar", + "name": "_isAlphaNumericChar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isAlphaNumericChar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "getUnescapedString", + "func_name": "_isAlphaNumericChar", "line_range": [ - 54, - 327 + 345, + 359 ] }, - "description": "unescape string token value; decode hexadecimal octal unicode escapes; report invalid escape sequences with offsets; detect non ascii in bytes; handle raw and bytes flags; elide carriage return line feed" + "description": "identify alphanumeric character" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isWhitespaceChar", - "name": "_isWhitespaceChar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isWhitespaceChar", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isHexCharCode", + "name": "_isHexCharCode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isHexCharCode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "_isWhitespaceChar", + "func_name": "_isHexCharCode", "line_range": [ - 329, - 331 + 365, + 379 ] }, - "description": "identify whitespace character code" + "description": "identify hexadecimal digit" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isAlphaNumericChar", - "name": "_isAlphaNumericChar", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isAlphaNumericChar", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isOctalCharCode", + "name": "_isOctalCharCode", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isOctalCharCode", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "_isAlphaNumericChar", + "func_name": "_isOctalCharCode", "line_range": [ - 333, - 347 + 361, + 363 ] }, - "description": "determine alphanumeric character code" + "description": "identify octal digit" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isOctalCharCode", - "name": "_isOctalCharCode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isOctalCharCode", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isWhitespaceChar", + "name": "_isWhitespaceChar", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isWhitespaceChar", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "_isOctalCharCode", + "func_name": "_isWhitespaceChar", "line_range": [ - 349, - 351 + 341, + 343 ] }, - "description": "identify octal digit character code" + "description": "identify whitespace character" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_isHexCharCode", - "name": "_isHexCharCode", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_isHexCharCode", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::completeUnescapedString", + "name": "completeUnescapedString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/completeUnescapedString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "_isHexCharCode", + "func_name": "completeUnescapedString", "line_range": [ - 353, - 367 + 42, + 52 ] }, - "description": "identify hexadecimal digit character code" + "description": "complete unescaped string" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::_getHexDigitValue", - "name": "_getHexDigitValue", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/_getHexDigitValue", + "id": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts::getUnescapedString", + "name": "getUnescapedString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/stringTokenUtils.ts/getUnescapedString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts", - "func_name": "_getHexDigitValue", + "func_name": "getUnescapedString", "line_range": [ - 369, - 383 + 54, + 339 ] }, - "description": "convert hex digit to numeric value" + "description": "return raw string; decode escaped string; report invalid escapes; detect non ascii bytes; normalize string newlines" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::__file__", @@ -51207,79 +51876,79 @@ "description": "Converts Python source into a stream of lexed tokens for parsing and analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::getKeywordTypeFromTextSlice", - "name": "getKeywordTypeFromTextSlice", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/getKeywordTypeFromTextSlice", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::detachSubstring", + "name": "detachSubstring", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/detachSubstring", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "getKeywordTypeFromTextSlice", + "func_name": "detachSubstring", "line_range": [ - 132, - 154 + 324, + 330 ] }, - "description": "validate keyword length; filter candidates by first character; match keyword text at position; return matching keyword type" + "description": "construct substring from character range" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::getTwoCharKey", - "name": "getTwoCharKey", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/getTwoCharKey", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::endsWithBackslashContinuation", + "name": "endsWithBackslashContinuation", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/endsWithBackslashContinuation", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "getTwoCharKey", + "func_name": "endsWithBackslashContinuation", "line_range": [ - 237, - 239 + 359, + 371 ] }, - "description": "encode two characters into key" + "description": "detect trailing backslash continuation" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::detachSubstring", - "name": "detachSubstring", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/detachSubstring", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::getKeywordTypeFromTextSlice", + "name": "getKeywordTypeFromTextSlice", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/getKeywordTypeFromTextSlice", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "detachSubstring", + "func_name": "getKeywordTypeFromTextSlice", "line_range": [ - 324, - 330 + 132, + 154 ] }, - "description": "construct substring from character range" + "description": "validate keyword length; filter candidates by first character; match keyword text at position; return matching keyword type" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::removeUnderscoresFromRange", - "name": "removeUnderscoresFromRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/removeUnderscoresFromRange", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::getTwoCharKey", + "name": "getTwoCharKey", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/getTwoCharKey", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "removeUnderscoresFromRange", + "func_name": "getTwoCharKey", "line_range": [ - 334, - 354 + 237, + 239 ] }, - "description": "remove underscores from substring range" + "description": "encode two characters into key" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::endsWithBackslashContinuation", - "name": "endsWithBackslashContinuation", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/endsWithBackslashContinuation", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::matchIgnoreDirective", + "name": "matchIgnoreDirective", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/matchIgnoreDirective", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "endsWithBackslashContinuation", + "func_name": "matchIgnoreDirective", "line_range": [ - 359, - 371 + 423, + 572 ] }, - "description": "detect trailing backslash continuation" + "description": "scan bounded range for directive; verify directive anchored by hash or start; ensure colon and ignore token follow directive; parse optional bracketed ignore codes; return full match prefix and index" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::parseIgnoreBracketContent", @@ -51297,19 +51966,19 @@ "description": "parse bracketed ignore content; validate allowed characters in bracket; return bracket content and new position" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::matchIgnoreDirective", - "name": "matchIgnoreDirective", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/matchIgnoreDirective", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::removeUnderscoresFromRange", + "name": "removeUnderscoresFromRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/removeUnderscoresFromRange", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "matchIgnoreDirective", + "func_name": "removeUnderscoresFromRange", "line_range": [ - 423, - 572 + 334, + 354 ] }, - "description": "scan bounded range for directive; verify directive anchored by hash or start; ensure colon and ignore token follow directive; parse optional bracketed ignore codes; return full match prefix and index" + "description": "remove underscores from substring range" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer", @@ -51327,132 +51996,132 @@ "description": "initialize tokenizer state; reset internal caches and counters" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.tokenize", - "name": "Tokenizer.tokenize", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.tokenize", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._addComments", + "name": "Tokenizer._addComments", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._addComments", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "tokenize", + "func_name": "_addComments", "line_range": [ - 697, - 821 + 1843, + 1849 ], "class_name": "Tokenizer" }, - "description": "tokenize text into tokens; compute line and indent metadata; collect ignore comment annotations; determine predominant formatting sequences" + "description": "associate comments with tokens" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.getOperatorInfo", - "name": "Tokenizer.getOperatorInfo", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.getOperatorInfo", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._addLineRange", + "name": "Tokenizer._addLineRange", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._addLineRange", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "getOperatorInfo", + "func_name": "_addLineRange", "line_range": [ - 823, - 825 + 1135, + 1142 ], "class_name": "Tokenizer" }, - "description": "retrieve operator metadata" + "description": "record current line range" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isWhitespace", - "name": "Tokenizer.isWhitespace", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isWhitespace", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._addNextToken", + "name": "Tokenizer._addNextToken", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._addNextToken", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "isWhitespace", + "func_name": "_addNextToken", "line_range": [ - 827, - 829 + 868, + 887 ], "class_name": "Tokenizer" }, - "description": "determine token whitespace status" + "description": "advance and append next token; handle fstring middle tokens" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isPythonKeyword", - "name": "Tokenizer.isPythonKeyword", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isPythonKeyword", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getComments", + "name": "Tokenizer._getComments", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getComments", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "isPythonKeyword", + "func_name": "_getComments", "line_range": [ - 831, - 842 + 1695, + 1699 ], "class_name": "Tokenizer" }, - "description": "identify python keyword; check soft keyword inclusion" + "description": "collect pending comments; return comment collection" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isPythonIdentifier", - "name": "Tokenizer.isPythonIdentifier", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isPythonIdentifier", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getIgnoreCommentRulesList", + "name": "Tokenizer._getIgnoreCommentRulesList", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getIgnoreCommentRulesList", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "isPythonIdentifier", + "func_name": "_getIgnoreCommentRulesList", "line_range": [ - 844, - 852 + 1816, + 1841 ], "class_name": "Tokenizer" }, - "description": "validate python identifier characters" + "description": "extract ignore rules from comment" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isOperatorAssignment", - "name": "Tokenizer.isOperatorAssignment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isOperatorAssignment", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getIPythonMagicsKind", + "name": "Tokenizer._getIPythonMagicsKind", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getIPythonMagicsKind", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "isOperatorAssignment", + "func_name": "_getIPythonMagicsKind", "line_range": [ - 854, - 859 + 1701, + 1719 ], "class_name": "Tokenizer" }, - "description": "detect assignment operator" + "description": "classify notebook magic kind; detect ipython magic line" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isOperatorComparison", - "name": "Tokenizer.isOperatorComparison", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isOperatorComparison", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getQuoteTypeFlags", + "name": "Tokenizer._getQuoteTypeFlags", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getQuoteTypeFlags", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "isOperatorComparison", + "func_name": "_getQuoteTypeFlags", "line_range": [ - 861, - 866 + 1896, + 1937 ], "class_name": "Tokenizer" }, - "description": "detect comparison operator" + "description": "determine string quote type; identify triple and single quotes" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._addNextToken", - "name": "Tokenizer._addNextToken", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._addNextToken", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getStringPrefixLength", + "name": "Tokenizer._getStringPrefixLength", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getStringPrefixLength", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_addNextToken", + "func_name": "_getStringPrefixLength", "line_range": [ - 868, - 887 + 1851, + 1894 ], "class_name": "Tokenizer" }, - "description": "advance and append next token; handle fstring middle tokens" + "description": "determine string prefix length; recognize raw and format prefixes" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleCharacter", @@ -51471,116 +52140,116 @@ "description": "classify and consume character sequence; emit corresponding tokens" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._addLineRange", - "name": "Tokenizer._addLineRange", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._addLineRange", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleComment", + "name": "Tokenizer._handleComment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleComment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_addLineRange", + "func_name": "_handleComment", "line_range": [ - 1135, - 1142 + 1751, + 1813 ], "class_name": "Tokenizer" }, - "description": "record current line range" + "description": "scan and classify comments; extract ignore directives from comments" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleNewLine", - "name": "Tokenizer._handleNewLine", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleNewLine", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleFStringMiddle", + "name": "Tokenizer._handleFStringMiddle", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleFStringMiddle", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_handleNewLine", + "func_name": "_handleFStringMiddle", "line_range": [ - 1144, - 1162 + 2036, + 2078 ], "class_name": "Tokenizer" }, - "description": "emit newline token; update line ending statistics" + "description": "scan fstring middle section; detect replacement field boundaries" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._readIndentationAfterNewLine", - "name": "Tokenizer._readIndentationAfterNewLine", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._readIndentationAfterNewLine", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleInvalid", + "name": "Tokenizer._handleInvalid", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleInvalid", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_readIndentationAfterNewLine", + "func_name": "_handleInvalid", "line_range": [ - 1164, - 1210 + 1668, + 1693 ], "class_name": "Tokenizer" }, - "description": "scan indentation after newline; compute indentation level amounts" + "description": "emit invalid token; advance past unexpected characters" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._setIndent", - "name": "Tokenizer._setIndent", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._setIndent", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleIPythonMagics", + "name": "Tokenizer._handleIPythonMagics", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleIPythonMagics", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_setIndent", + "func_name": "_handleIPythonMagics", "line_range": [ - 1215, - 1324 + 1721, + 1749 ], "class_name": "Tokenizer" }, - "description": "manage indent and dedent tokens; record indent metrics for detection" + "description": "emit notebook magic tokens" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._tryIdentifier", - "name": "Tokenizer._tryIdentifier", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._tryIdentifier", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleNewLine", + "name": "Tokenizer._handleNewLine", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleNewLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_tryIdentifier", + "func_name": "_handleNewLine", "line_range": [ - 1326, - 1391 + 1144, + 1162 ], "class_name": "Tokenizer" }, - "description": "scan identifier token; classify identifiers and keywords" + "description": "emit newline token; update line ending statistics" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._internIdentifier", - "name": "Tokenizer._internIdentifier", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._internIdentifier", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleString", + "name": "Tokenizer._handleString", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleString", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_internIdentifier", + "func_name": "_handleString", "line_range": [ - 1397, - 1410 + 1939, + 2033 ], "class_name": "Tokenizer" }, - "description": "intern identifier string; cache identifiers for reuse" + "description": "parse string literal token; handle unterminated and escaped strings" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._swallowNonAsciiIdentifierChars", - "name": "Tokenizer._swallowNonAsciiIdentifierChars", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._swallowNonAsciiIdentifierChars", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._internIdentifier", + "name": "Tokenizer._internIdentifier", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._internIdentifier", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_swallowNonAsciiIdentifierChars", + "func_name": "_internIdentifier", "line_range": [ - 1414, - 1425 + 1397, + 1410 ], "class_name": "Tokenizer" }, - "description": "consume non ascii identifier characters; allow unicode identifier continuation" + "description": "intern identifier string; cache identifiers for reuse" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._isPossibleNumber", @@ -51599,276 +52268,276 @@ "description": "detect potential numeric literal" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._tryNumber", - "name": "Tokenizer._tryNumber", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._tryNumber", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._readIndentationAfterNewLine", + "name": "Tokenizer._readIndentationAfterNewLine", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._readIndentationAfterNewLine", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_tryNumber", + "func_name": "_readIndentationAfterNewLine", "line_range": [ - 1439, - 1593 + 1164, + 1210 ], "class_name": "Tokenizer" }, - "description": "parse numeric literal token; support integer and float forms" + "description": "scan indentation after newline; compute indentation level amounts" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._tryOperator", - "name": "Tokenizer._tryOperator", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._tryOperator", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._setIndent", + "name": "Tokenizer._setIndent", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._setIndent", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_tryOperator", + "func_name": "_setIndent", "line_range": [ - 1595, - 1666 + 1215, + 1324 ], "class_name": "Tokenizer" }, - "description": "parse operator token; classify operator flags" + "description": "manage indent and dedent tokens; record indent metrics for detection" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleInvalid", - "name": "Tokenizer._handleInvalid", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleInvalid", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipDecimalNumber", + "name": "Tokenizer._skipDecimalNumber", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipDecimalNumber", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_handleInvalid", + "func_name": "_skipDecimalNumber", "line_range": [ - 1668, - 1693 + 2235, + 2244 ], "class_name": "Tokenizer" }, - "description": "emit invalid token; advance past unexpected characters" + "description": "skip decimal digits allowing sign" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getComments", - "name": "Tokenizer._getComments", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getComments", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipFloatingPointCandidate", + "name": "Tokenizer._skipFloatingPointCandidate", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipFloatingPointCandidate", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_getComments", + "func_name": "_skipFloatingPointCandidate", "line_range": [ - 1695, - 1699 + 2210, + 2224 ], "class_name": "Tokenizer" }, - "description": "collect pending comments; return comment collection" + "description": "probe floating point continuation" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getIPythonMagicsKind", - "name": "Tokenizer._getIPythonMagicsKind", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getIPythonMagicsKind", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipFractionalNumber", + "name": "Tokenizer._skipFractionalNumber", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipFractionalNumber", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_getIPythonMagicsKind", + "func_name": "_skipFractionalNumber", "line_range": [ - 1701, - 1719 + 2226, + 2233 ], "class_name": "Tokenizer" }, - "description": "classify notebook magic kind; detect ipython magic line" + "description": "skip fractional number portion" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleIPythonMagics", - "name": "Tokenizer._handleIPythonMagics", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleIPythonMagics", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipToEndOfStringLiteral", + "name": "Tokenizer._skipToEndOfStringLiteral", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipToEndOfStringLiteral", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_handleIPythonMagics", + "func_name": "_skipToEndOfStringLiteral", "line_range": [ - 1721, - 1749 + 2080, + 2208 ], "class_name": "Tokenizer" }, - "description": "emit notebook magic tokens" + "description": "scan until string termination; detect escape sequences and fields" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleComment", - "name": "Tokenizer._handleComment", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleComment", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._swallowNonAsciiIdentifierChars", + "name": "Tokenizer._swallowNonAsciiIdentifierChars", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._swallowNonAsciiIdentifierChars", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_handleComment", + "func_name": "_swallowNonAsciiIdentifierChars", "line_range": [ - 1751, - 1813 + 1414, + 1425 ], "class_name": "Tokenizer" }, - "description": "scan and classify comments; extract ignore directives from comments" + "description": "consume non ascii identifier characters; allow unicode identifier continuation" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getIgnoreCommentRulesList", - "name": "Tokenizer._getIgnoreCommentRulesList", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getIgnoreCommentRulesList", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._tryIdentifier", + "name": "Tokenizer._tryIdentifier", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._tryIdentifier", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_getIgnoreCommentRulesList", + "func_name": "_tryIdentifier", "line_range": [ - 1816, - 1841 + 1326, + 1391 ], "class_name": "Tokenizer" }, - "description": "extract ignore rules from comment" + "description": "scan identifier token; classify identifiers and keywords" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._addComments", - "name": "Tokenizer._addComments", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._addComments", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._tryNumber", + "name": "Tokenizer._tryNumber", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._tryNumber", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_addComments", + "func_name": "_tryNumber", "line_range": [ - 1843, - 1849 + 1439, + 1593 ], "class_name": "Tokenizer" }, - "description": "associate comments with tokens" + "description": "parse numeric literal token; support integer and float forms" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getStringPrefixLength", - "name": "Tokenizer._getStringPrefixLength", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getStringPrefixLength", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._tryOperator", + "name": "Tokenizer._tryOperator", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._tryOperator", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_getStringPrefixLength", + "func_name": "_tryOperator", "line_range": [ - 1851, - 1894 + 1595, + 1666 ], "class_name": "Tokenizer" }, - "description": "determine string prefix length; recognize raw and format prefixes" + "description": "parse operator token; classify operator flags" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._getQuoteTypeFlags", - "name": "Tokenizer._getQuoteTypeFlags", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._getQuoteTypeFlags", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.getOperatorInfo", + "name": "Tokenizer.getOperatorInfo", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.getOperatorInfo", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_getQuoteTypeFlags", + "func_name": "getOperatorInfo", "line_range": [ - 1896, - 1937 + 823, + 825 ], "class_name": "Tokenizer" }, - "description": "determine string quote type; identify triple and single quotes" + "description": "retrieve operator metadata" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleString", - "name": "Tokenizer._handleString", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleString", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isOperatorAssignment", + "name": "Tokenizer.isOperatorAssignment", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isOperatorAssignment", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_handleString", + "func_name": "isOperatorAssignment", "line_range": [ - 1939, - 2033 + 854, + 859 ], "class_name": "Tokenizer" }, - "description": "parse string literal token; handle unterminated and escaped strings" + "description": "detect assignment operator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._handleFStringMiddle", - "name": "Tokenizer._handleFStringMiddle", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._handleFStringMiddle", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isOperatorComparison", + "name": "Tokenizer.isOperatorComparison", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isOperatorComparison", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_handleFStringMiddle", + "func_name": "isOperatorComparison", "line_range": [ - 2036, - 2078 + 861, + 866 ], "class_name": "Tokenizer" }, - "description": "scan fstring middle section; detect replacement field boundaries" + "description": "detect comparison operator" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipToEndOfStringLiteral", - "name": "Tokenizer._skipToEndOfStringLiteral", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipToEndOfStringLiteral", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isPythonIdentifier", + "name": "Tokenizer.isPythonIdentifier", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isPythonIdentifier", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_skipToEndOfStringLiteral", + "func_name": "isPythonIdentifier", "line_range": [ - 2080, - 2208 + 844, + 852 ], "class_name": "Tokenizer" }, - "description": "scan until string termination; detect escape sequences and fields" + "description": "validate python identifier characters" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipFloatingPointCandidate", - "name": "Tokenizer._skipFloatingPointCandidate", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipFloatingPointCandidate", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isPythonKeyword", + "name": "Tokenizer.isPythonKeyword", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isPythonKeyword", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_skipFloatingPointCandidate", + "func_name": "isPythonKeyword", "line_range": [ - 2210, - 2224 + 831, + 842 ], "class_name": "Tokenizer" }, - "description": "probe floating point continuation" + "description": "identify python keyword; check soft keyword inclusion" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipFractionalNumber", - "name": "Tokenizer._skipFractionalNumber", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipFractionalNumber", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.isWhitespace", + "name": "Tokenizer.isWhitespace", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.isWhitespace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_skipFractionalNumber", + "func_name": "isWhitespace", "line_range": [ - 2226, - 2233 + 827, + 829 ], "class_name": "Tokenizer" }, - "description": "skip fractional number portion" + "description": "determine token whitespace status" }, { - "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer._skipDecimalNumber", - "name": "Tokenizer._skipDecimalNumber", - "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer._skipDecimalNumber", + "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts::Tokenizer.tokenize", + "name": "Tokenizer.tokenize", + "feature_path": "pyright-whole-repo/ParserAndBinder/Parse source trees/syntax and symbols/tokenizer.ts/Tokenizer.tokenize", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts", - "func_name": "_skipDecimalNumber", + "func_name": "tokenize", "line_range": [ - 2235, - 2244 + 697, + 821 ], "class_name": "Tokenizer" }, - "description": "skip decimal digits allowing sign" + "description": "tokenize text into tokens; compute line and indent metadata; collect ignore comment annotations; determine predominant formatting sequences" }, { "id": "packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts::__file__", @@ -51916,83 +52585,98 @@ "description": "Maps partially typed stub packages into corresponding installed library directories and provides a no-op alternative" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService", - "name": "PartialStubService", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs", + "name": "NoOpPartialStubs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs", "meta": { "type": "class", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", - "func_name": "PartialStubService", + "func_name": "NoOpPartialStubs", "line_range": [ - 37, - 156 + 163, + 180 ] }, - "description": "initialize service state; store filesystem reference" + "description": "instantiate partial stub service" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.isPartialStubPackagesScanned", - "name": "PartialStubService.isPartialStubPackagesScanned", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.isPartialStubPackagesScanned", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.clearPartialStubs", + "name": "NoOpPartialStubs.clearPartialStubs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.clearPartialStubs", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", + "func_name": "clearPartialStubs", + "line_range": [ + 177, + 179 + ], + "class_name": "NoOpPartialStubs" + }, + "description": "clear partial stubs" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.isPartialStubPackagesScanned", + "name": "NoOpPartialStubs.isPartialStubPackagesScanned", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.isPartialStubPackagesScanned", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", "func_name": "isPartialStubPackagesScanned", "line_range": [ - 51, - 53 + 164, + 167 ], - "class_name": "PartialStubService" + "class_name": "NoOpPartialStubs" }, - "description": "check partial stub packages scanned" + "description": "report partial stub packages scanned" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.isPathScanned", - "name": "PartialStubService.isPathScanned", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.isPathScanned", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.isPathScanned", + "name": "NoOpPartialStubs.isPathScanned", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.isPathScanned", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", "func_name": "isPathScanned", "line_range": [ - 55, - 57 + 169, + 171 ], - "class_name": "PartialStubService" + "class_name": "NoOpPartialStubs" }, - "description": "check path scanned status" + "description": "report path scanned status" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.processPartialStubPackages", - "name": "PartialStubService.processPartialStubPackages", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.processPartialStubPackages", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.processPartialStubPackages", + "name": "NoOpPartialStubs.processPartialStubPackages", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.processPartialStubPackages", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", "func_name": "processPartialStubPackages", "line_range": [ - 59, - 134 + 173, + 175 ], - "class_name": "PartialStubService" + "class_name": "NoOpPartialStubs" }, - "description": "scan specified roots for partial stub packages; identify partially typed stub packages; merge partial stubs into installed libraries; record moved directory mappings" + "description": "process partial stub packages" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.clearPartialStubs", - "name": "PartialStubService.clearPartialStubs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.clearPartialStubs", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService", + "name": "PartialStubService", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService", "meta": { - "type": "method", + "type": "class", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", - "func_name": "clearPartialStubs", + "func_name": "PartialStubService", "line_range": [ - 136, - 141 - ], - "class_name": "PartialStubService" + 37, + 156 + ] }, - "description": "clear scanned root records; dispose moved directory mappings" + "description": "initialize service state; store filesystem reference" }, { "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService._allowMoving", @@ -52011,83 +52695,68 @@ "description": "evaluate stub merging eligibility" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs", - "name": "NoOpPartialStubs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.clearPartialStubs", + "name": "PartialStubService.clearPartialStubs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.clearPartialStubs", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", - "func_name": "NoOpPartialStubs", + "func_name": "clearPartialStubs", "line_range": [ - 163, - 180 - ] + 136, + 141 + ], + "class_name": "PartialStubService" }, - "description": "instantiate partial stub service" + "description": "clear scanned root records; dispose moved directory mappings" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.isPartialStubPackagesScanned", - "name": "NoOpPartialStubs.isPartialStubPackagesScanned", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.isPartialStubPackagesScanned", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.isPartialStubPackagesScanned", + "name": "PartialStubService.isPartialStubPackagesScanned", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.isPartialStubPackagesScanned", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", "func_name": "isPartialStubPackagesScanned", "line_range": [ - 164, - 167 + 51, + 53 ], - "class_name": "NoOpPartialStubs" + "class_name": "PartialStubService" }, - "description": "report partial stub packages scanned" + "description": "check partial stub packages scanned" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.isPathScanned", - "name": "NoOpPartialStubs.isPathScanned", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.isPathScanned", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.isPathScanned", + "name": "PartialStubService.isPathScanned", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.isPathScanned", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", "func_name": "isPathScanned", "line_range": [ - 169, - 171 + 55, + 57 ], - "class_name": "NoOpPartialStubs" + "class_name": "PartialStubService" }, - "description": "report path scanned status" + "description": "check path scanned status" }, { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.processPartialStubPackages", - "name": "NoOpPartialStubs.processPartialStubPackages", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.processPartialStubPackages", + "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::PartialStubService.processPartialStubPackages", + "name": "PartialStubService.processPartialStubPackages", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/PartialStubService.processPartialStubPackages", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", "func_name": "processPartialStubPackages", "line_range": [ - 173, - 175 - ], - "class_name": "NoOpPartialStubs" - }, - "description": "process partial stub packages" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/partialStubService.ts::NoOpPartialStubs.clearPartialStubs", - "name": "NoOpPartialStubs.clearPartialStubs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/partialStubService.ts/NoOpPartialStubs.clearPartialStubs", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/partialStubService.ts", - "func_name": "clearPartialStubs", - "line_range": [ - 177, - 179 + 59, + 134 ], - "class_name": "NoOpPartialStubs" + "class_name": "PartialStubService" }, - "description": "clear partial stubs" + "description": "scan specified roots for partial stub packages; identify partially typed stub packages; merge partial stubs into installed libraries; record moved directory mappings" }, { "id": "packages/pyright/packages/pyright-internal/src/pprof/profiler.ts::__file__", @@ -52104,6 +52773,21 @@ }, "description": "Starts and stops Datadog pprof CPU profiling and saves encoded profiles to disk" }, + { + "id": "packages/pyright/packages/pyright-internal/src/pprof/profiler.ts::finishProfile", + "name": "finishProfile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/profiler.ts/finishProfile", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/pprof/profiler.ts", + "func_name": "finishProfile", + "line_range": [ + 55, + 63 + ] + }, + "description": "stop profiling session; write encoded profile to file" + }, { "id": "packages/pyright/packages/pyright-internal/src/pprof/profiler.ts::getRequire", "name": "getRequire", @@ -52134,21 +52818,6 @@ }, "description": "start profiling session" }, - { - "id": "packages/pyright/packages/pyright-internal/src/pprof/profiler.ts::finishProfile", - "name": "finishProfile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/profiler.ts/finishProfile", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/pprof/profiler.ts", - "func_name": "finishProfile", - "line_range": [ - 55, - 63 - ] - }, - "description": "stop profiling session; write encoded profile to file" - }, { "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::__file__", "name": "pyright", @@ -52165,109 +52834,139 @@ "description": "Command-line entry point for the Pyright type checker, handling CLI args, diagnostics, and running analysis" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::processArgs", - "name": "processArgs", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/processArgs", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::accumulateReportDiagnosticStats", + "name": "accumulateReportDiagnosticStats", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/accumulateReportDiagnosticStats", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "processArgs", + "func_name": "accumulateReportDiagnosticStats", "line_range": [ - 150, - 452 + 911, + 919 ] }, - "description": "parse command line options; validate option combinations; read file list from stdin; normalize and verify file paths; configure python environment paths; configure language server settings; create filesystem and service provider; select execution mode and dispatch" + "description": "increment summary counts by severity" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::runSingleThreaded", - "name": "runSingleThreaded", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/runSingleThreaded", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::buildTypeCompletenessReport", + "name": "buildTypeCompletenessReport", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/buildTypeCompletenessReport", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "runSingleThreaded", + "func_name": "buildTypeCompletenessReport", "line_range": [ - 454, - 571 + 921, + 1043 ] }, - "description": "process analysis completion results; collect and sort file diagnostics; output diagnostics in configured mode; generate type stub when requested; print timing and statistics; print dependencies on request; resolve final exit status; trigger analysis with provided options; support watch mode notifications" + "description": "construct type completeness report object; include package and module metadata; include general diagnostics filtered by severity; convert and filter symbol diagnostics; list modules and symbols; count symbol types by export status; compute overall completeness score; include docstring and default param counts" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::runMultiThreaded", - "name": "runMultiThreaded", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/runMultiThreaded", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::convertDiagnosticCategoryToSeverity", + "name": "convertDiagnosticCategoryToSeverity", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/convertDiagnosticCategoryToSeverity", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "runMultiThreaded", + "func_name": "convertDiagnosticCategoryToSeverity", "line_range": [ - 573, - 777 + 1254, + 1268 ] }, - "description": "launch worker processes; group files by directory affinity; distribute analysis tasks to workers; collect and aggregate file diagnostics; format and output diagnostic reports; treat warnings as errors; manage worker lifecycle and shutdown; detect and handle fatal worker errors; determine exit status from results" + "description": "map diagnostic category to severity level; fail on unexpected diagnostic category" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::runWorkerMessageLoop", - "name": "runWorkerMessageLoop", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/runWorkerMessageLoop", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::convertDiagnosticToJson", + "name": "convertDiagnosticToJson", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/convertDiagnosticToJson", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "runWorkerMessageLoop", + "func_name": "convertDiagnosticToJson", "line_range": [ - 781, - 871 + 1270, + 1278 ] }, - "description": "initialize analyzer service with options; use provided temp folder; receive and parse parent messages; validate source file size before reading; read and open file for analysis; send diagnostics for last open file; report analysis results to parent" + "description": "normalize diagnostic into structured object; include file location and range when present; include rule identifier and message" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::verifyPackageTypes", - "name": "verifyPackageTypes", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/verifyPackageTypes", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::getVersionString", + "name": "getVersionString", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/getVersionString", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "verifyPackageTypes", + "func_name": "getVersionString", "line_range": [ - 873, - 909 + 1179, + 1183 ] }, - "description": "verify types of a package; generate type completeness report; output report in json or text; determine exit status from completeness score; handle exceptions during verification" + "description": "retrieve tool version string" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::accumulateReportDiagnosticStats", - "name": "accumulateReportDiagnosticStats", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/accumulateReportDiagnosticStats", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::isDiagnosticIncluded", + "name": "isDiagnosticIncluded", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/isDiagnosticIncluded", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "accumulateReportDiagnosticStats", + "func_name": "isDiagnosticIncluded", "line_range": [ - 911, - 919 + 1239, + 1252 ] }, - "description": "increment summary counts by severity" + "description": "determine diagnostic inclusion by severity; enforce minimum severity threshold" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::buildTypeCompletenessReport", - "name": "buildTypeCompletenessReport", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/buildTypeCompletenessReport", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::logDiagnosticToConsole", + "name": "logDiagnosticToConsole", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/logDiagnosticToConsole", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "buildTypeCompletenessReport", + "func_name": "logDiagnosticToConsole", "line_range": [ - 921, - 1043 + 1331, + 1364 + ] + }, + "description": "format diagnostic message for display; include file location and severity in output; preserve multiline diagnostic message formatting; append diagnostic rule identifier when available" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::main", + "name": "main", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/main", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", + "func_name": "main", + "line_range": [ + 1383, + 1399 + ] + }, + "description": "initialize runtime dependencies; handle worker mode invocation; dispatch command line processing; set process exit status without forcing termination" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::parseThreadsArgValue", + "name": "parseThreadsArgValue", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/parseThreadsArgValue", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", + "func_name": "parseThreadsArgValue", + "line_range": [ + 1366, + 1377 ] }, - "description": "construct type completeness report object; include package and module metadata; include general diagnostics filtered by severity; convert and filter symbol diagnostics; list modules and symbols; count symbol types by export status; compute overall completeness score; include docstring and default param counts" + "description": "parse threads argument value; validate and normalize thread count; treat auto or invalid input as unspecified" }, { "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::printTypeCompletenessReportText", @@ -52299,21 +52998,6 @@ }, "description": "display command usage information; list available command options; describe option parameters and flags" }, - { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::getVersionString", - "name": "getVersionString", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/getVersionString", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "getVersionString", - "line_range": [ - 1179, - 1183 - ] - }, - "description": "retrieve tool version string" - }, { "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::printVersion", "name": "printVersion", @@ -52330,124 +53014,109 @@ "description": "display tool version information" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::reportDiagnosticsAsJson", - "name": "reportDiagnosticsAsJson", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/reportDiagnosticsAsJson", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "reportDiagnosticsAsJson", - "line_range": [ - 1189, - 1237 - ] - }, - "description": "aggregate diagnostics across files; filter diagnostics by minimum severity; convert diagnostics to structured report entries; accumulate diagnostic summary statistics; output structured diagnostic report; return diagnostic result counts" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::isDiagnosticIncluded", - "name": "isDiagnosticIncluded", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/isDiagnosticIncluded", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::processArgs", + "name": "processArgs", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/processArgs", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "isDiagnosticIncluded", + "func_name": "processArgs", "line_range": [ - 1239, - 1252 + 150, + 452 ] }, - "description": "determine diagnostic inclusion by severity; enforce minimum severity threshold" + "description": "parse command line options; validate option combinations; read file list from stdin; normalize and verify file paths; configure python environment paths; configure language server settings; create filesystem and service provider; select execution mode and dispatch" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::convertDiagnosticCategoryToSeverity", - "name": "convertDiagnosticCategoryToSeverity", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/convertDiagnosticCategoryToSeverity", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::reportDiagnosticsAsJson", + "name": "reportDiagnosticsAsJson", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/reportDiagnosticsAsJson", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "convertDiagnosticCategoryToSeverity", + "func_name": "reportDiagnosticsAsJson", "line_range": [ - 1254, - 1268 + 1189, + 1237 ] }, - "description": "map diagnostic category to severity level; fail on unexpected diagnostic category" + "description": "aggregate diagnostics across files; filter diagnostics by minimum severity; convert diagnostics to structured report entries; accumulate diagnostic summary statistics; output structured diagnostic report; return diagnostic result counts" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::convertDiagnosticToJson", - "name": "convertDiagnosticToJson", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/convertDiagnosticToJson", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::reportDiagnosticsAsText", + "name": "reportDiagnosticsAsText", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/reportDiagnosticsAsText", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "convertDiagnosticToJson", + "func_name": "reportDiagnosticsAsText", "line_range": [ - 1270, - 1278 + 1280, + 1329 ] }, - "description": "normalize diagnostic into structured object; include file location and range when present; include rule identifier and message" + "description": "filter and sort diagnostics for display; exclude non actionable diagnostic categories; group diagnostics by file and print header; count diagnostics by severity; display diagnostic summary counts" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::reportDiagnosticsAsText", - "name": "reportDiagnosticsAsText", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/reportDiagnosticsAsText", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::runMultiThreaded", + "name": "runMultiThreaded", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/runMultiThreaded", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "reportDiagnosticsAsText", + "func_name": "runMultiThreaded", "line_range": [ - 1280, - 1329 + 573, + 777 ] }, - "description": "filter and sort diagnostics for display; exclude non actionable diagnostic categories; group diagnostics by file and print header; count diagnostics by severity; display diagnostic summary counts" + "description": "launch worker processes; group files by directory affinity; distribute analysis tasks to workers; collect and aggregate file diagnostics; format and output diagnostic reports; treat warnings as errors; manage worker lifecycle and shutdown; detect and handle fatal worker errors; determine exit status from results" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::logDiagnosticToConsole", - "name": "logDiagnosticToConsole", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/logDiagnosticToConsole", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::runSingleThreaded", + "name": "runSingleThreaded", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/runSingleThreaded", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "logDiagnosticToConsole", + "func_name": "runSingleThreaded", "line_range": [ - 1331, - 1364 + 454, + 571 ] }, - "description": "format diagnostic message for display; include file location and severity in output; preserve multiline diagnostic message formatting; append diagnostic rule identifier when available" + "description": "process analysis completion results; collect and sort file diagnostics; output diagnostics in configured mode; generate type stub when requested; print timing and statistics; print dependencies on request; resolve final exit status; trigger analysis with provided options; support watch mode notifications" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::parseThreadsArgValue", - "name": "parseThreadsArgValue", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/parseThreadsArgValue", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::runWorkerMessageLoop", + "name": "runWorkerMessageLoop", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/runWorkerMessageLoop", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "parseThreadsArgValue", + "func_name": "runWorkerMessageLoop", "line_range": [ - 1366, - 1377 + 781, + 871 ] }, - "description": "parse threads argument value; validate and normalize thread count; treat auto or invalid input as unspecified" + "description": "initialize analyzer service with options; use provided temp folder; receive and parse parent messages; validate source file size before reading; read and open file for analysis; send diagnostics for last open file; report analysis results to parent" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::main", - "name": "main", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/main", + "id": "packages/pyright/packages/pyright-internal/src/pyright.ts::verifyPackageTypes", + "name": "verifyPackageTypes", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/pyright.ts/verifyPackageTypes", "meta": { "type": "function", "path": "packages/pyright/packages/pyright-internal/src/pyright.ts", - "func_name": "main", + "func_name": "verifyPackageTypes", "line_range": [ - 1383, - 1399 + 873, + 909 ] }, - "description": "initialize runtime dependencies; handle worker mode invocation; dispatch command line processing; set process exit status without forcing termination" + "description": "verify types of a package; generate type completeness report; output report in json or text; determine exit status from completeness score; handle exceptions during verification" }, { "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::__file__", @@ -52480,52 +53149,68 @@ "description": "wrap underlying filesystem" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.mkdirSync", - "name": "PyrightFileSystem.mkdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.mkdirSync", + "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.chdir", + "name": "PyrightFileSystem.chdir", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.chdir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts", - "func_name": "mkdirSync", + "func_name": "chdir", "line_range": [ - 22, - 24 + 26, + 28 ], "class_name": "PyrightFileSystem" }, - "description": "create directory on filesystem" + "description": "change current directory" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.chdir", - "name": "PyrightFileSystem.chdir", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.chdir", + "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.copyFileSync", + "name": "PyrightFileSystem.copyFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.copyFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts", - "func_name": "chdir", + "func_name": "copyFileSync", "line_range": [ - 26, - 28 + 46, + 48 ], "class_name": "PyrightFileSystem" }, - "description": "change current directory" + "description": "copy file to destination path" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.writeFileSync", - "name": "PyrightFileSystem.writeFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.writeFileSync", + "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.createWriteStream", + "name": "PyrightFileSystem.createWriteStream", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.createWriteStream", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts", - "func_name": "writeFileSync", + "func_name": "createWriteStream", "line_range": [ - 30, - 32 + 42, + 44 ], "class_name": "PyrightFileSystem" }, - "description": "write file to filesystem" + "description": "create write stream for file" + }, + { + "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.mkdirSync", + "name": "PyrightFileSystem.mkdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.mkdirSync", + "meta": { + "type": "method", + "path": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts", + "func_name": "mkdirSync", + "line_range": [ + 22, + 24 + ], + "class_name": "PyrightFileSystem" + }, + "description": "create directory on filesystem" }, { "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.rmdirSync", @@ -52560,36 +53245,20 @@ "description": "remove file from filesystem" }, { - "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.createWriteStream", - "name": "PyrightFileSystem.createWriteStream", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.createWriteStream", - "meta": { - "type": "method", - "path": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts", - "func_name": "createWriteStream", - "line_range": [ - 42, - 44 - ], - "class_name": "PyrightFileSystem" - }, - "description": "create write stream for file" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.copyFileSync", - "name": "PyrightFileSystem.copyFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.copyFileSync", + "id": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts::PyrightFileSystem.writeFileSync", + "name": "PyrightFileSystem.writeFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/pyrightFileSystem.ts/PyrightFileSystem.writeFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts", - "func_name": "copyFileSync", + "func_name": "writeFileSync", "line_range": [ - 46, - 48 + 30, + 32 ], "class_name": "PyrightFileSystem" }, - "description": "copy file to destination path" + "description": "write file to filesystem" }, { "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::__file__", @@ -52601,10 +53270,10 @@ "func_name": "readonlyAugmentedFileSystem", "line_range": [ 1, - 271 + 280 ] }, - "description": "Provides a read-only augmented FileSystem that overlays mapped directories onto a backing FileSystem" + "description": "Provides a read-only file system overlay that remaps directories while hiding their original locations" }, { "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem", @@ -52615,491 +53284,491 @@ "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", "func_name": "ReadOnlyAugmentedFileSystem", "line_range": [ - 24, - 270 + 25, + 279 ] }, - "description": "initialize augmented filesystem wrapper" + "description": "initialize filesystem access" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.existsSync", - "name": "ReadOnlyAugmentedFileSystem.existsSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.existsSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._findClosestMatch", + "name": "ReadOnlyAugmentedFileSystem._findClosestMatch", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._findClosestMatch", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "existsSync", + "func_name": "_findClosestMatch", "line_range": [ - 33, - 40 + 224, + 240 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "check file existence respecting mapping" + "description": "find nearest mapped ancestor" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.mkdirSync", - "name": "ReadOnlyAugmentedFileSystem.mkdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.mkdirSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._getInternalOriginalUri", + "name": "ReadOnlyAugmentedFileSystem._getInternalOriginalUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._getInternalOriginalUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "mkdirSync", + "func_name": "_getInternalOriginalUri", "line_range": [ - 42, - 44 + 249, + 263 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent directory creation operations" + "description": "translate mapped file location" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.chdir", - "name": "ReadOnlyAugmentedFileSystem.chdir", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.chdir", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._getMappedEntry", + "name": "ReadOnlyAugmentedFileSystem._getMappedEntry", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._getMappedEntry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "chdir", + "func_name": "_getMappedEntry", "line_range": [ - 46, - 48 + 265, + 273 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent changing current directory" + "description": "find mapped location entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readdirEntriesSync", - "name": "ReadOnlyAugmentedFileSystem.readdirEntriesSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readdirEntriesSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._getOriginalEntry", + "name": "ReadOnlyAugmentedFileSystem._getOriginalEntry", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._getOriginalEntry", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "readdirEntriesSync", + "func_name": "_getOriginalEntry", "line_range": [ - 50, - 97 + 242, + 244 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "list mapped directory entries; merge mapped and real entries; exclude entries overridden by mapping" + "description": "find original mapping entry" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readdirSync", - "name": "ReadOnlyAugmentedFileSystem.readdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readdirSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._isOriginalPath", + "name": "ReadOnlyAugmentedFileSystem._isOriginalPath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._isOriginalPath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "readdirSync", + "func_name": "_isOriginalPath", "line_range": [ - 99, - 101 + 275, + 278 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "list directory names" + "description": "detect redirected original paths" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readFileSync", - "name": "ReadOnlyAugmentedFileSystem.readFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readFileSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.chdir", + "name": "ReadOnlyAugmentedFileSystem.chdir", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.chdir", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "readFileSync", + "func_name": "chdir", "line_range": [ - 105, - 107 + 47, + 49 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "read file content respecting mapping" + "description": "block directory changes" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.writeFileSync", - "name": "ReadOnlyAugmentedFileSystem.writeFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.writeFileSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.clear", + "name": "ReadOnlyAugmentedFileSystem.clear", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.clear", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "writeFileSync", + "func_name": "clear", "line_range": [ - 109, - 111 + 219, + 222 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent file write operations" + "description": "clear directory mappings" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.statSync", - "name": "ReadOnlyAugmentedFileSystem.statSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.statSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.copyFileSync", + "name": "ReadOnlyAugmentedFileSystem.copyFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.copyFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "statSync", + "func_name": "copyFileSync", "line_range": [ - 113, - 119 + 162, + 164 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "provide file metadata respecting mapping" + "description": "block file copies" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.rmdirSync", - "name": "ReadOnlyAugmentedFileSystem.rmdirSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.rmdirSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.createFileSystemWatcher", + "name": "ReadOnlyAugmentedFileSystem.createFileSystemWatcher", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.createFileSystemWatcher", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "rmdirSync", + "func_name": "createFileSystemWatcher", "line_range": [ - 121, - 123 + 150, + 152 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent directory removal operations" + "description": "watch filesystem changes" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.unlinkSync", - "name": "ReadOnlyAugmentedFileSystem.unlinkSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.unlinkSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.createReadStream", + "name": "ReadOnlyAugmentedFileSystem.createReadStream", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.createReadStream", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "unlinkSync", + "func_name": "createReadStream", "line_range": [ - 125, - 127 + 154, + 156 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent file deletion operations" + "description": "open visible file stream" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.realpathSync", - "name": "ReadOnlyAugmentedFileSystem.realpathSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.realpathSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.createWriteStream", + "name": "ReadOnlyAugmentedFileSystem.createWriteStream", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.createWriteStream", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "realpathSync", + "func_name": "createWriteStream", "line_range": [ - 129, - 135 + 158, + 160 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "resolve real path with mapping awareness" + "description": "block write stream creation" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.getModulePath", - "name": "ReadOnlyAugmentedFileSystem.getModulePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.getModulePath", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.existsSync", + "name": "ReadOnlyAugmentedFileSystem.existsSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.existsSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "getModulePath", + "func_name": "existsSync", "line_range": [ - 137, - 139 + 34, + 41 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "retrieve module path from filesystem" + "description": "report visible path existence; hide original file locations" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.createFileSystemWatcher", - "name": "ReadOnlyAugmentedFileSystem.createFileSystemWatcher", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.createFileSystemWatcher", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.getMappedUri", + "name": "ReadOnlyAugmentedFileSystem.getMappedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.getMappedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "createFileSystemWatcher", + "func_name": "getMappedUri", "line_range": [ - 141, - 143 + 194, + 201 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "create filesystem watcher for paths" + "description": "return mapped file location" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.createReadStream", - "name": "ReadOnlyAugmentedFileSystem.createReadStream", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.createReadStream", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.getModulePath", + "name": "ReadOnlyAugmentedFileSystem.getModulePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.getModulePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "createReadStream", + "func_name": "getModulePath", "line_range": [ - 145, - 147 + 146, + 148 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "create read stream respecting mapping" + "description": "return module root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.createWriteStream", - "name": "ReadOnlyAugmentedFileSystem.createWriteStream", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.createWriteStream", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.getOriginalUri", + "name": "ReadOnlyAugmentedFileSystem.getOriginalUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.getOriginalUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "createWriteStream", + "func_name": "getOriginalUri", "line_range": [ - 149, - 151 + 188, + 191 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent write stream creation" + "description": "return original file location" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.copyFileSync", - "name": "ReadOnlyAugmentedFileSystem.copyFileSync", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.copyFileSync", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.isInZip", + "name": "ReadOnlyAugmentedFileSystem.isInZip", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.isInZip", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "copyFileSync", + "func_name": "isInZip", "line_range": [ - 153, - 155 + 203, + 205 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "prevent file copy operations" + "description": "detect archive membership" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readFile", - "name": "ReadOnlyAugmentedFileSystem.readFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readFile", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.isMappedUri", + "name": "ReadOnlyAugmentedFileSystem.isMappedUri", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.isMappedUri", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "readFile", + "func_name": "isMappedUri", "line_range": [ - 158, - 160 + 180, + 185 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "read file content asynchronously respecting mapping" + "description": "detect mapped file locations" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readFileText", - "name": "ReadOnlyAugmentedFileSystem.readFileText", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readFileText", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.mapDirectory", + "name": "ReadOnlyAugmentedFileSystem.mapDirectory", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.mapDirectory", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "readFileText", + "func_name": "mapDirectory", "line_range": [ - 162, - 164 + 207, + 217 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "read file text asynchronously respecting mapping" + "description": "register directory mapping; return mapping disposer" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.realCasePath", - "name": "ReadOnlyAugmentedFileSystem.realCasePath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.realCasePath", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.mkdirSync", + "name": "ReadOnlyAugmentedFileSystem.mkdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.mkdirSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "realCasePath", + "func_name": "mkdirSync", "line_range": [ - 166, - 168 + 43, + 45 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "resolve path case via filesystem" + "description": "block directory creation" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.isMappedUri", - "name": "ReadOnlyAugmentedFileSystem.isMappedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.isMappedUri", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readdirEntriesSync", + "name": "ReadOnlyAugmentedFileSystem.readdirEntriesSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readdirEntriesSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "isMappedUri", + "func_name": "readdirEntriesSync", "line_range": [ - 171, - 176 + 51, + 106 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "determine whether uri is mapped" + "description": "list visible directory contents; expose mapped child directories; hide redirected original entries" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.getOriginalUri", - "name": "ReadOnlyAugmentedFileSystem.getOriginalUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.getOriginalUri", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readdirSync", + "name": "ReadOnlyAugmentedFileSystem.readdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readdirSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "getOriginalUri", + "func_name": "readdirSync", "line_range": [ - 179, - 182 + 108, + 110 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "retrieve original uri for mapped file" + "description": "list directory entry names" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.getMappedUri", - "name": "ReadOnlyAugmentedFileSystem.getMappedUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.getMappedUri", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readFile", + "name": "ReadOnlyAugmentedFileSystem.readFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "getMappedUri", + "func_name": "readFile", "line_range": [ - 185, - 192 + 167, + 169 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "retrieve mapped uri for original file" + "description": "read visible file contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.isInZip", - "name": "ReadOnlyAugmentedFileSystem.isInZip", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.isInZip", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readFileSync", + "name": "ReadOnlyAugmentedFileSystem.readFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "isInZip", + "func_name": "readFileSync", "line_range": [ - 194, - 196 + 114, + 116 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "determine whether uri is inside archive" + "description": "read visible file contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.mapDirectory", - "name": "ReadOnlyAugmentedFileSystem.mapDirectory", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.mapDirectory", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.readFileText", + "name": "ReadOnlyAugmentedFileSystem.readFileText", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.readFileText", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "mapDirectory", + "func_name": "readFileText", "line_range": [ - 198, - 208 + 171, + 173 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "register directory mapping with filter" + "description": "read visible text contents" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.clear", - "name": "ReadOnlyAugmentedFileSystem.clear", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.clear", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.realCasePath", + "name": "ReadOnlyAugmentedFileSystem.realCasePath", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.realCasePath", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "clear", + "func_name": "realCasePath", "line_range": [ - 210, - 213 + 175, + 177 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "clear directory mappings" + "description": "resolve path casing" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._findClosestMatch", - "name": "ReadOnlyAugmentedFileSystem._findClosestMatch", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._findClosestMatch", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.realpathSync", + "name": "ReadOnlyAugmentedFileSystem.realpathSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.realpathSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "_findClosestMatch", + "func_name": "realpathSync", "line_range": [ - 215, - 231 + 138, + 144 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "find closest parent mapping entry" + "description": "resolve visible path identity" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._getOriginalEntry", - "name": "ReadOnlyAugmentedFileSystem._getOriginalEntry", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._getOriginalEntry", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.rmdirSync", + "name": "ReadOnlyAugmentedFileSystem.rmdirSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.rmdirSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "_getOriginalEntry", + "func_name": "rmdirSync", "line_range": [ - 233, - 235 + 130, + 132 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "get mapped entry for uri" + "description": "block directory removal" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._getInternalOriginalUri", - "name": "ReadOnlyAugmentedFileSystem._getInternalOriginalUri", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._getInternalOriginalUri", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.statSync", + "name": "ReadOnlyAugmentedFileSystem.statSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.statSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "_getInternalOriginalUri", + "func_name": "statSync", "line_range": [ - 240, - 254 + 122, + 128 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "translate mapped uri to original uri" + "description": "report visible path metadata; hide original file locations" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._getMappedEntry", - "name": "ReadOnlyAugmentedFileSystem._getMappedEntry", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._getMappedEntry", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.unlinkSync", + "name": "ReadOnlyAugmentedFileSystem.unlinkSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.unlinkSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "_getMappedEntry", + "func_name": "unlinkSync", "line_range": [ - 256, - 264 + 134, + 136 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "get mapping entry for original uri" + "description": "block file deletion" }, { - "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem._isOriginalPath", - "name": "ReadOnlyAugmentedFileSystem._isOriginalPath", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem._isOriginalPath", + "id": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::ReadOnlyAugmentedFileSystem.writeFileSync", + "name": "ReadOnlyAugmentedFileSystem.writeFileSync", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Bridge filesystem access/virtual and sandbox files/readonlyAugmentedFileSystem.ts/ReadOnlyAugmentedFileSystem.writeFileSync", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts", - "func_name": "_isOriginalPath", + "func_name": "writeFileSync", "line_range": [ - 266, - 269 + 118, + 120 ], "class_name": "ReadOnlyAugmentedFileSystem" }, - "description": "determine whether uri is original path" + "description": "block file writes" }, { "id": "packages/pyright/packages/pyright-internal/src/server.ts::__file__", @@ -53114,7 +53783,7 @@ 333 ] }, - "description": "Implements the Pyright language server, handling workspace settings, background analysis, commands, and code actions" + "description": "Implements the Pyright language server, including settings, commands, code actions, and progress reporting" }, { "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer", @@ -53129,23 +53798,23 @@ 332 ] }, - "description": "initialize server components; configure service provider dependencies" + "description": "initialize language server; prepare file services; register command controller" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.getSettings", - "name": "PyrightServer.getSettings", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.getSettings", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer._getStringValues", + "name": "PyrightServer._getStringValues", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer._getStringValues", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "getSettings", + "func_name": "_getStringValues", "line_range": [ - 95, - 224 + 325, + 331 ], "class_name": "PyrightServer" }, - "description": "assemble server configuration settings; resolve workspace path settings; apply analysis and logging flags; map diagnostic severity overrides; normalize include exclude patterns" + "description": "extract string settings" }, { "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.createBackgroundAnalysis", @@ -53161,7 +53830,7 @@ ], "class_name": "PyrightServer" }, - "description": "create background analysis instance; enable background analysis conditionally" + "description": "start background analysis" }, { "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.createHost", @@ -53177,7 +53846,7 @@ ], "class_name": "PyrightServer" }, - "description": "instantiate full access host; provide host for file operations" + "description": "provide filesystem host" }, { "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.createImportResolver", @@ -53193,103 +53862,103 @@ ], "class_name": "PyrightServer" }, - "description": "create import resolver instance; invalidate resolver cache on creation" + "description": "create import resolver; refresh import resolution" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.executeCommand", - "name": "PyrightServer.executeCommand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.executeCommand", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.createProgressReporter", + "name": "PyrightServer.createProgressReporter", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.createProgressReporter", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "executeCommand", + "func_name": "createProgressReporter", "line_range": [ - 254, - 256 + 277, + 323 ], "class_name": "PyrightServer" }, - "description": "delegate command execution to controller" + "description": "track analysis progress; notify progress subscribers" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.isLongRunningCommand", - "name": "PyrightServer.isLongRunningCommand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.isLongRunningCommand", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.executeCodeAction", + "name": "PyrightServer.executeCodeAction", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.executeCodeAction", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "isLongRunningCommand", + "func_name": "executeCodeAction", "line_range": [ - 258, - 260 + 266, + 275 ], "class_name": "PyrightServer" }, - "description": "identify long running commands" + "description": "record user activity; produce code actions" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.isRefactoringCommand", - "name": "PyrightServer.isRefactoringCommand", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.isRefactoringCommand", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.executeCommand", + "name": "PyrightServer.executeCommand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.executeCommand", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "isRefactoringCommand", + "func_name": "executeCommand", "line_range": [ - 262, - 264 + 254, + 256 ], "class_name": "PyrightServer" }, - "description": "detect refactoring commands" + "description": "run server command" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.executeCodeAction", - "name": "PyrightServer.executeCodeAction", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.executeCodeAction", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.getSettings", + "name": "PyrightServer.getSettings", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.getSettings", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "executeCodeAction", + "func_name": "getSettings", "line_range": [ - 266, - 275 + 95, + 224 ], "class_name": "PyrightServer" }, - "description": "record user interaction time; retrieve code actions for position" + "description": "load workspace settings; resolve python environment; configure analysis behavior; set diagnostic severities; select completion preferences" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.createProgressReporter", - "name": "PyrightServer.createProgressReporter", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.createProgressReporter", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.isLongRunningCommand", + "name": "PyrightServer.isLongRunningCommand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.isLongRunningCommand", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "createProgressReporter", + "func_name": "isLongRunningCommand", "line_range": [ - 277, - 323 + 258, + 260 ], "class_name": "PyrightServer" }, - "description": "provide backward compatible progress reporter; emit work done progress notifications; fallback to legacy progress notifications" + "description": "identify long running command" }, { - "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer._getStringValues", - "name": "PyrightServer._getStringValues", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer._getStringValues", + "id": "packages/pyright/packages/pyright-internal/src/server.ts::PyrightServer.isRefactoringCommand", + "name": "PyrightServer.isRefactoringCommand", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/server.ts/PyrightServer.isRefactoringCommand", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/server.ts", - "func_name": "_getStringValues", + "func_name": "isRefactoringCommand", "line_range": [ - 325, - 331 + 262, + 264 ], "class_name": "PyrightServer" }, - "description": "filter array values to strings; return normalized string list" + "description": "identify refactoring command" }, { "id": "packages/pyright/packages/pyright-internal/src/types.ts::__file__", @@ -53301,10 +53970,10 @@ "func_name": "types", "line_range": [ 1, - 40 + 45 ] }, - "description": "Exports types describing language server client capabilities and initialization options" + "description": "Defines language server client capabilities and initialization options for Pyright" }, { "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::__file__", @@ -53336,6 +54005,21 @@ }, "description": "create initialization status; allow resolving initialization; mark initialization as called; reset initialization state; report initialization resolved state" }, + { + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::isNormalWorkspace", + "name": "isNormalWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/isNormalWorkspace", + "meta": { + "type": "function", + "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", + "func_name": "isNormalWorkspace", + "line_range": [ + 454, + 456 + ] + }, + "description": "determine if workspace is normal; narrow workspace type to normal" + }, { "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::renameWorkspace", "name": "renameWorkspace", @@ -53367,307 +54051,292 @@ "description": "initialize factory with dependencies" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.handleInitialize", - "name": "WorkspaceFactory.handleInitialize", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.handleInitialize", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._add", + "name": "WorkspaceFactory._add", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._add", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "handleInitialize", + "func_name": "_add", "line_range": [ - 130, - 139 + 269, + 309 ], "class_name": "WorkspaceFactory" }, - "description": "create workspace services for folders" + "description": "create and register new workspace; notify owner about workspace creation" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.handleWorkspaceFoldersChanged", - "name": "WorkspaceFactory.handleWorkspaceFoldersChanged", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.handleWorkspaceFoldersChanged", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getBestRegularWorkspace", + "name": "WorkspaceFactory._getBestRegularWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getBestRegularWorkspace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "handleWorkspaceFoldersChanged", + "func_name": "_getBestRegularWorkspace", "line_range": [ - 141, - 176 + 431, + 443 ], "class_name": "WorkspaceFactory" }, - "description": "remove workspaces for removed folders; add workspaces for newly added folders; update workspace names when changed" + "description": "select best regular workspace from list" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.items", - "name": "WorkspaceFactory.items", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.items", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getBestWorkspaceForFile", + "name": "WorkspaceFactory._getBestWorkspaceForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getBestWorkspaceForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "items", + "func_name": "_getBestWorkspaceForFile", "line_range": [ - 178, - 180 + 351, + 403 ], "class_name": "WorkspaceFactory" }, - "description": "list current workspaces" + "description": "determine best matching workspace for file; prefer workspace with longest root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.clear", - "name": "WorkspaceFactory.clear", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.clear", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getDefaultWorkspaceKey", + "name": "WorkspaceFactory._getDefaultWorkspaceKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getDefaultWorkspaceKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "clear", + "func_name": "_getDefaultWorkspaceKey", "line_range": [ - 182, - 189 + 325, + 327 ], "class_name": "WorkspaceFactory" }, - "description": "dispose and clear all workspaces" + "description": "return default workspace key" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.hasMultipleWorkspaces", - "name": "WorkspaceFactory.hasMultipleWorkspaces", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.hasMultipleWorkspaces", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getLongestPathWorkspace", + "name": "WorkspaceFactory._getLongestPathWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getLongestPathWorkspace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "hasMultipleWorkspaces", + "func_name": "_getLongestPathWorkspace", "line_range": [ - 191, - 208 + 417, + 429 ], "class_name": "WorkspaceFactory" }, - "description": "determine whether multiple workspaces exist" + "description": "select workspace with longest root path" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getContainingWorkspace", - "name": "WorkspaceFactory.getContainingWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getContainingWorkspace", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getOrCreateBestWorkspaceForFile", + "name": "WorkspaceFactory._getOrCreateBestWorkspaceForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getOrCreateBestWorkspaceForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "getContainingWorkspace", + "func_name": "_getOrCreateBestWorkspaceForFile", "line_range": [ - 210, - 214 + 341, + 349 ], "class_name": "WorkspaceFactory" }, - "description": "find containing regular workspace for file" + "description": "get or create best workspace for file" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getNonDefaultWorkspaces", - "name": "WorkspaceFactory.getNonDefaultWorkspaces", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getNonDefaultWorkspaces", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getOrCreateDefaultWorkspace", + "name": "WorkspaceFactory._getOrCreateDefaultWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getOrCreateDefaultWorkspace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "getNonDefaultWorkspaces", + "func_name": "_getOrCreateDefaultWorkspace", "line_range": [ - 216, - 231 + 405, + 415 ], "class_name": "WorkspaceFactory" }, - "description": "list non default workspaces" + "description": "get or create default workspace" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getWorkspaceForFile", - "name": "WorkspaceFactory.getWorkspaceForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getWorkspaceForFile", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getWorkspaceKey", + "name": "WorkspaceFactory._getWorkspaceKey", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getWorkspaceKey", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "getWorkspaceForFile", + "func_name": "_getWorkspaceKey", "line_range": [ - 235, - 247 + 329, + 339 ], "class_name": "WorkspaceFactory" }, - "description": "resolve workspace for file asynchronously" + "description": "compute workspace key string" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getContainingWorkspacesForFile", - "name": "WorkspaceFactory.getContainingWorkspacesForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getContainingWorkspacesForFile", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._remove", + "name": "WorkspaceFactory._remove", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._remove", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "getContainingWorkspacesForFile", + "func_name": "_remove", "line_range": [ - 249, - 267 + 311, + 323 ], "class_name": "WorkspaceFactory" }, - "description": "find workspaces tracking a file; fallback to best workspace when none" + "description": "remove and dispose workspace instance" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._add", - "name": "WorkspaceFactory._add", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._add", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.clear", + "name": "WorkspaceFactory.clear", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.clear", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_add", + "func_name": "clear", "line_range": [ - 269, - 309 + 182, + 189 ], "class_name": "WorkspaceFactory" }, - "description": "create and register new workspace; notify owner about workspace creation" + "description": "dispose and clear all workspaces" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._remove", - "name": "WorkspaceFactory._remove", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._remove", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getContainingWorkspace", + "name": "WorkspaceFactory.getContainingWorkspace", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getContainingWorkspace", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_remove", + "func_name": "getContainingWorkspace", "line_range": [ - 311, - 323 + 210, + 214 ], "class_name": "WorkspaceFactory" }, - "description": "remove and dispose workspace instance" + "description": "find containing regular workspace for file" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getDefaultWorkspaceKey", - "name": "WorkspaceFactory._getDefaultWorkspaceKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getDefaultWorkspaceKey", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getContainingWorkspacesForFile", + "name": "WorkspaceFactory.getContainingWorkspacesForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getContainingWorkspacesForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getDefaultWorkspaceKey", + "func_name": "getContainingWorkspacesForFile", "line_range": [ - 325, - 327 + 249, + 267 ], "class_name": "WorkspaceFactory" }, - "description": "return default workspace key" + "description": "find workspaces tracking a file; fallback to best workspace when none" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getWorkspaceKey", - "name": "WorkspaceFactory._getWorkspaceKey", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getWorkspaceKey", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getNonDefaultWorkspaces", + "name": "WorkspaceFactory.getNonDefaultWorkspaces", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getNonDefaultWorkspaces", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getWorkspaceKey", + "func_name": "getNonDefaultWorkspaces", "line_range": [ - 329, - 339 + 216, + 231 ], "class_name": "WorkspaceFactory" }, - "description": "compute workspace key string" + "description": "list non default workspaces" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getOrCreateBestWorkspaceForFile", - "name": "WorkspaceFactory._getOrCreateBestWorkspaceForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getOrCreateBestWorkspaceForFile", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.getWorkspaceForFile", + "name": "WorkspaceFactory.getWorkspaceForFile", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.getWorkspaceForFile", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getOrCreateBestWorkspaceForFile", + "func_name": "getWorkspaceForFile", "line_range": [ - 341, - 349 + 235, + 247 ], "class_name": "WorkspaceFactory" }, - "description": "get or create best workspace for file" + "description": "resolve workspace for file asynchronously" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getBestWorkspaceForFile", - "name": "WorkspaceFactory._getBestWorkspaceForFile", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getBestWorkspaceForFile", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.handleInitialize", + "name": "WorkspaceFactory.handleInitialize", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.handleInitialize", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getBestWorkspaceForFile", + "func_name": "handleInitialize", "line_range": [ - 351, - 403 + 130, + 139 ], "class_name": "WorkspaceFactory" }, - "description": "determine best matching workspace for file; prefer workspace with longest root path" + "description": "create workspace services for folders" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getOrCreateDefaultWorkspace", - "name": "WorkspaceFactory._getOrCreateDefaultWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getOrCreateDefaultWorkspace", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.handleWorkspaceFoldersChanged", + "name": "WorkspaceFactory.handleWorkspaceFoldersChanged", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.handleWorkspaceFoldersChanged", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getOrCreateDefaultWorkspace", + "func_name": "handleWorkspaceFoldersChanged", "line_range": [ - 405, - 415 + 141, + 176 ], "class_name": "WorkspaceFactory" }, - "description": "get or create default workspace" + "description": "remove workspaces for removed folders; add workspaces for newly added folders; update workspace names when changed" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getLongestPathWorkspace", - "name": "WorkspaceFactory._getLongestPathWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getLongestPathWorkspace", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.hasMultipleWorkspaces", + "name": "WorkspaceFactory.hasMultipleWorkspaces", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.hasMultipleWorkspaces", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getLongestPathWorkspace", + "func_name": "hasMultipleWorkspaces", "line_range": [ - 417, - 429 + 191, + 208 ], "class_name": "WorkspaceFactory" }, - "description": "select workspace with longest root path" + "description": "determine whether multiple workspaces exist" }, { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory._getBestRegularWorkspace", - "name": "WorkspaceFactory._getBestRegularWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory._getBestRegularWorkspace", + "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::WorkspaceFactory.items", + "name": "WorkspaceFactory.items", + "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/WorkspaceFactory.items", "meta": { "type": "method", "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "_getBestRegularWorkspace", + "func_name": "items", "line_range": [ - 431, - 443 + 178, + 180 ], "class_name": "WorkspaceFactory" }, - "description": "select best regular workspace from list" - }, - { - "id": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts::isNormalWorkspace", - "name": "isNormalWorkspace", - "feature_path": "pyright-whole-repo/SharedInfrastructure/Manage shared helpers/utility conversion code/workspaceFactory.ts/isNormalWorkspace", - "meta": { - "type": "function", - "path": "packages/pyright/packages/pyright-internal/src/workspaceFactory.ts", - "func_name": "isNormalWorkspace", - "line_range": [ - 454, - 456 - ] - }, - "description": "determine if workspace is normal; narrow workspace type to normal" + "description": "list current workspaces" }, { "id": "packages/pyright/packages/pyright/src/langserver.ts::__file__", @@ -53715,49 +54384,51 @@ "description": "Provides a file-based cancellation strategy for the language server protocol" }, { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::getCancellationFolderPath", - "name": "getCancellationFolderPath", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationFolderPath", + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileBasedCancellationStrategy", + "name": "FileBasedCancellationStrategy", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedCancellationStrategy", "meta": { - "type": "function", + "type": "class", "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "getCancellationFolderPath", + "func_name": "FileBasedCancellationStrategy", "line_range": [ - 22, - 24 + 75, + 98 ] }, - "description": "build cancellation folder path" + "description": "initialize file cancellation sender; create unique cancellation folder" }, { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::getCancellationFilePath", - "name": "getCancellationFilePath", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationFilePath", + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileBasedCancellationStrategy.dispose", + "name": "FileBasedCancellationStrategy.dispose", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedCancellationStrategy.dispose", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "getCancellationFilePath", + "func_name": "dispose", "line_range": [ - 26, - 28 - ] + 95, + 97 + ], + "class_name": "FileBasedCancellationStrategy" }, - "description": "build cancellation file path" + "description": "dispose file cancellation sender" }, { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::tryRun", - "name": "tryRun", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/tryRun", + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileBasedCancellationStrategy.getCommandLineArguments", + "name": "FileBasedCancellationStrategy.getCommandLineArguments", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedCancellationStrategy.getCommandLineArguments", "meta": { - "type": "function", + "type": "method", "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "tryRun", + "func_name": "getCommandLineArguments", "line_range": [ - 30, - 36 - ] + 91, + 93 + ], + "class_name": "FileBasedCancellationStrategy" }, - "description": "execute callback suppressing exceptions" + "description": "provide file cancellation command arguments" }, { "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileCancellationSenderStrategy", @@ -53774,22 +54445,6 @@ }, "description": "ensure cancellation folder exists; avoid propagating filesystem errors" }, - { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileCancellationSenderStrategy.sendCancellation", - "name": "FileCancellationSenderStrategy.sendCancellation", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileCancellationSenderStrategy.sendCancellation", - "meta": { - "type": "method", - "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "sendCancellation", - "line_range": [ - 44, - 48 - ], - "class_name": "FileCancellationSenderStrategy" - }, - "description": "signal cancellation via marker file; avoid propagating filesystem errors" - }, { "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileCancellationSenderStrategy.cleanup", "name": "FileCancellationSenderStrategy.cleanup", @@ -53823,51 +54478,65 @@ "description": "remove cancellation folder and contents; avoid propagating filesystem errors" }, { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileBasedCancellationStrategy", - "name": "FileBasedCancellationStrategy", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedCancellationStrategy", + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileCancellationSenderStrategy.sendCancellation", + "name": "FileCancellationSenderStrategy.sendCancellation", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileCancellationSenderStrategy.sendCancellation", "meta": { - "type": "class", + "type": "method", "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "FileBasedCancellationStrategy", + "func_name": "sendCancellation", "line_range": [ - 75, - 98 + 44, + 48 + ], + "class_name": "FileCancellationSenderStrategy" + }, + "description": "signal cancellation via marker file; avoid propagating filesystem errors" + }, + { + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::getCancellationFilePath", + "name": "getCancellationFilePath", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationFilePath", + "meta": { + "type": "function", + "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", + "func_name": "getCancellationFilePath", + "line_range": [ + 26, + 28 ] }, - "description": "initialize file cancellation sender; create unique cancellation folder" + "description": "build cancellation file path" }, { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileBasedCancellationStrategy.getCommandLineArguments", - "name": "FileBasedCancellationStrategy.getCommandLineArguments", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedCancellationStrategy.getCommandLineArguments", + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::getCancellationFolderPath", + "name": "getCancellationFolderPath", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/getCancellationFolderPath", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "getCommandLineArguments", + "func_name": "getCancellationFolderPath", "line_range": [ - 91, - 93 - ], - "class_name": "FileBasedCancellationStrategy" + 22, + 24 + ] }, - "description": "provide file cancellation command arguments" + "description": "build cancellation folder path" }, { - "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::FileBasedCancellationStrategy.dispose", - "name": "FileBasedCancellationStrategy.dispose", - "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/FileBasedCancellationStrategy.dispose", + "id": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts::tryRun", + "name": "tryRun", + "feature_path": "pyright-whole-repo/CommandLineAndTooling/Manage shared helpers/utility conversion code/cancellationUtils.ts/tryRun", "meta": { - "type": "method", + "type": "function", "path": "packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts", - "func_name": "dispose", + "func_name": "tryRun", "line_range": [ - 95, - 97 - ], - "class_name": "FileBasedCancellationStrategy" + 30, + 36 + ] }, - "description": "dispose file cancellation sender" + "description": "execute callback suppressing exceptions" }, { "id": "packages/pyright/packages/vscode-pyright/src/extension.ts::__file__", @@ -53976,6 +54645,16 @@ } ], "edges": [ + { + "source": "feat:commandlineandtooling", + "target": "feat:commandlineandtooling/manage-shared-helpers", + "kind": "feature" + }, + { + "source": "feat:commandlineandtooling/manage-shared-helpers", + "target": "feat:commandlineandtooling/manage-shared-helpers/utility-conversion-code", + "kind": "feature" + }, { "source": "feat:commandlineandtooling/manage-shared-helpers/utility-conversion-code", "target": "packages/pyright/packages/pyright/src/langserver.ts::__file__", @@ -54002,13 +54681,13 @@ "kind": "feature" }, { - "source": "feat:commandlineandtooling/manage-shared-helpers", - "target": "feat:commandlineandtooling/manage-shared-helpers/utility-conversion-code", + "source": "feat:diagnosticsandconfiguration", + "target": "feat:diagnosticsandconfiguration/manage-shared-helpers", "kind": "feature" }, { - "source": "feat:commandlineandtooling", - "target": "feat:commandlineandtooling/manage-shared-helpers", + "source": "feat:diagnosticsandconfiguration/manage-shared-helpers", + "target": "feat:diagnosticsandconfiguration/manage-shared-helpers/utility-conversion-code", "kind": "feature" }, { @@ -54047,18 +54726,23 @@ "kind": "feature" }, { - "source": "feat:diagnosticsandconfiguration/manage-shared-helpers", - "target": "feat:diagnosticsandconfiguration/manage-shared-helpers/utility-conversion-code", + "source": "feat:importresolution", + "target": "feat:importresolution/manage-analyzer-runtime", "kind": "feature" }, { - "source": "feat:diagnosticsandconfiguration", - "target": "feat:diagnosticsandconfiguration/manage-shared-helpers", + "source": "feat:importresolution", + "target": "feat:importresolution/register-editor-features", "kind": "feature" }, { - "source": "feat:importresolution/manage-analyzer-runtime/source-file-state", - "target": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::__file__", + "source": "feat:importresolution", + "target": "feat:importresolution/resolve-imports", + "kind": "feature" + }, + { + "source": "feat:importresolution", + "target": "feat:importresolution/serve-language-service", "kind": "feature" }, { @@ -54067,8 +54751,8 @@ "kind": "feature" }, { - "source": "feat:importresolution/register-editor-features/commands-and-listeners", - "target": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::__file__", + "source": "feat:importresolution/manage-analyzer-runtime/source-file-state", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts::__file__", "kind": "feature" }, { @@ -54076,6 +54760,16 @@ "target": "feat:importresolution/register-editor-features/commands-and-listeners", "kind": "feature" }, + { + "source": "feat:importresolution/register-editor-features/commands-and-listeners", + "target": "packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts::__file__", + "kind": "feature" + }, + { + "source": "feat:importresolution/resolve-imports", + "target": "feat:importresolution/resolve-imports/packages-and-stubs", + "kind": "feature" + }, { "source": "feat:importresolution/resolve-imports/packages-and-stubs", "target": "packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts::__file__", @@ -54117,8 +54811,8 @@ "kind": "feature" }, { - "source": "feat:importresolution/resolve-imports", - "target": "feat:importresolution/resolve-imports/packages-and-stubs", + "source": "feat:importresolution/serve-language-service", + "target": "feat:importresolution/serve-language-service/editor-feature-requests", "kind": "feature" }, { @@ -54127,28 +54821,28 @@ "kind": "feature" }, { - "source": "feat:importresolution/serve-language-service", - "target": "feat:importresolution/serve-language-service/editor-feature-requests", + "source": "feat:importresolution/serve-language-service/editor-feature-requests", + "target": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", "kind": "feature" }, { - "source": "feat:importresolution", - "target": "feat:importresolution/manage-analyzer-runtime", + "source": "feat:languageserverfeatures", + "target": "feat:languageserverfeatures/bridge-filesystem-access", "kind": "feature" }, { - "source": "feat:importresolution", - "target": "feat:importresolution/register-editor-features", + "source": "feat:languageserverfeatures", + "target": "feat:languageserverfeatures/register-editor-features", "kind": "feature" }, { - "source": "feat:importresolution", - "target": "feat:importresolution/resolve-imports", + "source": "feat:languageserverfeatures", + "target": "feat:languageserverfeatures/serve-language-service", "kind": "feature" }, { - "source": "feat:importresolution", - "target": "feat:importresolution/serve-language-service", + "source": "feat:languageserverfeatures/bridge-filesystem-access", + "target": "feat:languageserverfeatures/bridge-filesystem-access/virtual-and-sandbox-files", "kind": "feature" }, { @@ -54157,8 +54851,8 @@ "kind": "feature" }, { - "source": "feat:languageserverfeatures/bridge-filesystem-access", - "target": "feat:languageserverfeatures/bridge-filesystem-access/virtual-and-sandbox-files", + "source": "feat:languageserverfeatures/register-editor-features", + "target": "feat:languageserverfeatures/register-editor-features/commands-and-listeners", "kind": "feature" }, { @@ -54187,8 +54881,28 @@ "kind": "feature" }, { - "source": "feat:languageserverfeatures/register-editor-features", - "target": "feat:languageserverfeatures/register-editor-features/commands-and-listeners", + "source": "feat:languageserverfeatures/serve-language-service", + "target": "feat:languageserverfeatures/serve-language-service/completion-requests", + "kind": "feature" + }, + { + "source": "feat:languageserverfeatures/serve-language-service", + "target": "feat:languageserverfeatures/serve-language-service/diagnostics-and-fixes", + "kind": "feature" + }, + { + "source": "feat:languageserverfeatures/serve-language-service", + "target": "feat:languageserverfeatures/serve-language-service/editor-feature-requests", + "kind": "feature" + }, + { + "source": "feat:languageserverfeatures/serve-language-service", + "target": "feat:languageserverfeatures/serve-language-service/hover-documentation", + "kind": "feature" + }, + { + "source": "feat:languageserverfeatures/serve-language-service", + "target": "feat:languageserverfeatures/serve-language-service/navigation-requests", "kind": "feature" }, { @@ -54282,43 +54996,28 @@ "kind": "feature" }, { - "source": "feat:languageserverfeatures/serve-language-service", - "target": "feat:languageserverfeatures/serve-language-service/completion-requests", - "kind": "feature" - }, - { - "source": "feat:languageserverfeatures/serve-language-service", - "target": "feat:languageserverfeatures/serve-language-service/diagnostics-and-fixes", - "kind": "feature" - }, - { - "source": "feat:languageserverfeatures/serve-language-service", - "target": "feat:languageserverfeatures/serve-language-service/editor-feature-requests", - "kind": "feature" - }, - { - "source": "feat:languageserverfeatures/serve-language-service", - "target": "feat:languageserverfeatures/serve-language-service/hover-documentation", + "source": "feat:parserandbinder", + "target": "feat:parserandbinder/evaluate-type-logic", "kind": "feature" }, { - "source": "feat:languageserverfeatures/serve-language-service", - "target": "feat:languageserverfeatures/serve-language-service/navigation-requests", + "source": "feat:parserandbinder", + "target": "feat:parserandbinder/manage-analyzer-runtime", "kind": "feature" }, { - "source": "feat:languageserverfeatures", - "target": "feat:languageserverfeatures/bridge-filesystem-access", + "source": "feat:parserandbinder", + "target": "feat:parserandbinder/parse-source-trees", "kind": "feature" }, { - "source": "feat:languageserverfeatures", - "target": "feat:languageserverfeatures/register-editor-features", + "source": "feat:parserandbinder", + "target": "feat:parserandbinder/serve-language-service", "kind": "feature" }, { - "source": "feat:languageserverfeatures", - "target": "feat:languageserverfeatures/serve-language-service", + "source": "feat:parserandbinder/evaluate-type-logic", + "target": "feat:parserandbinder/evaluate-type-logic/type-analysis", "kind": "feature" }, { @@ -54327,8 +55026,8 @@ "kind": "feature" }, { - "source": "feat:parserandbinder/evaluate-type-logic", - "target": "feat:parserandbinder/evaluate-type-logic/type-analysis", + "source": "feat:parserandbinder/manage-analyzer-runtime", + "target": "feat:parserandbinder/manage-analyzer-runtime/source-file-state", "kind": "feature" }, { @@ -54347,8 +55046,8 @@ "kind": "feature" }, { - "source": "feat:parserandbinder/manage-analyzer-runtime", - "target": "feat:parserandbinder/manage-analyzer-runtime/source-file-state", + "source": "feat:parserandbinder/parse-source-trees", + "target": "feat:parserandbinder/parse-source-trees/syntax-and-symbols", "kind": "feature" }, { @@ -54452,8 +55151,8 @@ "kind": "feature" }, { - "source": "feat:parserandbinder/parse-source-trees", - "target": "feat:parserandbinder/parse-source-trees/syntax-and-symbols", + "source": "feat:parserandbinder/serve-language-service", + "target": "feat:parserandbinder/serve-language-service/navigation-requests", "kind": "feature" }, { @@ -54477,63 +55176,73 @@ "kind": "feature" }, { - "source": "feat:parserandbinder/serve-language-service", - "target": "feat:parserandbinder/serve-language-service/navigation-requests", + "source": "feat:pyright-whole-repo", + "target": "feat:commandlineandtooling", "kind": "feature" }, { - "source": "feat:parserandbinder", - "target": "feat:parserandbinder/evaluate-type-logic", + "source": "feat:pyright-whole-repo", + "target": "feat:diagnosticsandconfiguration", "kind": "feature" }, { - "source": "feat:parserandbinder", - "target": "feat:parserandbinder/manage-analyzer-runtime", + "source": "feat:pyright-whole-repo", + "target": "feat:importresolution", "kind": "feature" }, { - "source": "feat:parserandbinder", - "target": "feat:parserandbinder/parse-source-trees", + "source": "feat:pyright-whole-repo", + "target": "feat:languageserverfeatures", "kind": "feature" }, { - "source": "feat:parserandbinder", - "target": "feat:parserandbinder/serve-language-service", + "source": "feat:pyright-whole-repo", + "target": "feat:parserandbinder", "kind": "feature" }, { "source": "feat:pyright-whole-repo", - "target": "feat:commandlineandtooling", + "target": "feat:sharedinfrastructure", "kind": "feature" }, { "source": "feat:pyright-whole-repo", - "target": "feat:diagnosticsandconfiguration", + "target": "feat:typeevaluation", "kind": "feature" }, { - "source": "feat:pyright-whole-repo", - "target": "feat:importresolution", + "source": "feat:sharedinfrastructure", + "target": "feat:sharedinfrastructure/bridge-filesystem-access", "kind": "feature" }, { - "source": "feat:pyright-whole-repo", - "target": "feat:languageserverfeatures", + "source": "feat:sharedinfrastructure", + "target": "feat:sharedinfrastructure/evaluate-type-logic", "kind": "feature" }, { - "source": "feat:pyright-whole-repo", - "target": "feat:parserandbinder", + "source": "feat:sharedinfrastructure", + "target": "feat:sharedinfrastructure/format-analyzer-output", "kind": "feature" }, { - "source": "feat:pyright-whole-repo", - "target": "feat:sharedinfrastructure", + "source": "feat:sharedinfrastructure", + "target": "feat:sharedinfrastructure/manage-analyzer-runtime", "kind": "feature" }, { - "source": "feat:pyright-whole-repo", - "target": "feat:typeevaluation", + "source": "feat:sharedinfrastructure", + "target": "feat:sharedinfrastructure/manage-shared-helpers", + "kind": "feature" + }, + { + "source": "feat:sharedinfrastructure", + "target": "feat:sharedinfrastructure/register-editor-features", + "kind": "feature" + }, + { + "source": "feat:sharedinfrastructure/bridge-filesystem-access", + "target": "feat:sharedinfrastructure/bridge-filesystem-access/virtual-and-sandbox-files", "kind": "feature" }, { @@ -54632,8 +55341,8 @@ "kind": "feature" }, { - "source": "feat:sharedinfrastructure/bridge-filesystem-access", - "target": "feat:sharedinfrastructure/bridge-filesystem-access/virtual-and-sandbox-files", + "source": "feat:sharedinfrastructure/evaluate-type-logic", + "target": "feat:sharedinfrastructure/evaluate-type-logic/type-analysis", "kind": "feature" }, { @@ -54657,8 +55366,8 @@ "kind": "feature" }, { - "source": "feat:sharedinfrastructure/evaluate-type-logic", - "target": "feat:sharedinfrastructure/evaluate-type-logic/type-analysis", + "source": "feat:sharedinfrastructure/format-analyzer-output", + "target": "feat:sharedinfrastructure/format-analyzer-output/type-and-trace-text", "kind": "feature" }, { @@ -54677,8 +55386,8 @@ "kind": "feature" }, { - "source": "feat:sharedinfrastructure/format-analyzer-output", - "target": "feat:sharedinfrastructure/format-analyzer-output/type-and-trace-text", + "source": "feat:sharedinfrastructure/manage-analyzer-runtime", + "target": "feat:sharedinfrastructure/manage-analyzer-runtime/source-file-state", "kind": "feature" }, { @@ -54822,8 +55531,8 @@ "kind": "feature" }, { - "source": "feat:sharedinfrastructure/manage-analyzer-runtime", - "target": "feat:sharedinfrastructure/manage-analyzer-runtime/source-file-state", + "source": "feat:sharedinfrastructure/manage-shared-helpers", + "target": "feat:sharedinfrastructure/manage-shared-helpers/utility-conversion-code", "kind": "feature" }, { @@ -55067,8 +55776,8 @@ "kind": "feature" }, { - "source": "feat:sharedinfrastructure/manage-shared-helpers", - "target": "feat:sharedinfrastructure/manage-shared-helpers/utility-conversion-code", + "source": "feat:sharedinfrastructure/register-editor-features", + "target": "feat:sharedinfrastructure/register-editor-features/commands-and-listeners", "kind": "feature" }, { @@ -55082,38 +55791,23 @@ "kind": "feature" }, { - "source": "feat:sharedinfrastructure/register-editor-features", - "target": "feat:sharedinfrastructure/register-editor-features/commands-and-listeners", - "kind": "feature" - }, - { - "source": "feat:sharedinfrastructure", - "target": "feat:sharedinfrastructure/bridge-filesystem-access", - "kind": "feature" - }, - { - "source": "feat:sharedinfrastructure", - "target": "feat:sharedinfrastructure/evaluate-type-logic", - "kind": "feature" - }, - { - "source": "feat:sharedinfrastructure", - "target": "feat:sharedinfrastructure/format-analyzer-output", + "source": "feat:typeevaluation", + "target": "feat:typeevaluation/evaluate-type-logic", "kind": "feature" }, { - "source": "feat:sharedinfrastructure", - "target": "feat:sharedinfrastructure/manage-analyzer-runtime", + "source": "feat:typeevaluation", + "target": "feat:typeevaluation/manage-analyzer-runtime", "kind": "feature" }, { - "source": "feat:sharedinfrastructure", - "target": "feat:sharedinfrastructure/manage-shared-helpers", + "source": "feat:typeevaluation/evaluate-type-logic", + "target": "feat:typeevaluation/evaluate-type-logic/constraint-solving", "kind": "feature" }, { - "source": "feat:sharedinfrastructure", - "target": "feat:sharedinfrastructure/register-editor-features", + "source": "feat:typeevaluation/evaluate-type-logic", + "target": "feat:typeevaluation/evaluate-type-logic/type-analysis", "kind": "feature" }, { @@ -55226,34 +55920,14 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts::__file__", "kind": "feature" }, - { - "source": "feat:typeevaluation/evaluate-type-logic", - "target": "feat:typeevaluation/evaluate-type-logic/constraint-solving", - "kind": "feature" - }, - { - "source": "feat:typeevaluation/evaluate-type-logic", - "target": "feat:typeevaluation/evaluate-type-logic/type-analysis", - "kind": "feature" - }, - { - "source": "feat:typeevaluation/manage-analyzer-runtime/source-file-state", - "target": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::__file__", - "kind": "feature" - }, { "source": "feat:typeevaluation/manage-analyzer-runtime", "target": "feat:typeevaluation/manage-analyzer-runtime/source-file-state", "kind": "feature" }, { - "source": "feat:typeevaluation", - "target": "feat:typeevaluation/evaluate-type-logic", - "kind": "feature" - }, - { - "source": "feat:typeevaluation", - "target": "feat:typeevaluation/manage-analyzer-runtime", + "source": "feat:typeevaluation/manage-analyzer-runtime/source-file-state", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/checker.ts::__file__", "kind": "feature" }, { @@ -57876,6 +58550,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::extractParameterDocumentation", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts::extractReturnDocumentation", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/enums.ts::createEnumType", @@ -58941,6 +59620,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingLambda", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingMemberAccessNode", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts::getEnclosingModule", @@ -59821,6 +60505,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::reportUnnecessaryPattern", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::specializeBoundedMatchTypeParams", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts::validateClassPattern", @@ -60121,6 +60810,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnosticsForRange", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getDiagnosticsForRangeWithoutFileIgnore", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/program.ts::Program.getFileCount", @@ -61056,6 +61750,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnostics", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnosticsWithoutFileIgnore", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts::SourceFile.getDiagnosticVersion", @@ -61296,6 +61995,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::verifyNoCyclesInChainedFiles", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::isAliasFactoryCallee", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts::isStubFile", @@ -61536,11 +62240,46 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_convertTupleToVersion", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateBoolConstant", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateBoolLikeLiteral", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateDictTruthiness", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateNumberTruthiness", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateSequenceTruthiness", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateStaticBoolOrBoolLikeExpression", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateStringBinaryOperation", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateStringListTruthiness", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts::_evaluateVersionBinaryOperation", @@ -62186,6 +62925,11 @@ "target": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getElementTypeForContainerNarrowing", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getInnermostNewTypeBaseInstance", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts::getIsInstanceClassTypes", @@ -65321,6 +66065,11 @@ "target": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.extractParameterDocumentation", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/docStringService.ts::PyrightDocStringService.extractReturnDocumentation", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts::expandPathVariables", @@ -65506,6 +66255,11 @@ "target": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.getPythonVersion", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.getUsableCwdPath", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.runScript", @@ -65526,6 +66280,11 @@ "target": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::FullAccessHost.spawnProcess", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::isUnusableCwdSpawnError", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts::LimitedAccessHost", @@ -67711,6 +68470,11 @@ "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getRootUri", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getUsableUriPath", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::getWildcardRegexPattern", @@ -67736,6 +68500,11 @@ "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isFile", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::isUsableDirectory", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::makeDirectories", @@ -68796,6 +69565,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isEnumMember", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isExpressionOnlySlot", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider._isIndexArgument", @@ -68911,6 +69685,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createAutoImporter", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createCompletionItemData", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createReplaceEdits", @@ -68921,6 +69700,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.createReplaceEditWithOverlap", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.feedsMru", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.getAutoImportText", @@ -68951,6 +69735,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.printOverriddenMethodBody", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.recordCompletionAccepted", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.resolveCompletionItem", @@ -68961,6 +69750,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::CompletionProvider.shouldProcessDeclaration", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::hoistCompletionItemDataDefault", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts::detectTrailingOverlap", @@ -68986,6 +69780,31 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_createModuleEntry", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_filterSourceMappedDeclarations", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_getDirectAssignmentExpression", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_isKnownTypingModule", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_isKnownTypingStubDeclaration", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_isTypingAliasFactoryVariableDeclaration", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts::_tryGetNode", @@ -69096,11 +69915,26 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._getResolveAliasDeclaration", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._isAlreadyCollected", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._isDeclarationAllowed", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._mergePendingSeedDeclarations", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._resultRange", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector._resultsContainsDeclaration", @@ -69126,6 +69960,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.getDeclarationsForNode", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.getSeedDeclarations", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::DocumentSymbolCollector.visitName", @@ -69151,6 +69990,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::getDeclarationsForNameNode", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts::getResultRangeKey", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts::_appendToFlatSymbolsRecursive", @@ -69256,6 +70100,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addParameterResultsPart", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::addReturnResultsPart", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::convertHoverResults", @@ -69376,6 +70225,21 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::ImportSorter.sort", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::createModuleNameCompletionDescriptor", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::getImportFromTarget", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::getModuleNameCompletionSuggestions", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts::canNavigateToFile", @@ -69436,6 +70300,11 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::isVisibleOutside", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::mergeSeedDeclarations", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider", @@ -69446,6 +70315,16 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.addReferencesToResult", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.collectFileReferences", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.collectWorkspaceReferences", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesProvider.getDeclarationForNode", @@ -69471,6 +70350,16 @@ "target": "packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts::ReferencesResult.addResults", "kind": "feature" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::assertRenameTargetsAreUserCode", + "kind": "feature" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::getRenameSymbolRange", + "kind": "feature" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::RenameProvider", @@ -76903,6 +77792,12 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::__file__", @@ -79009,6 +79904,12 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts::__file__", @@ -79609,6 +80510,12 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts::__file__", @@ -79651,6 +80558,54 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/configOptions.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/extensibility.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/uri/uri.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/docRange.ts::__file__", @@ -79849,6 +80804,12 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts::__file__", @@ -79891,6 +80852,12 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/common/uri/uri.ts::__file__", @@ -79909,6 +80876,18 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/localization/localize.ts::__file__", + "kind": "dep", + "via": "import" + }, + { + "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/parser/parser.ts::__file__", @@ -80731,6 +81710,12 @@ "kind": "dep", "via": "import" }, + { + "source": "packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts::__file__", + "target": "packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts::__file__", + "kind": "dep", + "via": "import" + }, { "source": "packages/pyright/packages/pyright-internal/src/server.ts::__file__", "target": "packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts::__file__", @@ -80937,11 +81922,12 @@ } ], "stats": { - "files": 202, - "leaves": 3443, + "files": 203, + "leaves": 3487, "high_level_nodes": 55, - "feature_edges": 3497, - "dep_edges": 1579, - "llm_calls": 4 + "feature_edges": 3541, + "dep_edges": 1595, + "llm_calls": 4, + "incremental_runs": 1 } } diff --git a/architecture/generated/README.md b/architecture/generated/README.md index aac19978c9d8..eac2a7bd3241 100644 --- a/architecture/generated/README.md +++ b/architecture/generated/README.md @@ -1,8 +1,8 @@ # Generated content diff --git a/architecture/generated/doc-manifest.json b/architecture/generated/doc-manifest.json index 74acfd678dde..43fb1aa11a67 100644 --- a/architecture/generated/doc-manifest.json +++ b/architecture/generated/doc-manifest.json @@ -1,7 +1,7 @@ { "graph_path": "packages/pyright/.rpg/rpg_encoder.json", - "graph_repo_sha": "784698179a5627072df39bbe0fcadb55bb7dd408", - "graph_generated_at": "2026-06-10T00:19:36.841Z", + "graph_repo_sha": "af737e1f2106f0fcd1e4c921a347f7873066cad4", + "graph_generated_at": "2026-06-30T03:45:39.077Z", "renderer_version": 1, "files": [ { @@ -10,11 +10,11 @@ }, { "path": "README.md", - "sha256": "ffa9ff493bfa33e6e131257f0bd048cf61dc218e8d3df5f2f09ab0dff40e0106" + "sha256": "3b49a3b8fa79696c8ac1bbc271fff6154aa92fc13759aacc087afa619856be3f" }, { "path": "feature-map.md", - "sha256": "19135790a9c00c2ae5e1f9ad827435b079ca5d8cb66b317ada91aa709b293588" + "sha256": "d0b45ce6dd004cdeef8cd1834c8c1b6a0fd572aa5f8c7427ea3ff9e83f1378b1" }, { "path": "features/.pages", @@ -22,51 +22,51 @@ }, { "path": "features/feat-cli-and-vs-code-extension.md", - "sha256": "a92363dda288954eeabe8e41c4cc502b82d223b212dd6aa2bf8750b243d6ba85" + "sha256": "e84edbf0b8b621477b5b4feb8a22dd21ce4d82cdcefd90354115401dfc25858d" }, { "path": "features/feat-constraint-solving-and-type-variables.md", - "sha256": "8dc28dc76d39923ef77d0a645028221a2ce1a98a61af65324d7a7dec96d1c7b1" + "sha256": "7d007155dfd7df8da21819129f9edc72eeb8fdc955d282203c43008c72f94990" }, { "path": "features/feat-diagnostics-and-configuration.md", - "sha256": "7e8f871112d2bb6902d9dfb14e99dd21371705bc7a2b0351df131e62771cd1b7" + "sha256": "6234d51d0548c497a5cbb0fd1ef4d67d630f932e80c8cef56f19028e3ab0b28a" }, { "path": "features/feat-documentation-and-comments.md", - "sha256": "f48c9a59ba90934b000c87ea8935e88725aa0c87b5bcc56621463b777f99bedd" + "sha256": "2bd4228f76cc7d9edf30f4f0752f3de7e9d627cf88da1c7c537576ff5c983802" }, { "path": "features/feat-flow-narrowing-and-type-guards.md", - "sha256": "d9a000e6a05b2e13e083b69daea457063ca1a073b3420e252364014164dde4fd" + "sha256": "e5d45eaf85b69a4c85db0f5e7f379a58c2e2ca27356fb0a7defdba74b867ab95" }, { "path": "features/feat-import-resolution-and-packaging.md", - "sha256": "9d04fee47761bacc9add2271c2858a8fa7afd25e35bd5ba096b64a104928abe0" + "sha256": "ed538c8981eb6f9bd8dc14d02b0d5851e8768834c4ff4f7745c52a49c4f67d29" }, { "path": "features/feat-language-service-providers.md", - "sha256": "ffb36c2f19f41d8a41490366ffaca9e4b05b6cafbd713f1cbb9a3b437234cac6" + "sha256": "97087c7ad903739c1aeab7096cf103aa5f877c493542518202432eff5f0ff54b" }, { "path": "features/feat-parser-binder-and-symbols.md", - "sha256": "80c6960fd9acd6cfe642919ae5d8faa590abb7a862afed2333f2e312bafb1ba1" + "sha256": "1c2f8c1b6ee8e1a976720964752f4bef1280b384c350f1b67f5bb1699b35cd17" }, { "path": "features/feat-program-analysis-and-scheduling.md", - "sha256": "aa5b896b214967b54452a425d3a1df5859b6540d6d8cc4bb7bf9ed33f16ab763" + "sha256": "2b5dc721130e5b8e99d06bbe93e8fb410b7cf6de38afca35bd542a583cf309e6" }, { "path": "features/feat-shared-runtime-infrastructure.md", - "sha256": "bb19b544e3bbd8752fa54b48214c74574b633fc4c1e02f8e9db6eaea2ff6c764" + "sha256": "74bee69303072454f8cb518050f6dab4f717c70e19625fa17cc804cfe001bc59" }, { "path": "features/feat-type-evaluation.md", - "sha256": "2f9c04cf04d34be2a6e1e97efe063414dc3cfcdf3fbc73b9b8d69b50cba4b14d" + "sha256": "2870507edd4fac7d4900eb6124021b6c034690653b2ebe427e8dea30b25a21ed" }, { "path": "pyright-engineering-map.md", - "sha256": "b2d0e52d1f779e4da7fd97e8fdc3ad748733fcf281370d904acec59ce22341a7" + "sha256": "bde5cc64b7208d4775e56bd1989e0db5517217e5c37ae6d26e994c2585c705a1" }, { "path": "subsystems/.pages", @@ -74,39 +74,39 @@ }, { "path": "subsystems/analyzer.md", - "sha256": "4e6cc4053515929f675e61b335c34674ebc44788b4116a3964da717e8308719f" + "sha256": "4b400e54ff5b7928d1d7b31e777f8caecf2bc62551ff916ef63881a0528f9c4c" }, { "path": "subsystems/commands.md", - "sha256": "c67599e54c00d030219f3ad712f760f5e6fae1e631447abc28469f118379e18b" + "sha256": "ec9163039654cf6d5fdc65419758888311f619c3395379a345cbf40003483ac5" }, { "path": "subsystems/common.md", - "sha256": "784c5bf8f57022aabc514036b927519106b0384a7206de9c988638aceb0b8f8c" + "sha256": "16a2e9aa908bfe38754c7cb6e762e2814ae1a67931b8928732e089a8eb872d6e" }, { "path": "subsystems/languageservice.md", - "sha256": "863a82c5c3772a0a7e14694ed87d3b712f96f4a30186220a896606981881e889" + "sha256": "e14eb80152d6ceb095bbc938862dc323891758bd7d8751cf3a0fb6ecfb5ae07a" }, { "path": "subsystems/localization.md", - "sha256": "cd1710ee91d762f8181bc22988500e016319f2dae061202d11ec9d19cb972ef7" + "sha256": "d89def6773a47a8f3ef46e0aaf706fac329e50f5834934128840a6dfad0ac4e1" }, { "path": "subsystems/parser.md", - "sha256": "549bc6705be50b68460336c05e81d16eaf523063013f46d96a609d7451687616" + "sha256": "d3034e48c7fb81f10102df4514ee1bdca3c6d8233f8e8e74643873f8732a878b" }, { "path": "subsystems/pprof.md", - "sha256": "f3fd0fbcde370db1e5d37471d735932f475765b0558a96e63e77a6f4b3f6dc29" + "sha256": "ad141c94430bf2789597d04d964b6cde0a119ec04d404a5e5c3bbd8b792ba34f" }, { "path": "subsystems/src.md", - "sha256": "8db9c336049d24c0062c9c33c5d94d5ec65a2e0a6793461c60da43cbd66a8c95" + "sha256": "fc09f654579f9b2b545bc044d535d16c18f431570a1afa103473685a7fa2e263" }, { "path": "subsystems/uri.md", - "sha256": "c57e8b453cc83f377018021ac91d5c97dba6e1ce16f0e9692f06aba4f1d213b2" + "sha256": "f560800a11404a12f5ccd32c7df2a0790c60c95e91be6334b39ddeb7b2731bb8" } ] } diff --git a/architecture/generated/feature-map.md b/architecture/generated/feature-map.md index a1637d5bda52..0f5ba3685a6c 100644 --- a/architecture/generated/feature-map.md +++ b/architecture/generated/feature-map.md @@ -1,8 +1,8 @@ # Pyright Whole Repo Semantic Feature Graph @@ -12,10 +12,10 @@ Whole-repo Pyright graph covering everything under the vendored packages/pyright - **Profile:** `pyright-whole-repo` - **Graph:** `../../.rpg/rpg_encoder.json` -- **Source commit:** `784698179a5627072df39bbe0fcadb55bb7dd408` -- **Generated:** `2026-06-10T00:19:36.841Z` +- **Source commit:** `af737e1f2106f0fcd1e4c921a347f7873066cad4` +- **Generated:** `2026-06-30T03:45:39.077Z` - **Hierarchy:** `semantic clustering` -- **Coverage:** 202 files, 3241 symbols, 12 feature nodes +- **Coverage:** 203 files, 3284 symbols, 12 feature nodes ## Find a starting point diff --git a/architecture/generated/features/feat-cli-and-vs-code-extension.md b/architecture/generated/features/feat-cli-and-vs-code-extension.md index 6effde649685..52c2517483f8 100644 --- a/architecture/generated/features/feat-cli-and-vs-code-extension.md +++ b/architecture/generated/features/feat-cli-and-vs-code-extension.md @@ -1,8 +1,8 @@ # CLI and VS Code Extension @@ -19,62 +19,62 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeMain.ts#L1-L23) | Entrypoint that starts the Pyright Node server and its background analysis runner | -| [packages/pyright/packages/pyright-internal/src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L1-L29) | Starts and configures the Pyright language server in Node, initializing deps and handling main vs worker threads | -| [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1-L1400) | Command-line entry point for the Pyright type checker, handling CLI args, diagnostics, and running analysis | -| [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L1-L50) | FileSystem wrapper that remaps URIs and delegates mutable file operations to an underlying real filesystem | -| [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L1-L333) | Implements the Pyright language server, handling workspace settings, background analysis, commands, and code actions | -| [packages/pyright/packages/pyright-internal/src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts#L1-L457) | Manages creation, initialization, and lifecycle of language server workspaces for the Pyright analyzer | -| [packages/pyright/packages/pyright/src/langserver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright/src/langserver.ts#L1-L5) | Starts the Pyright command-line entrypoint with zero worker threads | -| [packages/pyright/packages/pyright/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright/src/pyright.ts#L1-L4) | Starts the Pyright CLI | -| [packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts#L1-L99) | Provides a file-based cancellation strategy for the language server protocol | -| [packages/pyright/packages/vscode-pyright/src/extension.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/vscode-pyright/src/extension.ts#L1-L407) | Registers and manages the Pyright language server client and related VS Code commands and configuration | -| [packages/pyright/packages/vscode-pyright/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/vscode-pyright/src/server.ts#L1-L7) | Starts the Pyright VS Code language server with one background worker | +| [packages/pyright/packages/pyright-internal/src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeMain.ts#L1-L23) | Entrypoint that starts the Pyright Node server and its background analysis runner | +| [packages/pyright/packages/pyright-internal/src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L1-L29) | Starts and configures the Pyright language server in Node, initializing deps and handling main vs worker threads | +| [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1-L1400) | Command-line entry point for the Pyright type checker, handling CLI args, diagnostics, and running analysis | +| [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L1-L50) | FileSystem wrapper that remaps URIs and delegates mutable file operations to an underlying real filesystem | +| [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L1-L333) | Implements the Pyright language server, including settings, commands, code actions, and progress reporting | +| [packages/pyright/packages/pyright-internal/src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts#L1-L457) | Manages creation, initialization, and lifecycle of language server workspaces for the Pyright analyzer | +| [packages/pyright/packages/pyright/src/langserver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright/src/langserver.ts#L1-L5) | Starts the Pyright command-line entrypoint with zero worker threads | +| [packages/pyright/packages/pyright/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright/src/pyright.ts#L1-L4) | Starts the Pyright CLI | +| [packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts#L1-L99) | Provides a file-based cancellation strategy for the language server protocol | +| [packages/pyright/packages/vscode-pyright/src/extension.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/vscode-pyright/src/extension.ts#L1-L407) | Registers and manages the Pyright language server client and related VS Code commands and configuration | +| [packages/pyright/packages/vscode-pyright/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/vscode-pyright/src/server.ts#L1-L7) | Starts the Pyright VS Code language server with one background worker | ### Symbol preview (40 of 78) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `main` | function | [packages/pyright/packages/pyright-internal/src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeMain.ts#L14-L22) | -| `run` | function | [packages/pyright/packages/pyright-internal/src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L16-L24) | -| `getConnectionOptions` | function | [packages/pyright/packages/pyright-internal/src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L26-L28) | -| `processArgs` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L150-L452) | -| `runSingleThreaded` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L454-L571) | -| `runMultiThreaded` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L573-L777) | -| `runWorkerMessageLoop` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L781-L871) | -| `verifyPackageTypes` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L873-L909) | -| `accumulateReportDiagnosticStats` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L911-L919) | -| `buildTypeCompletenessReport` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L921-L1043) | -| `printTypeCompletenessReportText` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1045-L1147) | -| `printUsage` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1149-L1177) | -| `getVersionString` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1179-L1183) | -| `printVersion` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1185-L1187) | -| `reportDiagnosticsAsJson` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1189-L1237) | -| `isDiagnosticIncluded` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1239-L1252) | -| `convertDiagnosticCategoryToSeverity` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1254-L1268) | -| `convertDiagnosticToJson` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1270-L1278) | -| `reportDiagnosticsAsText` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1280-L1329) | -| `logDiagnosticToConsole` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1331-L1364) | -| `parseThreadsArgValue` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1366-L1377) | -| `main` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1383-L1399) | -| `PyrightFileSystem` | class | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L17-L49) | -| `PyrightFileSystem.mkdirSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L22-L24) | -| `PyrightFileSystem.chdir` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L26-L28) | -| `PyrightFileSystem.writeFileSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L30-L32) | -| `PyrightFileSystem.rmdirSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L34-L36) | -| `PyrightFileSystem.unlinkSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L38-L40) | -| `PyrightFileSystem.createWriteStream` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L42-L44) | -| `PyrightFileSystem.copyFileSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L46-L48) | -| `PyrightServer` | class | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L49-L332) | -| `PyrightServer.getSettings` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L95-L224) | -| `PyrightServer.createBackgroundAnalysis` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L226-L234) | -| `PyrightServer.createHost` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L236-L238) | -| `PyrightServer.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L240-L252) | -| `PyrightServer.executeCommand` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L254-L256) | -| `PyrightServer.isLongRunningCommand` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L258-L260) | -| `PyrightServer.isRefactoringCommand` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L262-L264) | -| `PyrightServer.executeCodeAction` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L266-L275) | -| `PyrightServer.createProgressReporter` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L277-L323) | +| `main` | function | [packages/pyright/packages/pyright-internal/src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeMain.ts#L14-L22) | +| `run` | function | [packages/pyright/packages/pyright-internal/src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L16-L24) | +| `getConnectionOptions` | function | [packages/pyright/packages/pyright-internal/src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L26-L28) | +| `processArgs` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L150-L452) | +| `runSingleThreaded` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L454-L571) | +| `runMultiThreaded` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L573-L777) | +| `runWorkerMessageLoop` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L781-L871) | +| `verifyPackageTypes` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L873-L909) | +| `accumulateReportDiagnosticStats` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L911-L919) | +| `buildTypeCompletenessReport` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L921-L1043) | +| `printTypeCompletenessReportText` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1045-L1147) | +| `printUsage` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1149-L1177) | +| `getVersionString` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1179-L1183) | +| `printVersion` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1185-L1187) | +| `reportDiagnosticsAsJson` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1189-L1237) | +| `isDiagnosticIncluded` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1239-L1252) | +| `convertDiagnosticCategoryToSeverity` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1254-L1268) | +| `convertDiagnosticToJson` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1270-L1278) | +| `reportDiagnosticsAsText` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1280-L1329) | +| `logDiagnosticToConsole` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1331-L1364) | +| `parseThreadsArgValue` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1366-L1377) | +| `main` | function | [packages/pyright/packages/pyright-internal/src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1383-L1399) | +| `PyrightFileSystem` | class | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L17-L49) | +| `PyrightFileSystem.mkdirSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L22-L24) | +| `PyrightFileSystem.chdir` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L26-L28) | +| `PyrightFileSystem.writeFileSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L30-L32) | +| `PyrightFileSystem.rmdirSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L34-L36) | +| `PyrightFileSystem.unlinkSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L38-L40) | +| `PyrightFileSystem.createWriteStream` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L42-L44) | +| `PyrightFileSystem.copyFileSync` | method | [packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L46-L48) | +| `PyrightServer` | class | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L49-L332) | +| `PyrightServer.getSettings` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L95-L224) | +| `PyrightServer.createBackgroundAnalysis` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L226-L234) | +| `PyrightServer.createHost` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L236-L238) | +| `PyrightServer.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L240-L252) | +| `PyrightServer.executeCommand` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L254-L256) | +| `PyrightServer.isLongRunningCommand` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L258-L260) | +| `PyrightServer.isRefactoringCommand` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L262-L264) | +| `PyrightServer.executeCodeAction` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L266-L275) | +| `PyrightServer.createProgressReporter` | method | [packages/pyright/packages/pyright-internal/src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L277-L323) | | _38 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/features/feat-constraint-solving-and-type-variables.md b/architecture/generated/features/feat-constraint-solving-and-type-variables.md index 20aebd07cb87..179c6644ae07 100644 --- a/architecture/generated/features/feat-constraint-solving-and-type-variables.md +++ b/architecture/generated/features/feat-constraint-solving-and-type-variables.md @@ -1,8 +1,8 @@ # Constraint Solving and Type Variables @@ -19,54 +19,54 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L1-L90) | Holds mappings from type variables to resolved types and manages multiple constraint solution sets | -| [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1-L1450) | Solves TypeVar, TypeVarTuple, and ParamSpec constraints to infer concrete types based on collected constraints | -| [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L1-L288) | Tracks and manages constraint sets and bounds for type variables used by the constraint solver | +| [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L1-L90) | Holds mappings from type variables to resolved types and manages multiple constraint solution sets | +| [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1-L1450) | Solves TypeVar, TypeVarTuple, and ParamSpec constraints to infer concrete types based on collected constraints | +| [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L1-L288) | Tracks and manages constraint sets and bounds for type variables used by the constraint solver | ### Symbol preview (40 of 57) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `ConstraintSolutionSet` | class | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L15-L51) | -| `ConstraintSolutionSet.isEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L23-L25) | -| `ConstraintSolutionSet.getType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L29-L32) | -| `ConstraintSolutionSet.setType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L34-L37) | -| `ConstraintSolutionSet.hasType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L39-L42) | -| `ConstraintSolutionSet.doForEachTypeVar` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L44-L50) | -| `ConstraintSolution` | class | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L53-L89) | -| `ConstraintSolution.isEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L61-L63) | -| `ConstraintSolution.setType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L65-L69) | -| `ConstraintSolution.getMainSolutionSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L71-L73) | -| `ConstraintSolution.getSolutionSets` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L75-L77) | -| `ConstraintSolution.doForEachSolutionSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L79-L83) | -| `ConstraintSolution.getSolutionSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L85-L88) | -| `assignTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L90-L215) | -| `solveConstraints` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L218-L231) | -| `applySourceSolutionToConstraints` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L234-L249) | -| `solveConstraintSet` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L251-L264) | -| `solveTypeVarRecursive` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L266-L327) | -| `addConstraintsForExpectedType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L335-L512) | -| `stripLiteralsForLowerBound` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L514-L518) | -| `getTypeVarType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L520-L574) | -| `assignBoundTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L579-L618) | -| `assignUnconstrainedTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L622-L1005) | -| `assignConstrainedTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1008-L1198) | -| `assignParamSpec` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1201-L1309) | -| `typeVarOccursIn` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1317-L1342) | -| `widenTypeForTypeVarTuple` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1347-L1375) | -| `stripLiteralValueForUnpackedTuple` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1379-L1404) | -| `logConstraints` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1408-L1420) | -| `logTypeVarConstraintSet` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1422-L1449) | -| `ConstraintSet` | class | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L40-L183) | -| `ConstraintSet.clone` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L57-L69) | -| `ConstraintSet.isSame` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L71-L97) | -| `ConstraintSet.isEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L99-L101) | -| `ConstraintSet.getScore` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L105-L123) | -| `ConstraintSet.setBounds` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L125-L133) | -| `ConstraintSet.doForEachTypeVar` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L135-L137) | -| `ConstraintSet.getTypeVar` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L139-L142) | -| `ConstraintSet.getTypeVars` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L144-L152) | -| `ConstraintSet.addScopeId` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L154-L160) | +| `ConstraintSolutionSet` | class | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L15-L51) | +| `ConstraintSolutionSet.isEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L23-L25) | +| `ConstraintSolutionSet.getType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L29-L32) | +| `ConstraintSolutionSet.setType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L34-L37) | +| `ConstraintSolutionSet.hasType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L39-L42) | +| `ConstraintSolutionSet.doForEachTypeVar` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L44-L50) | +| `ConstraintSolution` | class | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L53-L89) | +| `ConstraintSolution.isEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L61-L63) | +| `ConstraintSolution.setType` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L65-L69) | +| `ConstraintSolution.getMainSolutionSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L71-L73) | +| `ConstraintSolution.getSolutionSets` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L75-L77) | +| `ConstraintSolution.doForEachSolutionSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L79-L83) | +| `ConstraintSolution.getSolutionSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L85-L88) | +| `assignTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L90-L215) | +| `solveConstraints` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L218-L231) | +| `applySourceSolutionToConstraints` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L234-L249) | +| `solveConstraintSet` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L251-L264) | +| `solveTypeVarRecursive` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L266-L327) | +| `addConstraintsForExpectedType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L335-L512) | +| `stripLiteralsForLowerBound` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L514-L518) | +| `getTypeVarType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L520-L574) | +| `assignBoundTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L579-L618) | +| `assignUnconstrainedTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L622-L1005) | +| `assignConstrainedTypeVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1008-L1198) | +| `assignParamSpec` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1201-L1309) | +| `typeVarOccursIn` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1317-L1342) | +| `widenTypeForTypeVarTuple` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1347-L1375) | +| `stripLiteralValueForUnpackedTuple` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1379-L1404) | +| `logConstraints` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1408-L1420) | +| `logTypeVarConstraintSet` | function | [packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1422-L1449) | +| `ConstraintSet` | class | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L40-L183) | +| `ConstraintSet.clone` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L57-L69) | +| `ConstraintSet.isSame` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L71-L97) | +| `ConstraintSet.isEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L99-L101) | +| `ConstraintSet.getScore` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L105-L123) | +| `ConstraintSet.setBounds` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L125-L133) | +| `ConstraintSet.doForEachTypeVar` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L135-L137) | +| `ConstraintSet.getTypeVar` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L139-L142) | +| `ConstraintSet.getTypeVars` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L144-L152) | +| `ConstraintSet.addScopeId` | method | [packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L154-L160) | | _17 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/features/feat-diagnostics-and-configuration.md b/architecture/generated/features/feat-diagnostics-and-configuration.md index a4c28897ee05..e1bf4f2751de 100644 --- a/architecture/generated/features/feat-diagnostics-and-configuration.md +++ b/architecture/generated/features/feat-diagnostics-and-configuration.md @@ -1,8 +1,8 @@ # Diagnostics and Configuration @@ -19,66 +19,66 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts#L1-L316) | Maps implicitly deprecated typing and collection symbols to the Python version and suggested replacement | -| [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L1-L74) | Dispatches language-server commands to their specific handlers and indicates long-running/refactoring commands | -| [packages/pyright/packages/pyright-internal/src/commands/commandResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandResult.ts#L1-L22) | Defines CommandResult interface representing command output with label, edits, optional data, and a type guard | -| [packages/pyright/packages/pyright-internal/src/commands/commands.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commands.ts#L1-L22) | Exports an enum of Pyright command identifier strings used by the extension | -| [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L1-L119) | Creates a language-server command to generate Python type stubs for a specified import and notify the user | -| [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L1-L121) | Dumps tokens, syntax nodes, type info (including cached) and code-flow graph for a given file | -| [packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L1-L39) | Handles quick action commands for the language server and returns corresponding workspace edits | -| [packages/pyright/packages/pyright-internal/src/commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L1-L21) | Provides a command to restart the language server | -| [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L1-L182) | Defines command-line and language-server configuration option types for Pyright including config and server settings | -| [packages/pyright/packages/pyright-internal/src/common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts#L1-L22) | Helpers to create LSP Command objects with URI arguments converted to string form | -| [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1-L1799) | Defines ExecutionEnvironment and ConfigOptions along with helpers for diagnostic rule sets and file-spec matching | -| [packages/pyright/packages/pyright-internal/src/common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts#L1-L341) | Defines Diagnostic types, serialization, comparison, and addendum helpers for building and formatting diagnostics | -| [packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts#L1-L107) | Enumerates string identifiers for configurable diagnostic rules used by the type checker | -| [packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts#L1-L202) | Collects and deduplicates file diagnostics and provides a TextRange-aware sink that converts offsets to position ranges | -| [packages/pyright/packages/pyright-internal/src/localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts#L1-L1704) | Localization utilities and parameterized string formatting for retrieving locale-specific message strings | +| [packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts#L1-L316) | Maps implicitly deprecated typing and collection symbols to the Python version and suggested replacement | +| [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L1-L74) | Dispatches language-server commands to their specific handlers and indicates long-running/refactoring commands | +| [packages/pyright/packages/pyright-internal/src/commands/commandResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandResult.ts#L1-L22) | Defines CommandResult interface representing command output with label, edits, optional data, and a type guard | +| [packages/pyright/packages/pyright-internal/src/commands/commands.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commands.ts#L1-L22) | Exports an enum of Pyright command identifier strings used by the extension | +| [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L1-L119) | Creates a language-server command to generate Python type stubs for a specified import and notify the user | +| [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L1-L121) | Dumps tokens, syntax nodes, type info (including cached) and code-flow graph for a given file | +| [packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L1-L39) | Handles quick action commands for the language server and returns corresponding workspace edits | +| [packages/pyright/packages/pyright-internal/src/commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L1-L21) | Provides a command to restart the language server | +| [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L1-L182) | Defines command-line and language-server configuration option types for Pyright including config and server settings | +| [packages/pyright/packages/pyright-internal/src/common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts#L1-L22) | Helpers to create LSP Command objects with URI arguments converted to string form | +| [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1-L1799) | Defines ExecutionEnvironment and ConfigOptions along with helpers for diagnostic rule sets and file-spec matching | +| [packages/pyright/packages/pyright-internal/src/common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts#L1-L341) | Defines Diagnostic types, serialization, comparison, and addendum helpers for building and formatting diagnostics | +| [packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts#L1-L107) | Enumerates string identifiers for configurable diagnostic rules used by the type checker | +| [packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts#L1-L202) | Collects and deduplicates file diagnostics and provides a TextRange-aware sink that converts offsets to position ranges | +| [packages/pyright/packages/pyright-internal/src/localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts#L1-L1690) | Provides locale-aware lookup and formatting for Pyright user-facing strings | ### Symbol preview (40 of 117) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `CommandController` | class | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L22-L73) | -| `CommandController.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L35-L57) | -| `CommandController.isLongRunningCommand` | method | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L59-L68) | -| `CommandController.isRefactoringCommand` | method | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L70-L72) | -| `BaseCreateTypeStubCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L19-L99) | -| `BaseCreateTypeStubCommand.createTypeStub` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L24-L58) | -| `BaseCreateTypeStubCommand.getCloneOptions` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L60-L65) | -| `BaseCreateTypeStubCommand.onTypeStubCreated` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L67-L69) | -| `BaseCreateTypeStubCommand.writeTypeStub` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L71-L86) | -| `BaseCreateTypeStubCommand.getSuccessMessage` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L88-L90) | -| `BaseCreateTypeStubCommand.getCancellationMessage` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L92-L94) | -| `BaseCreateTypeStubCommand.getErrorPrefix` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L96-L98) | -| `CreateTypeStubCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L101-L118) | -| `CreateTypeStubCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L106-L117) | -| `DumpFileDebugInfoCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L19-L34) | -| `DumpFileDebugInfoCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L22-L33) | -| `DumpFileDebugInfo` | class | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L36-L120) | -| `DumpFileDebugInfo.dump` | method | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L37-L119) | -| `QuickActionCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L18-L38) | -| `QuickActionCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L21-L37) | -| `RestartServerCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L14-L20) | -| `RestartServerCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L17-L19) | -| `getDiagnosticSeverityOverrides` | function | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L23-L30) | -| `CommandLineConfigOptions` | class | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L37-L106) | -| `CommandLineLanguageServerOptions` | class | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L109-L152) | -| `CommandLineOptions` | class | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L158-L181) | -| `createCommand` | function | [packages/pyright/packages/pyright-internal/src/common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts#L12-L21) | -| `ExecutionEnvironment` | class | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L42-L86) | -| `cloneDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L403-L406) | -| `getBooleanDiagnosticRules` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L410-L431) | -| `getDiagLevelDiagnosticRules` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L435-L519) | -| `getStrictModeNotOverriddenRules` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L521-L525) | -| `getOffDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L527-L628) | -| `getBasicDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L630-L731) | -| `getStandardDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L733-L834) | -| `getStrictDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L836-L937) | -| `matchFileSpecs` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L939-L947) | -| `ConfigOptions` | class | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L951-L1777) | -| `ConfigOptions.getDiagnosticRuleSet` | method | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1091-L1105) | -| `ConfigOptions.getDefaultExecEnvironment` | method | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1107-L1117) | +| `CommandController` | class | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L22-L73) | +| `CommandController.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L35-L57) | +| `CommandController.isLongRunningCommand` | method | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L59-L68) | +| `CommandController.isRefactoringCommand` | method | [packages/pyright/packages/pyright-internal/src/commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L70-L72) | +| `BaseCreateTypeStubCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L19-L99) | +| `BaseCreateTypeStubCommand.createTypeStub` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L24-L58) | +| `BaseCreateTypeStubCommand.getCloneOptions` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L60-L65) | +| `BaseCreateTypeStubCommand.onTypeStubCreated` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L67-L69) | +| `BaseCreateTypeStubCommand.writeTypeStub` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L71-L86) | +| `BaseCreateTypeStubCommand.getSuccessMessage` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L88-L90) | +| `BaseCreateTypeStubCommand.getCancellationMessage` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L92-L94) | +| `BaseCreateTypeStubCommand.getErrorPrefix` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L96-L98) | +| `CreateTypeStubCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L101-L118) | +| `CreateTypeStubCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L106-L117) | +| `DumpFileDebugInfoCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L19-L34) | +| `DumpFileDebugInfoCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L22-L33) | +| `DumpFileDebugInfo` | class | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L36-L120) | +| `DumpFileDebugInfo.dump` | method | [packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L37-L119) | +| `QuickActionCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L18-L38) | +| `QuickActionCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L21-L37) | +| `RestartServerCommand` | class | [packages/pyright/packages/pyright-internal/src/commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L14-L20) | +| `RestartServerCommand.execute` | method | [packages/pyright/packages/pyright-internal/src/commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L17-L19) | +| `getDiagnosticSeverityOverrides` | function | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L23-L30) | +| `CommandLineConfigOptions` | class | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L37-L106) | +| `CommandLineLanguageServerOptions` | class | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L109-L152) | +| `CommandLineOptions` | class | [packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L158-L181) | +| `createCommand` | function | [packages/pyright/packages/pyright-internal/src/common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts#L12-L21) | +| `ExecutionEnvironment` | class | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L42-L86) | +| `cloneDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L403-L406) | +| `getBooleanDiagnosticRules` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L410-L431) | +| `getDiagLevelDiagnosticRules` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L435-L519) | +| `getStrictModeNotOverriddenRules` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L521-L525) | +| `getOffDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L527-L628) | +| `getBasicDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L630-L731) | +| `getStandardDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L733-L834) | +| `getStrictDiagnosticRuleSet` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L836-L937) | +| `matchFileSpecs` | function | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L939-L947) | +| `ConfigOptions` | class | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L951-L1777) | +| `ConfigOptions.getDiagnosticRuleSet` | method | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1091-L1105) | +| `ConfigOptions.getDefaultExecEnvironment` | method | [packages/pyright/packages/pyright-internal/src/common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1107-L1117) | | _77 additional symbols omitted_ | | | ## Dependencies @@ -131,7 +131,9 @@ These are the main implementation files attached to this semantic node. - `packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts` - `packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts` +- `packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts` - `packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts` +- `packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts` - `packages/pyright/packages/pyright-internal/src/parser/parser.ts` - `packages/pyright/packages/pyright-internal/src/partialStubService.ts` diff --git a/architecture/generated/features/feat-documentation-and-comments.md b/architecture/generated/features/feat-documentation-and-comments.md index a03d1e87d0ad..0a393e3f0c66 100644 --- a/architecture/generated/features/feat-documentation-and-comments.md +++ b/architecture/generated/features/feat-documentation-and-comments.md @@ -1,8 +1,8 @@ # Documentation and Comments @@ -11,7 +11,7 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary - **Files:** 3 -- **Symbols:** 58 +- **Symbols:** 59 ### Primary files @@ -19,55 +19,55 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L1-L318) | Parses pyright-specific comments to adjust diagnostic rule settings and collect comment diagnostics | -| [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L1-L873) | Converts Python docstrings into Markdown or cleaned plaintext for documentation and display | -| [packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts#L1-L153) | Parses Python docstrings and extracts parameter and attribute docs in Epytext, reST, and Google styles | +| [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L1-L318) | Parses pyright-specific comments to adjust diagnostic rule settings and collect comment diagnostics | +| [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L1-L873) | Converts Python docstrings into Markdown or cleaned plaintext for documentation and display | +| [packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts#L1-L240) | Cleans Python docstrings and extracts parameter, attribute, and return documentation | -### Symbol preview (40 of 58) +### Symbol preview (40 of 59) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `getFileLevelDirectives` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L40-L77) | -| `_applyStrictRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L79-L81) | -| `_applyStandardRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L83-L85) | -| `_applyBasicRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L87-L89) | -| `_overrideRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L91-L127) | -| `_overwriteRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L129-L140) | -| `_parsePyrightComment` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L142-L195) | -| `_parsePyrightOperand` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L197-L264) | -| `_parseDiagLevel` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L266-L285) | -| `_parseBoolSetting` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L287-L295) | -| `_trimTextWithRange` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L299-L317) | -| `convertDocStringToMarkdown` | function | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L22-L24) | -| `convertDocStringToPlainText` | function | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L29-L43) | -| `DocStringConverter` | class | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L111-L860) | -| `DocStringConverter.convert` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L135-L167) | -| `DocStringConverter._eatLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L169-L171) | -| `DocStringConverter._currentLineOrUndefined` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L173-L175) | -| `DocStringConverter._currentLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L177-L179) | -| `DocStringConverter._currentIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L181-L183) | -| `DocStringConverter._prevIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L185-L187) | -| `DocStringConverter._lineAt` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L189-L191) | -| `DocStringConverter._nextBlockIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L193-L197) | -| `DocStringConverter._currentLineIsOutsideBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L199-L201) | -| `DocStringConverter._currentLineWithinBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L203-L205) | -| `DocStringConverter._pushAndSetState` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L207-L214) | -| `DocStringConverter._popState` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L216-L223) | -| `DocStringConverter._parseText` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L225-L263) | -| `DocStringConverter._formatPlainTextIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L265-L295) | -| `DocStringConverter._convertIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L297-L300) | -| `DocStringConverter._escapeHtml` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L302-L308) | -| `DocStringConverter._appendTextLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L310-L398) | -| `DocStringConverter._preprocessTextLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L400-L410) | -| `DocStringConverter._parseEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L412-L420) | -| `DocStringConverter._beginMinIndentCodeBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L422-L426) | -| `DocStringConverter._beginBacktickBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L428-L442) | -| `DocStringConverter._parseBacktickBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L444-L457) | -| `DocStringConverter._beginDocTest` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L459-L468) | -| `DocStringConverter._parseDocTest` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L470-L480) | -| `DocStringConverter._beginLiteralBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L482-L520) | -| `DocStringConverter._parseLiteralBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L522-L540) | -| _18 additional symbols omitted_ | | | +| `getFileLevelDirectives` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L40-L77) | +| `_applyStrictRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L79-L81) | +| `_applyStandardRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L83-L85) | +| `_applyBasicRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L87-L89) | +| `_overrideRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L91-L127) | +| `_overwriteRules` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L129-L140) | +| `_parsePyrightComment` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L142-L195) | +| `_parsePyrightOperand` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L197-L264) | +| `_parseDiagLevel` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L266-L285) | +| `_parseBoolSetting` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L287-L295) | +| `_trimTextWithRange` | function | [packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L299-L317) | +| `convertDocStringToMarkdown` | function | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L22-L24) | +| `convertDocStringToPlainText` | function | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L29-L43) | +| `DocStringConverter` | class | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L111-L860) | +| `DocStringConverter.convert` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L135-L167) | +| `DocStringConverter._eatLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L169-L171) | +| `DocStringConverter._currentLineOrUndefined` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L173-L175) | +| `DocStringConverter._currentLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L177-L179) | +| `DocStringConverter._currentIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L181-L183) | +| `DocStringConverter._prevIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L185-L187) | +| `DocStringConverter._lineAt` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L189-L191) | +| `DocStringConverter._nextBlockIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L193-L197) | +| `DocStringConverter._currentLineIsOutsideBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L199-L201) | +| `DocStringConverter._currentLineWithinBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L203-L205) | +| `DocStringConverter._pushAndSetState` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L207-L214) | +| `DocStringConverter._popState` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L216-L223) | +| `DocStringConverter._parseText` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L225-L263) | +| `DocStringConverter._formatPlainTextIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L265-L295) | +| `DocStringConverter._convertIndent` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L297-L300) | +| `DocStringConverter._escapeHtml` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L302-L308) | +| `DocStringConverter._appendTextLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L310-L398) | +| `DocStringConverter._preprocessTextLine` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L400-L410) | +| `DocStringConverter._parseEmpty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L412-L420) | +| `DocStringConverter._beginMinIndentCodeBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L422-L426) | +| `DocStringConverter._beginBacktickBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L428-L442) | +| `DocStringConverter._parseBacktickBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L444-L457) | +| `DocStringConverter._beginDocTest` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L459-L468) | +| `DocStringConverter._parseDocTest` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L470-L480) | +| `DocStringConverter._beginLiteralBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L482-L520) | +| `DocStringConverter._parseLiteralBlock` | method | [packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L522-L540) | +| _19 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/features/feat-flow-narrowing-and-type-guards.md b/architecture/generated/features/feat-flow-narrowing-and-type-guards.md index 29515b52c5a0..c3f38a9490fc 100644 --- a/architecture/generated/features/feat-flow-narrowing-and-type-guards.md +++ b/architecture/generated/features/feat-flow-narrowing-and-type-guards.md @@ -1,8 +1,8 @@ # Flow Narrowing and Type Guards @@ -11,7 +11,7 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary - **Files:** 6 -- **Symbols:** 67 +- **Symbols:** 76 ### Primary files @@ -19,58 +19,58 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L1-L2061) | Determines narrowed types for variables and expressions and computes statement reachability via the code flow graph | -| [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L1-L286) | Types and helpers for tracking code-flow nodes and reference keys used in Pyright's code flow analysis | -| [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts#L1-L446) | Generates an ASCII diagram of a control flow graph from FlowNode structures | -| [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1-L2254) | Type evaluation and narrowing utilities for Python structural pattern matching (PEP 634) in Pyright | -| [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L1-L377) | Evaluates parse-node expressions to determine static boolean, version, and platform string outcomes | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L1-L2814) | Narrow types based on conditional expressions, isinstance checks, and user-defined type guards | +| [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L1-L2073) | Determines flow-sensitive type narrowing and reachability from Pyright control-flow graphs | +| [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L1-L286) | Types and helpers for tracking code-flow nodes and reference keys used in Pyright's code flow analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts#L1-L446) | Generates an ASCII diagram of a control flow graph from FlowNode structures | +| [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1-L2316) | Narrows and validates Python match-case pattern types for Pyright analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L1-L502) | Evaluates Python parse expressions that can be statically resolved for truthiness and platform/version checks | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L1-L2870) | Narrows Pyright types from conditional expressions, type guards, literal checks, and container membership | -### Symbol preview (40 of 67) +### Symbol preview (40 of 76) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `isIncompleteType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L162-L164) | -| `getCodeFlowEngine` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L201-L2060) | -| `getUniqueFlowNodeId` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L61-L63) | -| `isCodeFlowSupportedForReference` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L170-L221) | -| `createKeyForReference` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L223-L256) | -| `createKeysForReferenceSubexpressions` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L258-L282) | -| `formatControlFlowGraph` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts#L28-L445) | -| `narrowTypeBasedOnPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L137-L177) | -| `checkForUnusedPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L181-L207) | -| `narrowTypeBasedOnSequencePattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L209-L422) | -| `narrowTypeBasedOnAsPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L424-L450) | -| `narrowTypeBasedOnMappingPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L452-L637) | -| `getPositionalMatchArgNames` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L641-L666) | -| `narrowTypeBasedOnLiteralPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L668-L744) | -| `narrowTypeBasedOnClassPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L746-L1067) | -| `isClassSpecialCaseForClassPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1071-L1090) | -| `narrowTypeOfClassPatternArg` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1093-L1171) | -| `narrowTypeBasedOnValuePattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1173-L1270) | -| `getMappingPatternInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1274-L1354) | -| `getSequencePatternInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1359-L1681) | -| `getTypeOfPatternSequenceEntry` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1683-L1738) | -| `assignTypeToPatternTargets` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1742-L1981) | -| `wrapTypeInList` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1983-L1998) | -| `validateClassPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2000-L2082) | -| `getPatternSubtypeNarrowingCallback` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2087-L2235) | -| `reportUnnecessaryPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2237-L2253) | -| `evaluateStaticBoolExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L18-L174) | -| `evaluateStaticBoolLikeExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L179-L193) | -| `_convertTupleToVersion` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L195-L251) | -| `_evaluateVersionBinaryOperation` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L253-L285) | -| `_evaluateStringBinaryOperation` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L287-L301) | -| `_isSysVersionInfoExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L303-L313) | -| `_isSysPlatformInfoExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L315-L325) | -| `_isOsNameInfoExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L327-L339) | -| `_getExpectedPlatformNameFromPlatform` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L341-L360) | -| `_getExpectedOsNameFromPlatform` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L362-L376) | -| `getTypeNarrowingCallback` | function | [packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L117-L861) | -| `getTypeNarrowingCallbackForAliasedCondition` | function | [packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L863-L927) | -| `getDeclsForLocalVar` | function | [packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L932-L980) | -| `getTypeNarrowingCallbackForAssignmentExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L982-L993) | -| _27 additional symbols omitted_ | | | +| `isIncompleteType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L164-L166) | +| `getCodeFlowEngine` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L203-L2072) | +| `getUniqueFlowNodeId` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L61-L63) | +| `isCodeFlowSupportedForReference` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L170-L221) | +| `createKeyForReference` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L223-L256) | +| `createKeysForReferenceSubexpressions` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L258-L282) | +| `formatControlFlowGraph` | function | [packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts#L28-L445) | +| `narrowTypeBasedOnPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L139-L179) | +| `checkForUnusedPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L183-L209) | +| `narrowTypeBasedOnSequencePattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L211-L424) | +| `narrowTypeBasedOnAsPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L426-L452) | +| `narrowTypeBasedOnMappingPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L454-L639) | +| `getPositionalMatchArgNames` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L643-L668) | +| `narrowTypeBasedOnLiteralPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L670-L746) | +| `specializeBoundedMatchTypeParams` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L754-L784) | +| `narrowTypeBasedOnClassPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L786-L1129) | +| `isClassSpecialCaseForClassPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1133-L1152) | +| `narrowTypeOfClassPatternArg` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1155-L1233) | +| `narrowTypeBasedOnValuePattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1235-L1332) | +| `getMappingPatternInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1336-L1416) | +| `getSequencePatternInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1421-L1743) | +| `getTypeOfPatternSequenceEntry` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1745-L1800) | +| `assignTypeToPatternTargets` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1804-L2043) | +| `wrapTypeInList` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2045-L2060) | +| `validateClassPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2062-L2144) | +| `getPatternSubtypeNarrowingCallback` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2149-L2297) | +| `reportUnnecessaryPattern` | function | [packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L2299-L2315) | +| `evaluateStaticBoolExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L27-L42) | +| `evaluateStaticBoolLikeExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L47-L62) | +| `_evaluateStaticBoolOrBoolLikeExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L66-L223) | +| `_evaluateBoolConstant` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L225-L236) | +| `_evaluateBoolLikeLiteral` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L238-L269) | +| `_evaluateNumberTruthiness` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L271-L279) | +| `_evaluateStringListTruthiness` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L281-L290) | +| `_evaluateSequenceTruthiness` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L292-L304) | +| `_evaluateDictTruthiness` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L306-L318) | +| `_convertTupleToVersion` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L320-L376) | +| `_evaluateVersionBinaryOperation` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L378-L410) | +| `_evaluateStringBinaryOperation` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L412-L426) | +| `_isSysVersionInfoExpression` | function | [packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L428-L438) | +| _36 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/features/feat-import-resolution-and-packaging.md b/architecture/generated/features/feat-import-resolution-and-packaging.md index 1155c4b39fe8..274bd8a007e2 100644 --- a/architecture/generated/features/feat-import-resolution-and-packaging.md +++ b/architecture/generated/features/feat-import-resolution-and-packaging.md @@ -1,8 +1,8 @@ # Import Resolution and Packaging @@ -11,7 +11,7 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary - **Files:** 16 -- **Symbols:** 267 +- **Symbols:** 268 ### Primary files @@ -19,68 +19,68 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L1-L21) | Provides a simple logger for collecting and retrieving import resolution messages | -| [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1-L2576) | Resolves Python imports to filesystem modules, packages, typeshed and stub sources for static type analysis | -| [packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts#L1-L203) | Cached file-system adapter for import resolution, exposing directory/file queries and resolvable name lookups | -| [packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts#L1-L62) | Type declarations for import resolver helpers including typeshed info provider and a minimal cached filesystem facade | -| [packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts#L1-L109) | Represents Python import resolution results with metadata, resolved URIs, and implicit import info | -| [packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts#L1-L1016) | Summarizes and manipulates Python import statements and generates edits for auto-imports and formatting | -| [packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts#L1-L113) | Defines types and a factory for package type verification reports, symbols, modules, and diagnostics | -| [packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts#L1-L1582) | Validates public exports of a package to ensure exported types are complete and reports problems | -| [packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts#L1-L66) | Determines whether a py.typed file exists and if it marks the package as partially typed | -| [packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts#L1-L251) | Resolves Python interpreter and typeshed search paths, site-packages locations, and .pth-derived paths | -| [packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts#L1-L234) | Enumerates Python source files with include/exclude rules, tracking symlinked directories and auto-excluding virtualenvs | -| [packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts#L1-L1137) | Maps .pyi stub files to corresponding .py implementation files and provides binding utilities | -| [packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts#L1-L64) | Finds an import chain between two Uri nodes and returns the sequence of Uris | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts#L1-L925) | Emit Python .pyi type stub files from parsed and analyzed Python source files | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts#L1-L253) | Provides typeshed root/subdirectory lookup, third-party package mapping, and stdlib version info | -| [packages/pyright/packages/pyright-internal/src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/partialStubService.ts#L1-L181) | Maps partially typed stub packages into corresponding installed library directories and provides a no-op alternative | +| [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L1-L21) | Provides a simple logger for collecting and retrieving import resolution messages | +| [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1-L2646) | Resolves Python imports to modules, paths, stubs, and typing metadata for Pyright analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts#L1-L203) | Cached file-system adapter for import resolution, exposing directory/file queries and resolvable name lookups | +| [packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts#L1-L62) | Type declarations for import resolver helpers including typeshed info provider and a minimal cached filesystem facade | +| [packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts#L1-L109) | Represents Python import resolution results with metadata, resolved URIs, and implicit import info | +| [packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts#L1-L1037) | Provides utilities for classifying, comparing, editing, and resolving Python import statements | +| [packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts#L1-L113) | Defines types and a factory for package type verification reports, symbols, modules, and diagnostics | +| [packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts#L1-L1582) | Validates public exports of a package to ensure exported types are complete and reports problems | +| [packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts#L1-L66) | Determines whether a py.typed file exists and if it marks the package as partially typed | +| [packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts#L1-L255) | Resolves Python import search paths, typeshed locations, site-packages, and .pth entries | +| [packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts#L1-L243) | Enumerates project Python source files and reports matches, auto-excluded venvs, completion, and symlink roots | +| [packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts#L1-L1149) | Maps stub declarations to their corresponding Python source declarations | +| [packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts#L1-L64) | Finds an import chain between two Uri nodes and returns the sequence of Uris | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts#L1-L925) | Emit Python .pyi type stub files from parsed and analyzed Python source files | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts#L1-L253) | Provides typeshed root/subdirectory lookup, third-party package mapping, and stdlib version info | +| [packages/pyright/packages/pyright-internal/src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/partialStubService.ts#L1-L181) | Maps partially typed stub packages into corresponding installed library directories and provides a no-op alternative | -### Symbol preview (40 of 267) +### Symbol preview (40 of 268) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `ImportLogger` | class | [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L10-L20) | -| `ImportLogger.log` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L13-L15) | -| `ImportLogger.getLogs` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L17-L19) | -| `createImportedModuleDescriptor` | function | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L59-L79) | -| `ImportResolver` | class | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L94-L2480) | -| `ImportResolver.isSupportedImportSourceFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L131-L134) | -| `ImportResolver.isSupportedImportFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L136-L139) | -| `ImportResolver.invalidateCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L141-L150) | -| `ImportResolver.resolveImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L154-L162) | -| `ImportResolver.getCompletionSuggestions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L164-L194) | -| `ImportResolver.getConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L196-L198) | -| `ImportResolver.setConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L200-L203) | -| `ImportResolver.getSourceFilesFromStub` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L206-L302) | -| `ImportResolver.getModuleNameForImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L307-L323) | -| `ImportResolver.getTypeshedStdLibPath` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L325-L332) | -| `ImportResolver.getTypeshedThirdPartyPath` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L334-L336) | -| `ImportResolver.isStdlibModule` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L338-L344) | -| `ImportResolver.getImportRoots` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L346-L393) | -| `ImportResolver.ensurePartialStubPackages` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L395-L427) | -| `ImportResolver.getPythonSearchPaths` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L429-L442) | -| `ImportResolver.getTypeshedStdlibExcludeList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L444-L501) | -| `ImportResolver.getTypeshedPathEx` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L505-L507) | -| `ImportResolver.resolveImportInternal` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L511-L588) | -| `ImportResolver.fileExistsCached` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L590-L592) | -| `ImportResolver.dirExistsCached` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L594-L596) | -| `ImportResolver.addResultsToCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L598-L615) | -| `ImportResolver.resolveAbsoluteImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L619-L677) | -| `ImportResolver.resolveImportEx` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L682-L691) | -| `ImportResolver.resolveNativeImportEx` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L696-L702) | -| `ImportResolver.getNativeModuleName` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L704-L710) | -| `ImportResolver.filterImplicitImports` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L714-L746) | -| `ImportResolver.findImplicitImports` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L748-L840) | -| `ImportResolver._isPossibleImportDir` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L842-L862) | -| `ImportResolver._resolveImportStrict` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L864-L988) | -| `ImportResolver._getCompletionSuggestionsStrict` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L990-L1055) | -| `ImportResolver._getModuleNameForImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1057-L1259) | -| `ImportResolver._invalidateFileSystemCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1261-L1263) | -| `ImportResolver._resolveAbsoluteImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1265-L1454) | -| `ImportResolver._getImportCacheKey` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1456-L1458) | -| `ImportResolver._lookUpResultsInCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1460-L1484) | -| _227 additional symbols omitted_ | | | +| `ImportLogger` | class | [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L10-L20) | +| `ImportLogger.log` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L13-L15) | +| `ImportLogger.getLogs` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L17-L19) | +| `createImportedModuleDescriptor` | function | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L59-L79) | +| `ImportResolver` | class | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L94-L2550) | +| `ImportResolver.isSupportedImportSourceFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L131-L134) | +| `ImportResolver.isSupportedImportFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L136-L139) | +| `ImportResolver.invalidateCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L141-L150) | +| `ImportResolver.resolveImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L154-L162) | +| `ImportResolver.getCompletionSuggestions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L164-L194) | +| `ImportResolver.getConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L196-L198) | +| `ImportResolver.setConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L200-L203) | +| `ImportResolver.getSourceFilesFromStub` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L206-L302) | +| `ImportResolver.getModuleNameForImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L307-L323) | +| `ImportResolver.getTypeshedStdLibPath` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L325-L332) | +| `ImportResolver.getTypeshedThirdPartyPath` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L334-L336) | +| `ImportResolver.isStdlibModule` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L338-L351) | +| `ImportResolver.getImportRoots` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L353-L400) | +| `ImportResolver.ensurePartialStubPackages` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L402-L434) | +| `ImportResolver.getPythonSearchPaths` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L436-L449) | +| `ImportResolver.getTypeshedStdlibExcludeList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L451-L508) | +| `ImportResolver.getTypeshedPathEx` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L512-L514) | +| `ImportResolver.resolveImportInternal` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L518-L595) | +| `ImportResolver.fileExistsCached` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L597-L599) | +| `ImportResolver.dirExistsCached` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L601-L603) | +| `ImportResolver.addResultsToCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L605-L622) | +| `ImportResolver.resolveAbsoluteImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L626-L684) | +| `ImportResolver.resolveImportEx` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L689-L698) | +| `ImportResolver.resolveNativeImportEx` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L703-L709) | +| `ImportResolver.getNativeModuleName` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L711-L717) | +| `ImportResolver.filterImplicitImports` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L721-L753) | +| `ImportResolver.findImplicitImports` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L755-L847) | +| `ImportResolver._isPossibleImportDir` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L849-L869) | +| `ImportResolver._resolveImportStrict` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L871-L995) | +| `ImportResolver._getCompletionSuggestionsStrict` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L997-L1062) | +| `ImportResolver._getModuleNameForImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1064-L1266) | +| `ImportResolver._invalidateFileSystemCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1268-L1270) | +| `ImportResolver._resolveAbsoluteImport` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1272-L1497) | +| `ImportResolver._getImportCacheKey` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1499-L1501) | +| `ImportResolver._lookUpResultsInCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1503-L1527) | +| _228 additional symbols omitted_ | | | ## Dependencies @@ -112,6 +112,7 @@ These are the main implementation files attached to this semantic node. - `packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts` - `packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts` +- `packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts` - `packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts` - `packages/pyright/packages/pyright-internal/src/pyright.ts` diff --git a/architecture/generated/features/feat-language-service-providers.md b/architecture/generated/features/feat-language-service-providers.md index f746e35e26f4..75b536cf87a9 100644 --- a/architecture/generated/features/feat-language-service-providers.md +++ b/architecture/generated/features/feat-language-service-providers.md @@ -1,8 +1,8 @@ # Language Service Providers @@ -10,8 +10,8 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary -- **Files:** 24 -- **Symbols:** 354 +- **Files:** 25 +- **Symbols:** 378 ### Primary files @@ -19,76 +19,77 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L1-L1620) | Provides core language server functionality and LSP handlers for Pyright | -| [packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts#L1-L166) | Runs and clones AnalyzerService and builds command-line options from server settings | -| [packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts#L1-L859) | Provides auto-import completion logic and utilities for finding module symbols and generating import edits | -| [packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts#L1-L628) | Provides call hierarchy items (callers and callees) for a code position across the workspace | -| [packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts#L1-L78) | Provides quick-fix code actions for diagnostics, including a create-type-stub action | -| [packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts#L1-L3698) | Provides Python language completion items for a source position using type and symbol analysis | -| [packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts#L1-L252) | Helper utilities for completion items: type details, formatted documentation, and trailing overlap detection | -| [packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts#L1-L348) | Maps positions to symbol and type declarations for go-to-definition and type-definition features | -| [packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts#L1-L76) | Provides document highlights for a name at a given position, classifying occurrences as read or write | -| [packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts#L1-L622) | Collects and resolves symbol declarations and references within a parse tree for document-level symbol occurrences | -| [packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts#L1-L147) | Provides document symbol extraction and conversion to hierarchical or flat LSP SymbolInformation for a source file | -| [packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts#L1-L75) | Manages dynamic LSP features with register/update/dispose logic and a registry for multiple features | -| [packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts#L1-L79) | Registers LSP file-watcher notifications for workspace config files and Python search paths | -| [packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts#L1-L682) | Generates editor hover tooltips for Python symbols with type info, signatures, and documentation | -| [packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts#L1-L197) | Sorts and formats top-level Python import statements and produces TextEditAction replacements | -| [packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts#L1-L33) | Provides helpers to check file navigability and convert DocumentRange objects to LSP Location values | -| [packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts#L1-L52) | Registers and manages pull-mode diagnostics and workspace support with the language server | -| [packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts#L1-L45) | Provides quick action handlers for source files such as ordering imports | -| [packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts#L1-L528) | Finds symbol references in files and returns DocumentRange/LSP locations | -| [packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts#L1-L204) | Provides rename support: checks rename eligibility and produces workspace edits for a symbol and its references | -| [packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts#L1-L488) | Provides signature help for Python call sites by mapping a cursor position to callable signatures and parameter info | -| [packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts#L1-L219) | Indexes all externally visible symbols and aliases in a source file into structured metadata | -| [packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts#L1-L846) | Formats and generates hover/completion tooltips and documentation text for types, functions, classes, and symbols | -| [packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts#L1-L162) | Provides workspace symbol search for the language server across user code | +| [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L1-L1635) | Provides shared language server base functionality for Pyright language server variants | +| [packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts#L1-L166) | Runs and clones AnalyzerService and builds command-line options from server settings | +| [packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts#L1-L859) | Provides auto-import completion logic and utilities for finding module symbols and generating import edits | +| [packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts#L1-L628) | Provides call hierarchy items (callers and callees) for a code position across the workspace | +| [packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts#L1-L78) | Provides quick-fix code actions for diagnostics, including a create-type-stub action | +| [packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts#L1-L3867) | Provides Python language-service completions for symbols, imports, members, calls, literals, and snippets | +| [packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts#L1-L254) | Builds completion item details, documentation, and trailing text overlap metadata for Pyright completions | +| [packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts#L1-L420) | Provides go-to-definition and type-definition results for Python symbols in analyzed source files | +| [packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts#L1-L76) | Provides document highlights for a name at a given position, classifying occurrences as read or write | +| [packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts#L1-L737) | Collects document ranges that refer to the same semantic symbol for reference and rename features | +| [packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts#L1-L147) | Provides document symbol extraction and conversion to hierarchical or flat LSP SymbolInformation for a source file | +| [packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts#L1-L75) | Manages dynamic LSP features with register/update/dispose logic and a registry for multiple features | +| [packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts#L1-L79) | Registers LSP file-watcher notifications for workspace config files and Python search paths | +| [packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts#L1-L712) | Provides markdown hover text for Python symbols at editor positions | +| [packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts#L1-L197) | Sorts and formats top-level Python import statements and produces TextEditAction replacements | +| [packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts#L1-L100) | Enumerates import-statement candidate names from module completions and resolved from-import targets | +| [packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts#L1-L33) | Provides helpers to check file navigability and convert DocumentRange objects to LSP Location values | +| [packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts#L1-L52) | Registers and manages pull-mode diagnostics and workspace support with the language server | +| [packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts#L1-L45) | Provides quick action handlers for source files such as ordering imports | +| [packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts#L1-L734) | Finds and reports symbol references across files with declaration seeding and visibility-aware workspace traversal | +| [packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts#L1-L245) | Provides rename preparation and workspace edits for Python symbols while preventing non-user-code renames | +| [packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts#L1-L515) | Provides signature help for Python calls based on callable types and active arguments | +| [packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts#L1-L219) | Indexes all externally visible symbols and aliases in a source file into structured metadata | +| [packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts#L1-L846) | Formats and generates hover/completion tooltips and documentation text for types, functions, classes, and symbols | +| [packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts#L1-L162) | Provides workspace symbol search for the language server across user code | -### Symbol preview (40 of 354) +### Symbol preview (40 of 378) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `wrapProgressReporter` | function | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L145-L166) | -| `LanguageServerBase` | class | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L168-L1619) | -| `LanguageServerBase.dispose` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L277-L283) | -| `LanguageServerBase.createBackgroundAnalysis` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L285) | -| `LanguageServerBase.getSettings` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L287) | -| `LanguageServerBase.createAnalyzerService` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L291-L334) | -| `LanguageServerBase.getWorkspaces` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L336-L343) | -| `LanguageServerBase.getWorkspaceForFile` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L345-L347) | -| `LanguageServerBase.getContainingWorkspacesForFile` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L349-L351) | -| `LanguageServerBase.reanalyze` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L353-L357) | -| `LanguageServerBase.restart` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L359-L363) | -| `LanguageServerBase.updateSettingsForAllWorkspaces` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L365-L379) | -| `LanguageServerBase.updateSettingsForWorkspace` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L381-L414) | -| `LanguageServerBase.updateOptionsAndRestartService` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L416-L423) | -| `LanguageServerBase.executeCommand` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L428) | -| `LanguageServerBase.isLongRunningCommand` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L430) | -| `LanguageServerBase.isRefactoringCommand` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L431) | -| `LanguageServerBase.executeCodeAction` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L433-L436) | -| `LanguageServerBase.getConfiguration` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L438-L455) | -| `LanguageServerBase.isOpenFilesOnly` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L457-L459) | -| `LanguageServerBase.getSeverityOverrides` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L461-L471) | -| `LanguageServerBase.getDiagnosticRuleName` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L473-L480) | -| `LanguageServerBase.createHost` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L482) | -| `LanguageServerBase.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L483-L487) | -| `LanguageServerBase.createBackgroundAnalysisProgram` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L489-L506) | -| `LanguageServerBase.createWorkspaceFactory` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L508-L516) | -| `LanguageServerBase.setupConnection` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L518-L572) | -| `LanguageServerBase.initialize` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L574-L698) | -| `LanguageServerBase.onInitialized` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L700-L705) | -| `LanguageServerBase.handleInitialized` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L707-L719) | -| `LanguageServerBase.onDidChangeConfiguration` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L721-L727) | -| `LanguageServerBase.onDefinition` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L729-L742) | -| `LanguageServerBase.onDeclaration` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L744-L757) | -| `LanguageServerBase.onTypeDefinition` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L759-L768) | -| `LanguageServerBase.getDefinitions` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L770-L798) | -| `LanguageServerBase.onReferences` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L800-L845) | -| `LanguageServerBase.onDocumentSymbol` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L847-L868) | -| `LanguageServerBase.onWorkspaceSymbol` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L870-L883) | -| `LanguageServerBase.onHover` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L885-L895) | -| `LanguageServerBase.onDocumentHighlight` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L897-L907) | -| _314 additional symbols omitted_ | | | +| `wrapProgressReporter` | function | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L145-L166) | +| `LanguageServerBase` | class | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L168-L1634) | +| `LanguageServerBase.dispose` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L278-L284) | +| `LanguageServerBase.createBackgroundAnalysis` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L286) | +| `LanguageServerBase.getSettings` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L288) | +| `LanguageServerBase.createAnalyzerService` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L292-L335) | +| `LanguageServerBase.getWorkspaces` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L337-L344) | +| `LanguageServerBase.getWorkspaceForFile` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L346-L348) | +| `LanguageServerBase.getContainingWorkspacesForFile` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L350-L352) | +| `LanguageServerBase.reanalyze` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L354-L358) | +| `LanguageServerBase.restart` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L360-L364) | +| `LanguageServerBase.updateSettingsForAllWorkspaces` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L366-L380) | +| `LanguageServerBase.updateSettingsForWorkspace` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L382-L415) | +| `LanguageServerBase.updateOptionsAndRestartService` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L417-L424) | +| `LanguageServerBase.executeCommand` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L429) | +| `LanguageServerBase.isLongRunningCommand` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L431) | +| `LanguageServerBase.isRefactoringCommand` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L432) | +| `LanguageServerBase.executeCodeAction` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L434-L437) | +| `LanguageServerBase.getConfiguration` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L439-L456) | +| `LanguageServerBase.isOpenFilesOnly` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L458-L460) | +| `LanguageServerBase.getSeverityOverrides` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L462-L472) | +| `LanguageServerBase.getDiagnosticRuleName` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L474-L481) | +| `LanguageServerBase.createHost` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L483) | +| `LanguageServerBase.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L484-L488) | +| `LanguageServerBase.createBackgroundAnalysisProgram` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L490-L507) | +| `LanguageServerBase.createWorkspaceFactory` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L509-L517) | +| `LanguageServerBase.setupConnection` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L519-L573) | +| `LanguageServerBase.initialize` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L575-L702) | +| `LanguageServerBase.onInitialized` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L704-L709) | +| `LanguageServerBase.handleInitialized` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L711-L723) | +| `LanguageServerBase.onDidChangeConfiguration` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L725-L731) | +| `LanguageServerBase.onDefinition` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L733-L746) | +| `LanguageServerBase.onDeclaration` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L748-L761) | +| `LanguageServerBase.onTypeDefinition` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L763-L772) | +| `LanguageServerBase.getDefinitions` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L774-L802) | +| `LanguageServerBase.onReferences` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L804-L849) | +| `LanguageServerBase.onDocumentSymbol` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L851-L872) | +| `LanguageServerBase.onWorkspaceSymbol` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L874-L887) | +| `LanguageServerBase.onHover` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L889-L899) | +| `LanguageServerBase.onDocumentHighlight` | method | [packages/pyright/packages/pyright-internal/src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L901-L911) | +| _338 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/features/feat-parser-binder-and-symbols.md b/architecture/generated/features/feat-parser-binder-and-symbols.md index 5d387a29294f..6cb05826a722 100644 --- a/architecture/generated/features/feat-parser-binder-and-symbols.md +++ b/architecture/generated/features/feat-parser-binder-and-symbols.md @@ -1,8 +1,8 @@ # Parser, Binder, and Symbols @@ -11,7 +11,7 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary - **Files:** 22 -- **Symbols:** 633 +- **Symbols:** 634 ### Primary files @@ -19,74 +19,74 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L1-L234) | Stores and manages analysis metadata (scopes, declarations, control-flow, imports, and __all__) for parse nodes | -| [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1-L4741) | Performs Python parse-tree name binding and creates scopes and symbol tables for static analysis | -| [packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts#L1-L304) | Describes declaration kinds and interfaces that record symbol locations, nodes, and import/alias resolution metadata | -| [packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts#L1-L421) | Utilities for inspecting, comparing, and resolving declarations and alias references in the analyzer | -| [packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts#L1-L36) | Walks a Module parse tree and clears analyzer-specific analysis info from each parse node | -| [packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts#L1-L2748) | Utilities for traversing, querying, and printing Python parse tree nodes and their evaluation ranges | -| [packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts#L1-L936) | Traverses a Python parse tree and provides visitor/walker classes to visit and process parse nodes | -| [packages/pyright/packages/pyright-internal/src/analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts#L1-L268) | Models evaluation scopes and provides symbol table, binding info, and recursive lookup for Python analysis | -| [packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts#L1-L97) | Utilities for locating and inspecting analysis scopes and scope hierarchies for parse tree nodes | -| [packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts#L1-L312) | Represents program symbols, tracking their flags, declarations, and synthesized type information | -| [packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts#L1-L51) | Classify Python symbol names (private, protected, dunder, constant, type alias, public constant/type alias) | -| [packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts#L1-L53) | Helpers for Symbol declaration queries, visibility checks, TypedDict index access, and class-var/final semantics | -| [packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts#L1-L123) | Validates parse-tree node parent/range invariants and evaluates NameNode types using a TypeEvaluator | -| [packages/pyright/packages/pyright-internal/src/parser/characterStream.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/characterStream.ts#L1-L167) | Provides a character stream for inspecting and advancing through text used by parsers and tokenizers | -| [packages/pyright/packages/pyright-internal/src/parser/characters.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/characters.ts#L1-L285) | Classifies Unicode characters and provides fast lookup helpers for identifier tokenization | -| [packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts#L1-L162) | Maps parse node and operator string names to their enum values and provides reverse lookup maps | -| [packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts#L1-L2864) | Parse node types, enums, and helper functions for representing and manipulating Python AST nodes | -| [packages/pyright/packages/pyright-internal/src/parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts#L1-L5465) | Parses Python source tokens into an abstract syntax tree and reports diagnostics | -| [packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts#L1-L384) | Unescapes escaped string tokens and returns the unescaped value, escape errors, and non-ASCII/bytes info | -| [packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts#L1-L2246) | Converts Python source into a stream of lexed tokens for parsing and analysis | -| [packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts#L1-L619) | Defines enums, interfaces, and factory creators for Python tokenizer tokens and comments | -| [packages/pyright/packages/pyright-internal/src/parser/unicode.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/unicode.ts#L1-L3649) | Unicode character range tables used by the Python language specification | +| [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L1-L234) | Stores and manages analysis metadata (scopes, declarations, control-flow, imports, and __all__) for parse nodes | +| [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1-L4741) | Performs Python parse-tree name binding and creates scopes and symbol tables for static analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts#L1-L304) | Describes declaration kinds and interfaces that record symbol locations, nodes, and import/alias resolution metadata | +| [packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts#L1-L421) | Utilities for inspecting, comparing, and resolving declarations and alias references in the analyzer | +| [packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts#L1-L36) | Walks a Module parse tree and clears analyzer-specific analysis info from each parse node | +| [packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts#L1-L2776) | Provides utilities for querying, matching, and inspecting Pyright parse tree nodes | +| [packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts#L1-L936) | Traverses a Python parse tree and provides visitor/walker classes to visit and process parse nodes | +| [packages/pyright/packages/pyright-internal/src/analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts#L1-L268) | Models evaluation scopes and provides symbol table, binding info, and recursive lookup for Python analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts#L1-L97) | Utilities for locating and inspecting analysis scopes and scope hierarchies for parse tree nodes | +| [packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts#L1-L312) | Represents program symbols, tracking their flags, declarations, and synthesized type information | +| [packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts#L1-L51) | Classify Python symbol names (private, protected, dunder, constant, type alias, public constant/type alias) | +| [packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts#L1-L53) | Helpers for Symbol declaration queries, visibility checks, TypedDict index access, and class-var/final semantics | +| [packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts#L1-L123) | Validates parse-tree node parent/range invariants and evaluates NameNode types using a TypeEvaluator | +| [packages/pyright/packages/pyright-internal/src/parser/characterStream.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/characterStream.ts#L1-L167) | Provides a character stream for inspecting and advancing through text used by parsers and tokenizers | +| [packages/pyright/packages/pyright-internal/src/parser/characters.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/characters.ts#L1-L285) | Classifies Unicode characters and provides fast lookup helpers for identifier tokenization | +| [packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts#L1-L162) | Maps parse node and operator string names to their enum values and provides reverse lookup maps | +| [packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts#L1-L2864) | Parse node types, enums, and helper functions for representing and manipulating Python AST nodes | +| [packages/pyright/packages/pyright-internal/src/parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts#L1-L5474) | Parses Python token streams into AST nodes and parser diagnostics | +| [packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts#L1-L396) | Unescapes Python string token literals and reports escape errors | +| [packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts#L1-L2246) | Converts Python source into a stream of lexed tokens for parsing and analysis | +| [packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts#L1-L619) | Defines enums, interfaces, and factory creators for Python tokenizer tokens and comments | +| [packages/pyright/packages/pyright-internal/src/parser/unicode.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/unicode.ts#L1-L3649) | Unicode character range tables used by the Python language specification | -### Symbol preview (40 of 633) +### Symbol preview (40 of 634) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `cleanNodeAnalysisInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L79-L112) | -| `getImportInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L114-L117) | -| `setImportInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L119-L122) | -| `getScope` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L124-L127) | -| `setScope` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L129-L132) | -| `getDeclaration` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L134-L137) | -| `setDeclaration` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L139-L142) | -| `getFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L144-L147) | -| `setFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L149-L152) | -| `getAfterFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L154-L157) | -| `setAfterFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L159-L162) | -| `getFileInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L164-L170) | -| `setFileInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L172-L175) | -| `getCodeFlowExpressions` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L177-L180) | -| `setCodeFlowExpressions` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L182-L185) | -| `getCodeFlowComplexity` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L187-L190) | -| `setCodeFlowComplexity` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L192-L195) | -| `getDunderAllInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L197-L200) | -| `setDunderAllInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L202-L205) | -| `isCodeUnreachable` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L207-L221) | -| `getAnalyzerInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L223-L225) | -| `getAnalyzerInfoForWrite` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L227-L233) | -| `Binder` | class | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L173-L4658) | -| `Binder.bindModule` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L291-L395) | -| `Binder.visitModule` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L397-L402) | -| `Binder.visitSuite` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L404-L407) | -| `Binder.visitModuleName` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L409-L471) | -| `Binder.visitClass` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L473-L529) | -| `Binder.visitFunction` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L531-L661) | -| `Binder.visitLambda` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L663-L720) | -| `Binder.visitCall` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L722-L837) | -| `Binder.visitTypeParameterList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L839-L884) | -| `Binder.visitTypeAlias` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L886-L923) | -| `Binder.visitAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L925-L1092) | -| `Binder.visitAssignmentExpression` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1094-L1136) | -| `Binder.visitAugmentedAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1138-L1199) | -| `Binder.visitDel` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1201-L1209) | -| `Binder.visitTypeAnnotation` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1211-L1250) | -| `Binder.visitFor` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1252-L1344) | -| `Binder.visitContinue` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1346-L1354) | -| _593 additional symbols omitted_ | | | +| `cleanNodeAnalysisInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L79-L112) | +| `getImportInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L114-L117) | +| `setImportInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L119-L122) | +| `getScope` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L124-L127) | +| `setScope` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L129-L132) | +| `getDeclaration` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L134-L137) | +| `setDeclaration` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L139-L142) | +| `getFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L144-L147) | +| `setFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L149-L152) | +| `getAfterFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L154-L157) | +| `setAfterFlowNode` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L159-L162) | +| `getFileInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L164-L170) | +| `setFileInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L172-L175) | +| `getCodeFlowExpressions` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L177-L180) | +| `setCodeFlowExpressions` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L182-L185) | +| `getCodeFlowComplexity` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L187-L190) | +| `setCodeFlowComplexity` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L192-L195) | +| `getDunderAllInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L197-L200) | +| `setDunderAllInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L202-L205) | +| `isCodeUnreachable` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L207-L221) | +| `getAnalyzerInfo` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L223-L225) | +| `getAnalyzerInfoForWrite` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L227-L233) | +| `Binder` | class | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L173-L4658) | +| `Binder.bindModule` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L291-L395) | +| `Binder.visitModule` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L397-L402) | +| `Binder.visitSuite` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L404-L407) | +| `Binder.visitModuleName` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L409-L471) | +| `Binder.visitClass` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L473-L529) | +| `Binder.visitFunction` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L531-L661) | +| `Binder.visitLambda` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L663-L720) | +| `Binder.visitCall` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L722-L837) | +| `Binder.visitTypeParameterList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L839-L884) | +| `Binder.visitTypeAlias` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L886-L923) | +| `Binder.visitAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L925-L1092) | +| `Binder.visitAssignmentExpression` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1094-L1136) | +| `Binder.visitAugmentedAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1138-L1199) | +| `Binder.visitDel` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1201-L1209) | +| `Binder.visitTypeAnnotation` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1211-L1250) | +| `Binder.visitFor` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1252-L1344) | +| `Binder.visitContinue` | method | [packages/pyright/packages/pyright-internal/src/analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1346-L1354) | +| _594 additional symbols omitted_ | | | ## Dependencies @@ -149,6 +149,7 @@ These are the main implementation files attached to this semantic node. - `packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts` +- `packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts` - `packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts` diff --git a/architecture/generated/features/feat-program-analysis-and-scheduling.md b/architecture/generated/features/feat-program-analysis-and-scheduling.md index 00ec70777db5..e94df84e1368 100644 --- a/architecture/generated/features/feat-program-analysis-and-scheduling.md +++ b/architecture/generated/features/feat-program-analysis-and-scheduling.md @@ -1,8 +1,8 @@ # Program Analysis and Scheduling @@ -11,7 +11,7 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary - **Files:** 14 -- **Symbols:** 300 +- **Symbols:** 302 ### Primary files @@ -19,66 +19,66 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L1-L106) | Exports types and analyzeProgram to run a Program analysis, gather diagnostics, and invoke a completion callback | -| [packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts#L1-L88) | Provides interfaces and utilities for storing per-source-file analysis metadata and import lookup in the analyzer | -| [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L1-L313) | Manages a Program with optional background analysis, syncing config, imports, file state and diagnostics | -| [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L1-L200) | Tracks cache owners and heap usage to trigger cache eviction when memory usage approaches the heap limit | -| [packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts#L1-L155) | Provides a lazily-built index mapping notebook CellDocs cells to their chain tails for fast later-cell lookups | -| [packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts#L1-L55) | Represents circular import chains as ordered lists of file URIs, normalizing start and comparing equality | -| [packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts#L1-L88) | Cache for storing parent-directory import lookup results to avoid repeated folder searches | -| [packages/pyright/packages/pyright-internal/src/analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts#L1-L2302) | Tracks and manages the project's source files, imports, and analysis state for Pyright's type checker | -| [packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts#L1-L33) | Defines ISourceFileFactory interface and a type guard for creating SourceFile instances | -| [packages/pyright/packages/pyright-internal/src/analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts#L1-L1946) | Analyzes Python files and manages background analysis, programs, configuration, and import resolution | -| [packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts#L1-L30) | Helpers to locate pyproject.toml and project config files starting from a given Uri | -| [packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts#L1-L1598) | Represents a single Python source or stub file and manages its parsing, analysis, and diagnostics | -| [packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts#L1-L259) | Holds per-file metadata and mutable program relations like imports, diagnostics, and edit-mode snapshots | -| [packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts#L1-L109) | Utilities for SourceFileInfo: import/chain relationships, cycle checks, and parsing open IPython notebook cells | +| [packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L1-L106) | Exports types and analyzeProgram to run a Program analysis, gather diagnostics, and invoke a completion callback | +| [packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts#L1-L88) | Provides interfaces and utilities for storing per-source-file analysis metadata and import lookup in the analyzer | +| [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L1-L313) | Manages a Program with optional background analysis, syncing config, imports, file state and diagnostics | +| [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L1-L200) | Tracks cache owners and heap usage to trigger cache eviction when memory usage approaches the heap limit | +| [packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts#L1-L155) | Provides a lazily-built index mapping notebook CellDocs cells to their chain tails for fast later-cell lookups | +| [packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts#L1-L55) | Represents circular import chains as ordered lists of file URIs, normalizing start and comparing equality | +| [packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts#L1-L88) | Cache for storing parent-directory import lookup results to avoid repeated folder searches | +| [packages/pyright/packages/pyright-internal/src/analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts#L1-L2335) | Manages Pyright source files, imports, analysis state, diagnostics, and type evaluator access | +| [packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts#L1-L33) | Defines ISourceFileFactory interface and a type guard for creating SourceFile instances | +| [packages/pyright/packages/pyright-internal/src/analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts#L1-L1969) | Provides AnalyzerService to configure, watch, and analyze Python projects for Pyright | +| [packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts#L1-L30) | Helpers to locate pyproject.toml and project config files starting from a given Uri | +| [packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts#L1-L1608) | Represents and manages parsing, binding, checking, diagnostics, and lifecycle for a Python source or stub file | +| [packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts#L1-L259) | Holds per-file metadata and mutable program relations like imports, diagnostics, and edit-mode snapshots | +| [packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts#L1-L109) | Utilities for SourceFileInfo: import/chain relationships, cycle checks, and parsing open IPython notebook cells | -### Symbol preview (40 of 300) +### Symbol preview (40 of 302) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `nullCallback` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L19-L21) | -| `analyzeProgram` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L42-L105) | -| `isAnnotationEvaluationPostponed` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts#L68-L87) | -| `BackgroundAnalysisProgram` | class | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L32-L303) | -| `BackgroundAnalysisProgram.hasSourceFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L85-L87) | -| `BackgroundAnalysisProgram.setConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L89-L93) | -| `BackgroundAnalysisProgram.setImportResolver` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L95-L101) | -| `BackgroundAnalysisProgram.setTrackedFiles` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L103-L107) | -| `BackgroundAnalysisProgram.setAllowedThirdPartyImports` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L109-L112) | -| `BackgroundAnalysisProgram.setFileOpened` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L114-L117) | -| `BackgroundAnalysisProgram.getChainedUri` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L119-L121) | -| `BackgroundAnalysisProgram.updateChainedUri` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L123-L126) | -| `BackgroundAnalysisProgram.updateOpenFileContents` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L128-L132) | -| `BackgroundAnalysisProgram.setFileClosed` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L134-L138) | -| `BackgroundAnalysisProgram.addInterimFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L140-L143) | -| `BackgroundAnalysisProgram.markAllFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L145-L148) | -| `BackgroundAnalysisProgram.markFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L150-L153) | -| `BackgroundAnalysisProgram.setCompletionCallback` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L155-L158) | -| `BackgroundAnalysisProgram.startAnalysis` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L160-L174) | -| `BackgroundAnalysisProgram.analyzeFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L176-L182) | -| `BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L184-L190) | -| `BackgroundAnalysisProgram.libraryUpdated` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L192-L194) | -| `BackgroundAnalysisProgram.getDiagnosticsForRange` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L196-L202) | -| `BackgroundAnalysisProgram.writeTypeStub` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L204-L222) | -| `BackgroundAnalysisProgram.invalidateAndForceReanalysis` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L224-L245) | -| `BackgroundAnalysisProgram.restart` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L247-L249) | -| `BackgroundAnalysisProgram.dispose` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L251-L260) | -| `BackgroundAnalysisProgram.enterEditMode` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L262-L269) | -| `BackgroundAnalysisProgram.exitEditMode` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L271-L275) | -| `BackgroundAnalysisProgram._ensurePartialStubPackages` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L277-L280) | -| `BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L282-L302) | -| `CacheManager` | class | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L26-L186) | -| `CacheManager.registerCacheOwner` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L37-L39) | -| `CacheManager.addWorker` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L41-L54) | -| `CacheManager.handleCachedUsageBufferMessage` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L56-L71) | -| `CacheManager.unregisterCacheOwner` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L73-L80) | -| `CacheManager.pauseTracking` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L82-L90) | -| `CacheManager.getCacheUsage` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L92-L104) | -| `CacheManager.emptyCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L106-L120) | -| `CacheManager.getUsedHeapRatio` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L123-L154) | -| _260 additional symbols omitted_ | | | +| `nullCallback` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L19-L21) | +| `analyzeProgram` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L42-L105) | +| `isAnnotationEvaluationPostponed` | function | [packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts#L68-L87) | +| `BackgroundAnalysisProgram` | class | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L32-L303) | +| `BackgroundAnalysisProgram.hasSourceFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L85-L87) | +| `BackgroundAnalysisProgram.setConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L89-L93) | +| `BackgroundAnalysisProgram.setImportResolver` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L95-L101) | +| `BackgroundAnalysisProgram.setTrackedFiles` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L103-L107) | +| `BackgroundAnalysisProgram.setAllowedThirdPartyImports` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L109-L112) | +| `BackgroundAnalysisProgram.setFileOpened` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L114-L117) | +| `BackgroundAnalysisProgram.getChainedUri` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L119-L121) | +| `BackgroundAnalysisProgram.updateChainedUri` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L123-L126) | +| `BackgroundAnalysisProgram.updateOpenFileContents` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L128-L132) | +| `BackgroundAnalysisProgram.setFileClosed` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L134-L138) | +| `BackgroundAnalysisProgram.addInterimFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L140-L143) | +| `BackgroundAnalysisProgram.markAllFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L145-L148) | +| `BackgroundAnalysisProgram.markFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L150-L153) | +| `BackgroundAnalysisProgram.setCompletionCallback` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L155-L158) | +| `BackgroundAnalysisProgram.startAnalysis` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L160-L174) | +| `BackgroundAnalysisProgram.analyzeFile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L176-L182) | +| `BackgroundAnalysisProgram.analyzeFileAndGetDiagnostics` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L184-L190) | +| `BackgroundAnalysisProgram.libraryUpdated` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L192-L194) | +| `BackgroundAnalysisProgram.getDiagnosticsForRange` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L196-L202) | +| `BackgroundAnalysisProgram.writeTypeStub` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L204-L222) | +| `BackgroundAnalysisProgram.invalidateAndForceReanalysis` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L224-L245) | +| `BackgroundAnalysisProgram.restart` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L247-L249) | +| `BackgroundAnalysisProgram.dispose` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L251-L260) | +| `BackgroundAnalysisProgram.enterEditMode` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L262-L269) | +| `BackgroundAnalysisProgram.exitEditMode` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L271-L275) | +| `BackgroundAnalysisProgram._ensurePartialStubPackages` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L277-L280) | +| `BackgroundAnalysisProgram._reportDiagnosticsForRemovedFiles` | method | [packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L282-L302) | +| `CacheManager` | class | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L26-L186) | +| `CacheManager.registerCacheOwner` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L37-L39) | +| `CacheManager.addWorker` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L41-L54) | +| `CacheManager.handleCachedUsageBufferMessage` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L56-L71) | +| `CacheManager.unregisterCacheOwner` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L73-L80) | +| `CacheManager.pauseTracking` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L82-L90) | +| `CacheManager.getCacheUsage` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L92-L104) | +| `CacheManager.emptyCache` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L106-L120) | +| `CacheManager.getUsedHeapRatio` | method | [packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L123-L154) | +| _262 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/features/feat-shared-runtime-infrastructure.md b/architecture/generated/features/feat-shared-runtime-infrastructure.md index a65b602627eb..32a69c7b9bc5 100644 --- a/architecture/generated/features/feat-shared-runtime-infrastructure.md +++ b/architecture/generated/features/feat-shared-runtime-infrastructure.md @@ -1,8 +1,8 @@ # Shared Runtime Infrastructure @@ -11,7 +11,7 @@ Graph generated_at: 2026-06-10T00:19:36.841Z ## Implementation summary - **Files:** 63 -- **Symbols:** 775 +- **Symbols:** 780 ### Primary files @@ -19,115 +19,115 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts#L1-L85) | Produces a PEP 661 Sentinel class instance type for sentinel declarations during type evaluation | -| [packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts#L1-L273) | Converts AST nodes, declarations, symbols, and types into concise string representations | -| [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L1-L66) | Provides classes to spawn and coordinate Pyright background analysis workers and runners | -| [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L1-L898) | Runs the analyzer in a background worker and manages program views, diagnostics, and result serialization | -| [packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts#L1-L287) | Provides background thread classes and helpers for message serialization, logging, and cancellation | -| [packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts#L1-L20) | Initializes runtime dependencies for Pyright, including TOML support and production source-map support | -| [packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts#L1-L298) | Cancellation utilities: combining tokens, file-based tokens, throttling, timeouts, and cancellation-aware racing | -| [packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts#L1-L18) | Determines whether a given URI should be treated as case-sensitive | -| [packages/pyright/packages/pyright-internal/src/common/charCodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/charCodes.ts#L1-L163) | Defines Char enum mapping descriptive names to numeric character codes for ASCII and select Unicode spaces | -| [packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts#L1-L71) | Chokidar-based FileWatcherProvider that watches filesystem paths and emits file events | -| [packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts#L1-L413) | Provides utility helpers for arrays and maps, including searching, sorting, transforming, and mutating collections | -| [packages/pyright/packages/pyright-internal/src/common/console.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/console.ts#L1-L312) | Provides a logging abstraction with levels, multiple console implementations, chaining, cloning, and disposable support | -| [packages/pyright/packages/pyright-internal/src/common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts#L1-L222) | Utility helpers and type guards for core operations like comparisons, type checks, cloning, and promise detection | -| [packages/pyright/packages/pyright-internal/src/common/crypto.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/crypto.ts#L1-L72) | Generates cryptographically secure random hex strings using Node or Web Crypto, failing if unavailable | -| [packages/pyright/packages/pyright-internal/src/common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts#L1-L152) | Assertion and debugging utilities: assertions, error/enum formatting, function name and serializable-error helpers | -| [packages/pyright/packages/pyright-internal/src/common/deferred.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/deferred.ts#L1-L79) | Provides Deferred promise utilities with resolve/reject/completion state and helpers to create from promises | -| [packages/pyright/packages/pyright-internal/src/common/docRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docRange.ts#L1-L16) | Represents a document's URI together with a text range inside that document | -| [packages/pyright/packages/pyright-internal/src/common/docStringService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docStringService.ts#L1-L65) | Provides an interface and Pyright implementation to convert docstrings and extract parameter and attribute docs | -| [packages/pyright/packages/pyright-internal/src/common/editAction.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/editAction.ts#L1-L69) | Defines interfaces and helpers for text and file edit actions and file create/delete/rename operations | -| [packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts#L1-L94) | Expands VS Code-style path variables and resolves the result to a Uri using workspace roots and environment variables | -| [packages/pyright/packages/pyright-internal/src/common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts#L1-L175) | Defines interfaces for program views, mutators, symbol providers, and other language service extensibility APIs | -| [packages/pyright/packages/pyright-internal/src/common/extensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensions.ts#L1-L17) | Adds a Promise.ignoreErrors extension that logs and ignores promise rejections | -| [packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts#L1-L214) | File-based cancellation utilities and a provider for creating filesystem-backed cancellation tokens | -| [packages/pyright/packages/pyright-internal/src/common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts#L1-L150) | File system provider interfaces and a virtual Dirent class for pluggable real or virtual file systems | -| [packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts#L1-L58) | File watcher types, null implementations, and a helper to filter ignored filesystem watch events | -| [packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts#L1-L380) | Host for executing Python interpreters and external processes to get search paths, versions, and run code | -| [packages/pyright/packages/pyright-internal/src/common/host.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/host.ts#L1-L140) | Provides host environment abstractions: Host interface, HostKind, script/process types, and NoAccessHost implementation | -| [packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts#L1-L1304) | Provides utilities to dump and format token syntax and type information for debugging and MCP tools | -| [packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts#L1-L134) | Language server interfaces and types for settings, window/command services, workspace and background analysis | -| [packages/pyright/packages/pyright-internal/src/common/logTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/logTracker.ts#L1-L213) | Tracks nested logging blocks, measures durations and parsing stats, and emits conditional formatted console logs | -| [packages/pyright/packages/pyright-internal/src/common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts#L1-L74) | Helper utilities for LSP: convert LSPAny, map declarations to SymbolKind, and detect null progress reporters | -| [packages/pyright/packages/pyright-internal/src/common/memUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/memUtils.ts#L1-L49) | Exports helpers for V8 heap statistics and total/free system memory | -| [packages/pyright/packages/pyright-internal/src/common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts#L1-L22) | Exports string constants for common Python filesystem paths and filenames | -| [packages/pyright/packages/pyright-internal/src/common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts#L1-L698) | Utilities for manipulating, normalizing, and matching filesystem paths, filenames, and wildcard file specs | -| [packages/pyright/packages/pyright-internal/src/common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts#L1-L96) | Converts between file offsets and line/column positions, ranges, and line end locations | -| [packages/pyright/packages/pyright-internal/src/common/processUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/processUtils.ts#L1-L56) | Terminates processes and their child process trees across platforms | -| [packages/pyright/packages/pyright-internal/src/common/progressReporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/progressReporter.ts#L1-L62) | Provides an interface and a tracker that manages and delegates progress reporting for a language server client | -| [packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts#L1-L221) | Defines PythonVersion type with parsing, stringifying, comparison helpers and predefined Python 3.x version constants | -| [packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts#L1-L650) | Provides real filesystem access, temp file handling, ZIP/egg archive support, and file watching integration for Pyright | -| [packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts#L1-L48) | Provides ServiceKey and GroupServiceKey constants for registering core analyzer and language-server services | -| [packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts#L1-L166) | Registry for singleton and group services with add, remove, get, clone, and dispose operations | -| [packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts#L1-L146) | ServiceProvider extensions offering accessors and a default SourceFileFactory for common services | -| [packages/pyright/packages/pyright-internal/src/common/streamUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/streamUtils.ts#L1-L31) | Provides helpers to read all stdin as a Buffer or as a string | -| [packages/pyright/packages/pyright-internal/src/common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts#L1-L128) | Utility functions for string comparison, hashing, searching, counting, truncation, and escaping | -| [packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts#L1-L449) | Tracks and manages per-file text edits, merging overlapping edits and recording node removals | -| [packages/pyright/packages/pyright-internal/src/common/textRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRange.ts#L1-L208) | Defines types and utilities for text ranges, positions, and document ranges | -| [packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts#L1-L173) | Maintains an ordered collection of text ranges and provides fast index and lookup utilities | -| [packages/pyright/packages/pyright-internal/src/common/timing.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/timing.ts#L1-L106) | Duration and timing utilities that record, aggregate, and print operation runtimes | -| [packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts#L1-L37) | Provides TOML parsing utilities to convert TOML strings into JavaScript primitive objects | -| [packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts#L1-L307) | Defines an abstract BaseUri class representing URIs and providing common path and extension utilities | -| [packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts#L1-L142) | Immutable marker URI type with no filesystem semantics and identity-based equality | -| [packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts#L1-L43) | Defines a singleton EmptyUri class representing an empty URI value | -| [packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts#L1-L302) | Represents file-schemed URIs for filesystem paths and provides path, query, fragment, and resolution utilities | -| [packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts#L1-L86) | Provides decorators to memoize property getters, no-arg instance methods, and static methods with LRU caching | -| [packages/pyright/packages/pyright-internal/src/common/uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts#L1-L227) | Manages URI creation, parsing, normalization, and helpers for file, web, constant, and empty URI types | -| [packages/pyright/packages/pyright-internal/src/common/uri/uriInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriInterface.ts#L1-L102) | Uri interface for representing and manipulating URIs, including path, fragment, query, and extension helpers | -| [packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts#L1-L81) | Map keyed by Uri for storing and iterating Uri-to-value mappings | -| [packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts#L1-L459) | Utilities for URI and filesystem operations, including wildcard file specs, directory entries, and path helpers | -| [packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts#L1-L295) | Implements a WebUri class representing non-file URIs and exposing path, query, fragment, and manipulation methods | -| [packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts#L1-L299) | Converts Pyright file edit actions to LSP WorkspaceEdit objects and applies edits to an EditableProgram | -| [packages/pyright/packages/pyright-internal/src/pprof/profiler.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pprof/profiler.ts#L1-L64) | Starts and stops Datadog pprof CPU profiling and saves encoded profiles to disk | -| [packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts#L1-L271) | Provides a read-only augmented FileSystem that overlays mapped directories onto a backing FileSystem | -| [packages/pyright/packages/pyright-internal/src/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/types.ts#L1-L40) | Exports types describing language server client capabilities and initialization options | +| [packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts#L1-L85) | Produces a PEP 661 Sentinel class instance type for sentinel declarations during type evaluation | +| [packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts#L1-L273) | Converts AST nodes, declarations, symbols, and types into concise string representations | +| [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L1-L66) | Provides classes to spawn and coordinate Pyright background analysis workers and runners | +| [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L1-L898) | Runs the analyzer in a background worker and manages program views, diagnostics, and result serialization | +| [packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts#L1-L287) | Provides background thread classes and helpers for message serialization, logging, and cancellation | +| [packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts#L1-L20) | Initializes runtime dependencies for Pyright, including TOML support and production source-map support | +| [packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts#L1-L298) | Cancellation utilities: combining tokens, file-based tokens, throttling, timeouts, and cancellation-aware racing | +| [packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts#L1-L18) | Determines whether a given URI should be treated as case-sensitive | +| [packages/pyright/packages/pyright-internal/src/common/charCodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/charCodes.ts#L1-L163) | Defines Char enum mapping descriptive names to numeric character codes for ASCII and select Unicode spaces | +| [packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts#L1-L71) | Chokidar-based FileWatcherProvider that watches filesystem paths and emits file events | +| [packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts#L1-L413) | Provides utility helpers for arrays and maps, including searching, sorting, transforming, and mutating collections | +| [packages/pyright/packages/pyright-internal/src/common/console.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/console.ts#L1-L312) | Provides a logging abstraction with levels, multiple console implementations, chaining, cloning, and disposable support | +| [packages/pyright/packages/pyright-internal/src/common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts#L1-L222) | Utility helpers and type guards for core operations like comparisons, type checks, cloning, and promise detection | +| [packages/pyright/packages/pyright-internal/src/common/crypto.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/crypto.ts#L1-L72) | Generates cryptographically secure random hex strings using Node or Web Crypto, failing if unavailable | +| [packages/pyright/packages/pyright-internal/src/common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts#L1-L152) | Assertion and debugging utilities: assertions, error/enum formatting, function name and serializable-error helpers | +| [packages/pyright/packages/pyright-internal/src/common/deferred.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/deferred.ts#L1-L79) | Provides Deferred promise utilities with resolve/reject/completion state and helpers to create from promises | +| [packages/pyright/packages/pyright-internal/src/common/docRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docRange.ts#L1-L16) | Represents a document's URI together with a text range inside that document | +| [packages/pyright/packages/pyright-internal/src/common/docStringService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docStringService.ts#L1-L79) | Defines Pyright docstring services for converting docstrings and extracting parameter, attribute, and return docs | +| [packages/pyright/packages/pyright-internal/src/common/editAction.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/editAction.ts#L1-L69) | Defines interfaces and helpers for text and file edit actions and file create/delete/rename operations | +| [packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts#L1-L94) | Expands VS Code-style path variables and resolves the result to a Uri using workspace roots and environment variables | +| [packages/pyright/packages/pyright-internal/src/common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts#L1-L191) | Defines Pyright language service extension interfaces for program views, source files, symbols, and status hooks | +| [packages/pyright/packages/pyright-internal/src/common/extensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensions.ts#L1-L17) | Adds a Promise.ignoreErrors extension that logs and ignores promise rejections | +| [packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts#L1-L214) | File-based cancellation utilities and a provider for creating filesystem-backed cancellation tokens | +| [packages/pyright/packages/pyright-internal/src/common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts#L1-L150) | File system provider interfaces and a virtual Dirent class for pluggable real or virtual file systems | +| [packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts#L1-L58) | File watcher types, null implementations, and a helper to filter ignored filesystem watch events | +| [packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts#L1-L424) | Provides host implementations for running Python executables and querying interpreter state | +| [packages/pyright/packages/pyright-internal/src/common/host.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/host.ts#L1-L140) | Defines host environment access APIs for Python discovery, script execution, and process spawning | +| [packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts#L1-L1304) | Provides utilities to dump and format token syntax and type information for debugging and MCP tools | +| [packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts#L1-L134) | Language server interfaces and types for settings, window/command services, workspace and background analysis | +| [packages/pyright/packages/pyright-internal/src/common/logTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/logTracker.ts#L1-L213) | Tracks nested logging blocks, measures durations and parsing stats, and emits conditional formatted console logs | +| [packages/pyright/packages/pyright-internal/src/common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts#L1-L74) | Helper utilities for LSP: convert LSPAny, map declarations to SymbolKind, and detect null progress reporters | +| [packages/pyright/packages/pyright-internal/src/common/memUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/memUtils.ts#L1-L49) | Exports helpers for V8 heap statistics and total/free system memory | +| [packages/pyright/packages/pyright-internal/src/common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts#L1-L22) | Exports string constants for common Python filesystem paths and filenames | +| [packages/pyright/packages/pyright-internal/src/common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts#L1-L698) | Utilities for manipulating, normalizing, and matching filesystem paths, filenames, and wildcard file specs | +| [packages/pyright/packages/pyright-internal/src/common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts#L1-L117) | Converts between text offsets, positions, ranges, and line-ending locations for Pyright source files | +| [packages/pyright/packages/pyright-internal/src/common/processUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/processUtils.ts#L1-L56) | Terminates processes and their child process trees across platforms | +| [packages/pyright/packages/pyright-internal/src/common/progressReporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/progressReporter.ts#L1-L62) | Provides an interface and a tracker that manages and delegates progress reporting for a language server client | +| [packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts#L1-L221) | Defines PythonVersion type with parsing, stringifying, comparison helpers and predefined Python 3.x version constants | +| [packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts#L1-L650) | Provides real filesystem access, temp file handling, ZIP/egg archive support, and file watching integration for Pyright | +| [packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts#L1-L48) | Provides ServiceKey and GroupServiceKey constants for registering core analyzer and language-server services | +| [packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts#L1-L166) | Registry for singleton and group services with add, remove, get, clone, and dispose operations | +| [packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts#L1-L146) | ServiceProvider extensions offering accessors and a default SourceFileFactory for common services | +| [packages/pyright/packages/pyright-internal/src/common/streamUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/streamUtils.ts#L1-L31) | Provides helpers to read all stdin as a Buffer or as a string | +| [packages/pyright/packages/pyright-internal/src/common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts#L1-L128) | Utility functions for string comparison, hashing, searching, counting, truncation, and escaping | +| [packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts#L1-L449) | Tracks and manages per-file text edits, merging overlapping edits and recording node removals | +| [packages/pyright/packages/pyright-internal/src/common/textRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRange.ts#L1-L208) | Defines types and utilities for text ranges, positions, and document ranges | +| [packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts#L1-L173) | Maintains an ordered collection of text ranges and provides fast index and lookup utilities | +| [packages/pyright/packages/pyright-internal/src/common/timing.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/timing.ts#L1-L106) | Duration and timing utilities that record, aggregate, and print operation runtimes | +| [packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts#L1-L37) | Provides TOML parsing utilities to convert TOML strings into JavaScript primitive objects | +| [packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts#L1-L307) | Defines an abstract BaseUri class representing URIs and providing common path and extension utilities | +| [packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts#L1-L142) | Immutable marker URI type with no filesystem semantics and identity-based equality | +| [packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts#L1-L43) | Defines a singleton EmptyUri class representing an empty URI value | +| [packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts#L1-L327) | Represents file-schemed URIs with path manipulation, serialization, matching, and display helpers | +| [packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts#L1-L90) | Provides decorators for caching property, instance method, and static method results | +| [packages/pyright/packages/pyright-internal/src/common/uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts#L1-L227) | Manages URI creation, parsing, normalization, and helpers for file, web, constant, and empty URI types | +| [packages/pyright/packages/pyright-internal/src/common/uri/uriInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriInterface.ts#L1-L102) | Uri interface for representing and manipulating URIs, including path, fragment, query, and extension helpers | +| [packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts#L1-L81) | Map keyed by Uri for storing and iterating Uri-to-value mappings | +| [packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts#L1-L483) | Provides URI-based filesystem utilities for paths, file specs, wildcards, entries, and LSP URI conversion | +| [packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts#L1-L295) | Implements a WebUri class representing non-file URIs and exposing path, query, fragment, and manipulation methods | +| [packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts#L1-L299) | Converts Pyright file edit actions to LSP WorkspaceEdit objects and applies edits to an EditableProgram | +| [packages/pyright/packages/pyright-internal/src/pprof/profiler.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pprof/profiler.ts#L1-L64) | Starts and stops Datadog pprof CPU profiling and saves encoded profiles to disk | +| [packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts#L1-L280) | Provides a read-only file system overlay that remaps directories while hiding their original locations | +| [packages/pyright/packages/pyright-internal/src/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/types.ts#L1-L45) | Defines language server client capabilities and initialization options for Pyright | -### Symbol preview (40 of 775) +### Symbol preview (40 of 780) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `createSentinelType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts#L19-L84) | -| `createTracePrinter` | function | [packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts#L31-L272) | -| `BackgroundAnalysis` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L23-L47) | -| `BackgroundAnalysisRunner` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L49-L65) | -| `BackgroundAnalysisRunner.createHost` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L54-L56) | -| `BackgroundAnalysisRunner.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L58-L64) | -| `BackgroundAnalysisBase` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L80-L377) | -| `BackgroundAnalysisBase.dispose` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L100-L108) | -| `BackgroundAnalysisBase.setProgramView` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L110-L112) | -| `BackgroundAnalysisBase.setCompletionCallback` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L114-L116) | -| `BackgroundAnalysisBase.setImportResolver` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L118-L120) | -| `BackgroundAnalysisBase.setConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L122-L124) | -| `BackgroundAnalysisBase.setTrackedFiles` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L126-L128) | -| `BackgroundAnalysisBase.setAllowedThirdPartyImports` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L130-L132) | -| `BackgroundAnalysisBase.ensurePartialStubPackages` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L134-L136) | -| `BackgroundAnalysisBase.setFileOpened` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L138-L143) | -| `BackgroundAnalysisBase.updateChainedUri` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L145-L150) | -| `BackgroundAnalysisBase.setFileClosed` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L152-L154) | -| `BackgroundAnalysisBase.addInterimFile` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L156-L158) | -| `BackgroundAnalysisBase.markAllFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L160-L162) | -| `BackgroundAnalysisBase.markFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L164-L169) | -| `BackgroundAnalysisBase.startAnalysis` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L171-L181) | -| `BackgroundAnalysisBase.analyzeFile` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L183-L202) | -| `BackgroundAnalysisBase.analyzeFileAndGetDiagnostics` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L204-L223) | -| `BackgroundAnalysisBase.getDiagnosticsForRange` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L225-L244) | -| `BackgroundAnalysisBase.writeTypeStub` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L246-L273) | -| `BackgroundAnalysisBase.invalidateAndForceReanalysis` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L275-L277) | -| `BackgroundAnalysisBase.restart` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L279-L281) | -| `BackgroundAnalysisBase.shutdown` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L283-L287) | -| `BackgroundAnalysisBase.setup` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L289-L308) | -| `BackgroundAnalysisBase.onMessage` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L310-L328) | -| `BackgroundAnalysisBase.enqueueRequest` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L330-L334) | -| `BackgroundAnalysisBase.log` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L336-L338) | -| `BackgroundAnalysisBase.handleBackgroundResponse` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L340-L376) | -| `BackgroundAnalysisRunnerBase` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L379-L814) | -| `BackgroundAnalysisRunnerBase.start` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L418-L429) | -| `BackgroundAnalysisRunnerBase.onMessage` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L431-L579) | -| `BackgroundAnalysisRunnerBase.createHost` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L581) | -| `BackgroundAnalysisRunnerBase.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L583-L587) | -| `BackgroundAnalysisRunnerBase.handleAnalyze` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L589-L605) | -| _735 additional symbols omitted_ | | | +| `createSentinelType` | function | [packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts#L19-L84) | +| `createTracePrinter` | function | [packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts#L31-L272) | +| `BackgroundAnalysis` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L23-L47) | +| `BackgroundAnalysisRunner` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L49-L65) | +| `BackgroundAnalysisRunner.createHost` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L54-L56) | +| `BackgroundAnalysisRunner.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L58-L64) | +| `BackgroundAnalysisBase` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L80-L377) | +| `BackgroundAnalysisBase.dispose` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L100-L108) | +| `BackgroundAnalysisBase.setProgramView` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L110-L112) | +| `BackgroundAnalysisBase.setCompletionCallback` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L114-L116) | +| `BackgroundAnalysisBase.setImportResolver` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L118-L120) | +| `BackgroundAnalysisBase.setConfigOptions` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L122-L124) | +| `BackgroundAnalysisBase.setTrackedFiles` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L126-L128) | +| `BackgroundAnalysisBase.setAllowedThirdPartyImports` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L130-L132) | +| `BackgroundAnalysisBase.ensurePartialStubPackages` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L134-L136) | +| `BackgroundAnalysisBase.setFileOpened` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L138-L143) | +| `BackgroundAnalysisBase.updateChainedUri` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L145-L150) | +| `BackgroundAnalysisBase.setFileClosed` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L152-L154) | +| `BackgroundAnalysisBase.addInterimFile` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L156-L158) | +| `BackgroundAnalysisBase.markAllFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L160-L162) | +| `BackgroundAnalysisBase.markFilesDirty` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L164-L169) | +| `BackgroundAnalysisBase.startAnalysis` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L171-L181) | +| `BackgroundAnalysisBase.analyzeFile` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L183-L202) | +| `BackgroundAnalysisBase.analyzeFileAndGetDiagnostics` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L204-L223) | +| `BackgroundAnalysisBase.getDiagnosticsForRange` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L225-L244) | +| `BackgroundAnalysisBase.writeTypeStub` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L246-L273) | +| `BackgroundAnalysisBase.invalidateAndForceReanalysis` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L275-L277) | +| `BackgroundAnalysisBase.restart` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L279-L281) | +| `BackgroundAnalysisBase.shutdown` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L283-L287) | +| `BackgroundAnalysisBase.setup` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L289-L308) | +| `BackgroundAnalysisBase.onMessage` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L310-L328) | +| `BackgroundAnalysisBase.enqueueRequest` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L330-L334) | +| `BackgroundAnalysisBase.log` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L336-L338) | +| `BackgroundAnalysisBase.handleBackgroundResponse` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L340-L376) | +| `BackgroundAnalysisRunnerBase` | class | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L379-L814) | +| `BackgroundAnalysisRunnerBase.start` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L418-L429) | +| `BackgroundAnalysisRunnerBase.onMessage` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L431-L579) | +| `BackgroundAnalysisRunnerBase.createHost` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L581) | +| `BackgroundAnalysisRunnerBase.createImportResolver` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L583-L587) | +| `BackgroundAnalysisRunnerBase.handleAnalyze` | method | [packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L589-L605) | +| _740 additional symbols omitted_ | | | ## Dependencies @@ -223,6 +223,7 @@ These are the main implementation files attached to this semantic node. - `packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts` - `packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts` - `packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts` +- `packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts` - `packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts` - `packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts` - `packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts` diff --git a/architecture/generated/features/feat-type-evaluation.md b/architecture/generated/features/feat-type-evaluation.md index 93bc03755dd4..2b6a0c1be652 100644 --- a/architecture/generated/features/feat-type-evaluation.md +++ b/architecture/generated/features/feat-type-evaluation.md @@ -1,8 +1,8 @@ # Type Evaluation @@ -19,76 +19,76 @@ These are the main implementation files attached to this semantic node. | File | Summary | | ---- | ------- | -| [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1-L7634) | Performs static type checking and traverses parse trees to validate and report diagnostics for a source file | -| [packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts#L1-L488) | Transforms objects created by constructors for special-case behaviors like functools.partial and TypedDicts | -| [packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts#L1-L1133) | Evaluates Python constructor and metaclass calls, validating __new__/__init__ arguments and inferring resulting instance types | -| [packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts#L1-L1598) | Handles special-case analysis and synthesis for Python dataclasses and dataclass_transform behaviors | -| [packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts#L1-L607) | Evaluates and applies function/class decorators, adjusting types, flags, overloads, properties, and dataclass behavior | -| [packages/pyright/packages/pyright-internal/src/analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts#L1-L751) | Provides type analysis and special-case handling for Python Enum classes and enum members | -| [packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts#L1-L140) | Adds missing comparison methods to classes decorated with functools.total_ordering | -| [packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts#L1-L514) | Constructs and manages Python namedtuple class types with named fields and optional type annotations | -| [packages/pyright/packages/pyright-internal/src/analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts#L1-L1405) | Evaluates types and validates semantics for unary, binary, augmented assignment, and ternary Python operators | -| [packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts#L1-L494) | Utilities for analyzing and handling function parameters, param lists, and related parameter typing in the analyzer | -| [packages/pyright/packages/pyright-internal/src/analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts#L1-L563) | Evaluates and constructs Python property types and manages getter/setter/deleter method typing and symbol table entries | -| [packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts#L1-L881) | Provides type evaluation logic for protocol (structural subtyping) classes | -| [packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts#L1-L640) | Tuple type analysis utilities: construct, infer, slice, expand, and assign tuple types for the type evaluator | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts#L1-L254) | Tracks speculative type contexts and caches speculative type results for nodes during speculative analysis | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts#L1-L103) | Computes a complexity score for types to rank candidate types during constraint solving | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts#L1-L517) | Retrieves and resolves docstrings for modules, classes, functions, variables, and properties including inherited stubs | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts#L1-L28991) | Evaluates types of parse tree nodes within a Python program | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts#L1-L900) | Type evaluator interfaces, helper types, constants, and utilities for Pyright's analyzer | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts#L1-L72) | Wraps the type evaluator with logging and timing to track performance of type evaluation entry points | -| [packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts#L1-L1601) | Produces human-readable string representations of Pyright type objects for diagnostics and display | -| [packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts#L1-L50) | Formats and escapes string and bytes literals for the type printer | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts#L1-L4523) | Utilities and transformers for analyzing and manipulating Type objects used by the type checker | -| [packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts#L1-L205) | Walks components of a Type graph to visit contained types while preventing infinite recursion | -| [packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts#L1-L1694) | Provides TypedDict type creation, member resolution, assignment and helper utilities for the analyzer | -| [packages/pyright/packages/pyright-internal/src/analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts#L1-L4000) | Represents and manipulates Python type abstractions used by the Pyright analyzer | +| [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1-L7639) | Performs static type checking for Python source files and reports diagnostics for invalid constructs | +| [packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts#L1-L488) | Transforms objects created by constructors for special-case behaviors like functools.partial and TypedDicts | +| [packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts#L1-L1133) | Evaluates Python constructor and metaclass calls, validating __new__/__init__ arguments and inferring resulting instance types | +| [packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts#L1-L1599) | Implements dataclass and dataclass_transform semantics for fields, initialization, and generated methods | +| [packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts#L1-L607) | Evaluates and applies function/class decorators, adjusting types, flags, overloads, properties, and dataclass behavior | +| [packages/pyright/packages/pyright-internal/src/analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts#L1-L751) | Provides type analysis and special-case handling for Python Enum classes and enum members | +| [packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts#L1-L140) | Adds missing comparison methods to classes decorated with functools.total_ordering | +| [packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts#L1-L514) | Constructs and manages Python namedtuple class types with named fields and optional type annotations | +| [packages/pyright/packages/pyright-internal/src/analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts#L1-L1405) | Evaluates types and validates semantics for unary, binary, augmented assignment, and ternary Python operators | +| [packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts#L1-L494) | Utilities for analyzing and handling function parameters, param lists, and related parameter typing in the analyzer | +| [packages/pyright/packages/pyright-internal/src/analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts#L1-L563) | Evaluates and constructs Python property types and manages getter/setter/deleter method typing and symbol table entries | +| [packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts#L1-L881) | Provides type evaluation logic for protocol (structural subtyping) classes | +| [packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts#L1-L640) | Tuple type analysis utilities: construct, infer, slice, expand, and assign tuple types for the type evaluator | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts#L1-L254) | Tracks speculative type contexts and caches speculative type results for nodes during speculative analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts#L1-L103) | Computes a complexity score for types to rank candidate types during constraint solving | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts#L1-L517) | Retrieves and resolves docstrings for modules, classes, functions, variables, and properties including inherited stubs | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts#L1-L29026) | Evaluates Python parse tree nodes to infer types and report type-related diagnostics | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts#L1-L901) | Defines the type evaluator interface and supporting types for Pyright analysis | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts#L1-L72) | Wraps the type evaluator with logging and timing to track performance of type evaluation entry points | +| [packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts#L1-L1601) | Produces human-readable string representations of Pyright type objects for diagnostics and display | +| [packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts#L1-L50) | Formats and escapes string and bytes literals for the type printer | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts#L1-L4523) | Utilities and transformers for analyzing and manipulating Type objects used by the type checker | +| [packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts#L1-L205) | Walks components of a Type graph to visit contained types while preventing infinite recursion | +| [packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts#L1-L1694) | Provides TypedDict type creation, member resolution, assignment and helper utilities for the analyzer | +| [packages/pyright/packages/pyright-internal/src/analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts#L1-L4000) | Represents and manipulates Python type abstractions used by the Pyright analyzer | ### Symbol preview (40 of 535) | Symbol | Kind | Source | | ------ | ---- | ------ | -| `Checker` | class | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L217-L7633) | -| `Checker.check` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L244-L282) | -| `Checker.walk` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L284-L292) | -| `Checker.visitSuite` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L294-L297) | -| `Checker.visitStatementList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L299-L312) | -| `Checker.visitClass` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L314-L397) | -| `Checker.visitFunction` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L399-L742) | -| `Checker.visitLambda` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L744-L793) | -| `Checker.visitCall` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L795-L835) | -| `Checker.visitAwait` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L837-L855) | -| `Checker.visitFor` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L857-L869) | -| `Checker.visitList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L871-L874) | -| `Checker.visitSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L876-L879) | -| `Checker.visitDictionary` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L881-L884) | -| `Checker.visitComprehension` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L886-L889) | -| `Checker.visitComprehensionIf` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L891-L895) | -| `Checker.visitIf` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L897-L901) | -| `Checker.visitWhile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L903-L907) | -| `Checker.visitWith` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L909-L924) | -| `Checker.visitReturn` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L926-L1053) | -| `Checker.visitYield` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1055-L1065) | -| `Checker.visitYieldFrom` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1067-L1097) | -| `Checker.visitRaise` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1099-L1109) | -| `Checker.visitExcept` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1111-L1122) | -| `Checker.visitAssert` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1124-L1151) | -| `Checker.visitAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1153-L1194) | -| `Checker.visitAssignmentExpression` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1196-L1199) | -| `Checker.visitAugmentedAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1201-L1206) | -| `Checker.visitIndex` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1208-L1269) | -| `Checker.visitBinaryOperation` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1271-L1293) | -| `Checker.visitSlice` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1295-L1298) | -| `Checker.visitUnpack` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1300-L1303) | -| `Checker.visitTuple` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1305-L1308) | -| `Checker.visitUnaryOperation` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1310-L1319) | -| `Checker.visitTernary` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1321-L1326) | -| `Checker.visitStringList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1328-L1416) | -| `Checker.visitFormatString` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1418-L1428) | -| `Checker.visitGlobal` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1430-L1440) | -| `Checker.visitNonlocal` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1442-L1454) | -| `Checker.visitName` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1456-L1470) | +| `Checker` | class | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L217-L7638) | +| `Checker.check` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L244-L282) | +| `Checker.walk` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L284-L292) | +| `Checker.visitSuite` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L294-L297) | +| `Checker.visitStatementList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L299-L312) | +| `Checker.visitClass` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L314-L397) | +| `Checker.visitFunction` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L399-L742) | +| `Checker.visitLambda` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L744-L793) | +| `Checker.visitCall` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L795-L835) | +| `Checker.visitAwait` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L837-L855) | +| `Checker.visitFor` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L857-L869) | +| `Checker.visitList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L871-L874) | +| `Checker.visitSet` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L876-L879) | +| `Checker.visitDictionary` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L881-L884) | +| `Checker.visitComprehension` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L886-L889) | +| `Checker.visitComprehensionIf` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L891-L895) | +| `Checker.visitIf` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L897-L901) | +| `Checker.visitWhile` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L903-L907) | +| `Checker.visitWith` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L909-L924) | +| `Checker.visitReturn` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L926-L1053) | +| `Checker.visitYield` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1055-L1065) | +| `Checker.visitYieldFrom` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1067-L1097) | +| `Checker.visitRaise` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1099-L1109) | +| `Checker.visitExcept` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1111-L1122) | +| `Checker.visitAssert` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1124-L1151) | +| `Checker.visitAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1153-L1194) | +| `Checker.visitAssignmentExpression` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1196-L1199) | +| `Checker.visitAugmentedAssignment` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1201-L1206) | +| `Checker.visitIndex` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1208-L1269) | +| `Checker.visitBinaryOperation` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1271-L1293) | +| `Checker.visitSlice` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1295-L1298) | +| `Checker.visitUnpack` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1300-L1303) | +| `Checker.visitTuple` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1305-L1308) | +| `Checker.visitUnaryOperation` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1310-L1319) | +| `Checker.visitTernary` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1321-L1326) | +| `Checker.visitStringList` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1328-L1416) | +| `Checker.visitFormatString` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1418-L1428) | +| `Checker.visitGlobal` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1430-L1440) | +| `Checker.visitNonlocal` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1442-L1454) | +| `Checker.visitName` | method | [packages/pyright/packages/pyright-internal/src/analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1456-L1470) | | _495 additional symbols omitted_ | | | ## Dependencies diff --git a/architecture/generated/pyright-engineering-map.md b/architecture/generated/pyright-engineering-map.md index a45b0b968052..f010d63ec21d 100644 --- a/architecture/generated/pyright-engineering-map.md +++ b/architecture/generated/pyright-engineering-map.md @@ -1,8 +1,8 @@ # Pyright Engineering Map diff --git a/architecture/generated/subsystems/analyzer.md b/architecture/generated/subsystems/analyzer.md index 578216308e57..1ff1571404f8 100644 --- a/architecture/generated/subsystems/analyzer.md +++ b/architecture/generated/subsystems/analyzer.md @@ -1,210 +1,211 @@ # Subsystem: `analyzer` Source files under `analyzer/`. Grouped by the functional area each file was assigned to during semantic lifting. - **Files**: 82 -- **Symbols (leaves)**: 1776 +- **Symbols (leaves)**: 1790 ## Constraint Solving and Type Variables -- [analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L1-L90) — Holds mappings from type variables to resolved types and manages multiple constraint solution sets -- [analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1-L1450) — Solves TypeVar, TypeVarTuple, and ParamSpec constraints to infer concrete types based on collected constraints -- [analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L1-L288) — Tracks and manages constraint sets and bounds for type variables used by the constraint solver +- [analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts#L1-L90) — Holds mappings from type variables to resolved types and manages multiple constraint solution sets +- [analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts#L1-L1450) — Solves TypeVar, TypeVarTuple, and ParamSpec constraints to infer concrete types based on collected constraints +- [analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts#L1-L288) — Tracks and manages constraint sets and bounds for type variables used by the constraint solver ## Diagnostics and Configuration -- [analyzer/deprecatedSymbols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts#L1-L316) — Maps implicitly deprecated typing and collection symbols to the Python version and suggested replacement +- [analyzer/deprecatedSymbols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts#L1-L316) — Maps implicitly deprecated typing and collection symbols to the Python version and suggested replacement ## Documentation and Comments -- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L1-L318) — Parses pyright-specific comments to adjust diagnostic rule settings and collect comment diagnostics -- [analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L1-L873) — Converts Python docstrings into Markdown or cleaned plaintext for documentation and display -- [analyzer/docStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts#L1-L153) — Parses Python docstrings and extracts parameter and attribute docs in Epytext, reST, and Google styles +- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts#L1-L318) — Parses pyright-specific comments to adjust diagnostic rule settings and collect comment diagnostics +- [analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts#L1-L873) — Converts Python docstrings into Markdown or cleaned plaintext for documentation and display +- [analyzer/docStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts#L1-L240) — Cleans Python docstrings and extracts parameter, attribute, and return documentation ## Flow Narrowing and Type Guards -- [analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L1-L2061) — Determines narrowed types for variables and expressions and computes statement reachability via the code flow graph -- [analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L1-L286) — Types and helpers for tracking code-flow nodes and reference keys used in Pyright's code flow analysis -- [analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts#L1-L446) — Generates an ASCII diagram of a control flow graph from FlowNode structures -- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1-L2254) — Type evaluation and narrowing utilities for Python structural pattern matching (PEP 634) in Pyright -- [analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L1-L377) — Evaluates parse-node expressions to determine static boolean, version, and platform string outcomes -- [analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L1-L2814) — Narrow types based on conditional expressions, isinstance checks, and user-defined type guards +- [analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts#L1-L2073) — Determines flow-sensitive type narrowing and reachability from Pyright control-flow graphs +- [analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts#L1-L286) — Types and helpers for tracking code-flow nodes and reference keys used in Pyright's code flow analysis +- [analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts#L1-L446) — Generates an ASCII diagram of a control flow graph from FlowNode structures +- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts#L1-L2316) — Narrows and validates Python match-case pattern types for Pyright analysis +- [analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts#L1-L502) — Evaluates Python parse expressions that can be statically resolved for truthiness and platform/version checks +- [analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts#L1-L2870) — Narrows Pyright types from conditional expressions, type guards, literal checks, and container membership ## Import Resolution and Packaging -- [analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L1-L21) — Provides a simple logger for collecting and retrieving import resolution messages -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1-L2576) — Resolves Python imports to filesystem modules, packages, typeshed and stub sources for static type analysis -- [analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts#L1-L203) — Cached file-system adapter for import resolution, exposing directory/file queries and resolvable name lookups -- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts#L1-L62) — Type declarations for import resolver helpers including typeshed info provider and a minimal cached filesystem facade -- [analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts#L1-L109) — Represents Python import resolution results with metadata, resolved URIs, and implicit import info -- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts#L1-L1016) — Summarizes and manipulates Python import statements and generates edits for auto-imports and formatting -- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts#L1-L113) — Defines types and a factory for package type verification reports, symbols, modules, and diagnostics -- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts#L1-L1582) — Validates public exports of a package to ensure exported types are complete and reports problems -- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts#L1-L66) — Determines whether a py.typed file exists and if it marks the package as partially typed -- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts#L1-L251) — Resolves Python interpreter and typeshed search paths, site-packages locations, and .pth-derived paths -- [analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts#L1-L234) — Enumerates Python source files with include/exclude rules, tracking symlinked directories and auto-excluding virtualenvs -- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts#L1-L1137) — Maps .pyi stub files to corresponding .py implementation files and provides binding utilities -- [analyzer/sourceMapperUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts#L1-L64) — Finds an import chain between two Uri nodes and returns the sequence of Uris -- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts#L1-L925) — Emit Python .pyi type stub files from parsed and analyzed Python source files -- [analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts#L1-L253) — Provides typeshed root/subdirectory lookup, third-party package mapping, and stdlib version info +- [analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts#L1-L21) — Provides a simple logger for collecting and retrieving import resolution messages +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts#L1-L2646) — Resolves Python imports to modules, paths, stubs, and typing metadata for Pyright analysis +- [analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts#L1-L203) — Cached file-system adapter for import resolution, exposing directory/file queries and resolvable name lookups +- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts#L1-L62) — Type declarations for import resolver helpers including typeshed info provider and a minimal cached filesystem facade +- [analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts#L1-L109) — Represents Python import resolution results with metadata, resolved URIs, and implicit import info +- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts#L1-L1037) — Provides utilities for classifying, comparing, editing, and resolving Python import statements +- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts#L1-L113) — Defines types and a factory for package type verification reports, symbols, modules, and diagnostics +- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts#L1-L1582) — Validates public exports of a package to ensure exported types are complete and reports problems +- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts#L1-L66) — Determines whether a py.typed file exists and if it marks the package as partially typed +- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts#L1-L255) — Resolves Python import search paths, typeshed locations, site-packages, and .pth entries +- [analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts#L1-L243) — Enumerates project Python source files and reports matches, auto-excluded venvs, completion, and symlink roots +- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts#L1-L1149) — Maps stub declarations to their corresponding Python source declarations +- [analyzer/sourceMapperUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts#L1-L64) — Finds an import chain between two Uri nodes and returns the sequence of Uris +- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts#L1-L925) — Emit Python .pyi type stub files from parsed and analyzed Python source files +- [analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts#L1-L253) — Provides typeshed root/subdirectory lookup, third-party package mapping, and stdlib version info ## Parser, Binder, and Symbols -- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L1-L234) — Stores and manages analysis metadata (scopes, declarations, control-flow, imports, and __all__) for parse nodes -- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1-L4741) — Performs Python parse-tree name binding and creates scopes and symbol tables for static analysis -- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts#L1-L304) — Describes declaration kinds and interfaces that record symbol locations, nodes, and import/alias resolution metadata -- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts#L1-L421) — Utilities for inspecting, comparing, and resolving declarations and alias references in the analyzer -- [analyzer/parseTreeCleaner.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts#L1-L36) — Walks a Module parse tree and clears analyzer-specific analysis info from each parse node -- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts#L1-L2748) — Utilities for traversing, querying, and printing Python parse tree nodes and their evaluation ranges -- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts#L1-L936) — Traverses a Python parse tree and provides visitor/walker classes to visit and process parse nodes -- [analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts#L1-L268) — Models evaluation scopes and provides symbol table, binding info, and recursive lookup for Python analysis -- [analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts#L1-L97) — Utilities for locating and inspecting analysis scopes and scope hierarchies for parse tree nodes -- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts#L1-L312) — Represents program symbols, tracking their flags, declarations, and synthesized type information -- [analyzer/symbolNameUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts#L1-L51) — Classify Python symbol names (private, protected, dunder, constant, type alias, public constant/type alias) -- [analyzer/symbolUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts#L1-L53) — Helpers for Symbol declaration queries, visibility checks, TypedDict index access, and class-var/final semantics -- [analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts#L1-L123) — Validates parse-tree node parent/range invariants and evaluates NameNode types using a TypeEvaluator +- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts#L1-L234) — Stores and manages analysis metadata (scopes, declarations, control-flow, imports, and __all__) for parse nodes +- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts#L1-L4741) — Performs Python parse-tree name binding and creates scopes and symbol tables for static analysis +- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts#L1-L304) — Describes declaration kinds and interfaces that record symbol locations, nodes, and import/alias resolution metadata +- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts#L1-L421) — Utilities for inspecting, comparing, and resolving declarations and alias references in the analyzer +- [analyzer/parseTreeCleaner.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts#L1-L36) — Walks a Module parse tree and clears analyzer-specific analysis info from each parse node +- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts#L1-L2776) — Provides utilities for querying, matching, and inspecting Pyright parse tree nodes +- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts#L1-L936) — Traverses a Python parse tree and provides visitor/walker classes to visit and process parse nodes +- [analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts#L1-L268) — Models evaluation scopes and provides symbol table, binding info, and recursive lookup for Python analysis +- [analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts#L1-L97) — Utilities for locating and inspecting analysis scopes and scope hierarchies for parse tree nodes +- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts#L1-L312) — Represents program symbols, tracking their flags, declarations, and synthesized type information +- [analyzer/symbolNameUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts#L1-L51) — Classify Python symbol names (private, protected, dunder, constant, type alias, public constant/type alias) +- [analyzer/symbolUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts#L1-L53) — Helpers for Symbol declaration queries, visibility checks, TypedDict index access, and class-var/final semantics +- [analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts#L1-L123) — Validates parse-tree node parent/range invariants and evaluates NameNode types using a TypeEvaluator ## Program Analysis and Scheduling -- [analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L1-L106) — Exports types and analyzeProgram to run a Program analysis, gather diagnostics, and invoke a completion callback -- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts#L1-L88) — Provides interfaces and utilities for storing per-source-file analysis metadata and import lookup in the analyzer -- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L1-L313) — Manages a Program with optional background analysis, syncing config, imports, file state and diagnostics -- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L1-L200) — Tracks cache owners and heap usage to trigger cache eviction when memory usage approaches the heap limit -- [analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts#L1-L155) — Provides a lazily-built index mapping notebook CellDocs cells to their chain tails for fast later-cell lookups -- [analyzer/circularDependency.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts#L1-L55) — Represents circular import chains as ordered lists of file URIs, normalizing start and comparing equality -- [analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts#L1-L88) — Cache for storing parent-directory import lookup results to avoid repeated folder searches -- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts#L1-L2302) — Tracks and manages the project's source files, imports, and analysis state for Pyright's type checker -- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts#L1-L33) — Defines ISourceFileFactory interface and a type guard for creating SourceFile instances -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts#L1-L1946) — Analyzes Python files and manages background analysis, programs, configuration, and import resolution -- [analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts#L1-L30) — Helpers to locate pyproject.toml and project config files starting from a given Uri -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts#L1-L1598) — Represents a single Python source or stub file and manages its parsing, analysis, and diagnostics -- [analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts#L1-L259) — Holds per-file metadata and mutable program relations like imports, diagnostics, and edit-mode snapshots -- [analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts#L1-L109) — Utilities for SourceFileInfo: import/chain relationships, cycle checks, and parsing open IPython notebook cells +- [analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts#L1-L106) — Exports types and analyzeProgram to run a Program analysis, gather diagnostics, and invoke a completion callback +- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts#L1-L88) — Provides interfaces and utilities for storing per-source-file analysis metadata and import lookup in the analyzer +- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts#L1-L313) — Manages a Program with optional background analysis, syncing config, imports, file state and diagnostics +- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts#L1-L200) — Tracks cache owners and heap usage to trigger cache eviction when memory usage approaches the heap limit +- [analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts#L1-L155) — Provides a lazily-built index mapping notebook CellDocs cells to their chain tails for fast later-cell lookups +- [analyzer/circularDependency.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts#L1-L55) — Represents circular import chains as ordered lists of file URIs, normalizing start and comparing equality +- [analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts#L1-L88) — Cache for storing parent-directory import lookup results to avoid repeated folder searches +- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts#L1-L2335) — Manages Pyright source files, imports, analysis state, diagnostics, and type evaluator access +- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts#L1-L33) — Defines ISourceFileFactory interface and a type guard for creating SourceFile instances +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts#L1-L1969) — Provides AnalyzerService to configure, watch, and analyze Python projects for Pyright +- [analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts#L1-L30) — Helpers to locate pyproject.toml and project config files starting from a given Uri +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts#L1-L1608) — Represents and manages parsing, binding, checking, diagnostics, and lifecycle for a Python source or stub file +- [analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts#L1-L259) — Holds per-file metadata and mutable program relations like imports, diagnostics, and edit-mode snapshots +- [analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts#L1-L109) — Utilities for SourceFileInfo: import/chain relationships, cycle checks, and parsing open IPython notebook cells ## Shared Runtime Infrastructure -- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts#L1-L85) — Produces a PEP 661 Sentinel class instance type for sentinel declarations during type evaluation -- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts#L1-L273) — Converts AST nodes, declarations, symbols, and types into concise string representations +- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts#L1-L85) — Produces a PEP 661 Sentinel class instance type for sentinel declarations during type evaluation +- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts#L1-L273) — Converts AST nodes, declarations, symbols, and types into concise string representations ## Type Evaluation -- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1-L7634) — Performs static type checking and traverses parse trees to validate and report diagnostics for a source file -- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts#L1-L488) — Transforms objects created by constructors for special-case behaviors like functools.partial and TypedDicts -- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts#L1-L1133) — Evaluates Python constructor and metaclass calls, validating __new__/__init__ arguments and inferring resulting instance types -- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts#L1-L1598) — Handles special-case analysis and synthesis for Python dataclasses and dataclass_transform behaviors -- [analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts#L1-L607) — Evaluates and applies function/class decorators, adjusting types, flags, overloads, properties, and dataclass behavior -- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts#L1-L751) — Provides type analysis and special-case handling for Python Enum classes and enum members -- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts#L1-L140) — Adds missing comparison methods to classes decorated with functools.total_ordering -- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts#L1-L514) — Constructs and manages Python namedtuple class types with named fields and optional type annotations -- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts#L1-L1405) — Evaluates types and validates semantics for unary, binary, augmented assignment, and ternary Python operators -- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts#L1-L494) — Utilities for analyzing and handling function parameters, param lists, and related parameter typing in the analyzer -- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts#L1-L563) — Evaluates and constructs Python property types and manages getter/setter/deleter method typing and symbol table entries -- [analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts#L1-L881) — Provides type evaluation logic for protocol (structural subtyping) classes -- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts#L1-L640) — Tuple type analysis utilities: construct, infer, slice, expand, and assign tuple types for the type evaluator -- [analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts#L1-L254) — Tracks speculative type contexts and caches speculative type results for nodes during speculative analysis -- [analyzer/typeComplexity.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts#L1-L103) — Computes a complexity score for types to rank candidate types during constraint solving -- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts#L1-L517) — Retrieves and resolves docstrings for modules, classes, functions, variables, and properties including inherited stubs -- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts#L1-L28991) — Evaluates types of parse tree nodes within a Python program -- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts#L1-L900) — Type evaluator interfaces, helper types, constants, and utilities for Pyright's analyzer -- [analyzer/typeEvaluatorWithTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts#L1-L72) — Wraps the type evaluator with logging and timing to track performance of type evaluation entry points -- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts#L1-L1601) — Produces human-readable string representations of Pyright type objects for diagnostics and display -- [analyzer/typePrinterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts#L1-L50) — Formats and escapes string and bytes literals for the type printer -- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts#L1-L4523) — Utilities and transformers for analyzing and manipulating Type objects used by the type checker -- [analyzer/typeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts#L1-L205) — Walks components of a Type graph to visit contained types while preventing infinite recursion -- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts#L1-L1694) — Provides TypedDict type creation, member resolution, assignment and helper utilities for the analyzer -- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts#L1-L4000) — Represents and manipulates Python type abstractions used by the Pyright analyzer +- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts#L1-L7639) — Performs static type checking for Python source files and reports diagnostics for invalid constructs +- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts#L1-L488) — Transforms objects created by constructors for special-case behaviors like functools.partial and TypedDicts +- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts#L1-L1133) — Evaluates Python constructor and metaclass calls, validating __new__/__init__ arguments and inferring resulting instance types +- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts#L1-L1599) — Implements dataclass and dataclass_transform semantics for fields, initialization, and generated methods +- [analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts#L1-L607) — Evaluates and applies function/class decorators, adjusting types, flags, overloads, properties, and dataclass behavior +- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts#L1-L751) — Provides type analysis and special-case handling for Python Enum classes and enum members +- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts#L1-L140) — Adds missing comparison methods to classes decorated with functools.total_ordering +- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts#L1-L514) — Constructs and manages Python namedtuple class types with named fields and optional type annotations +- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts#L1-L1405) — Evaluates types and validates semantics for unary, binary, augmented assignment, and ternary Python operators +- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts#L1-L494) — Utilities for analyzing and handling function parameters, param lists, and related parameter typing in the analyzer +- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts#L1-L563) — Evaluates and constructs Python property types and manages getter/setter/deleter method typing and symbol table entries +- [analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts#L1-L881) — Provides type evaluation logic for protocol (structural subtyping) classes +- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts#L1-L640) — Tuple type analysis utilities: construct, infer, slice, expand, and assign tuple types for the type evaluator +- [analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts#L1-L254) — Tracks speculative type contexts and caches speculative type results for nodes during speculative analysis +- [analyzer/typeComplexity.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeComplexity.ts#L1-L103) — Computes a complexity score for types to rank candidate types during constraint solving +- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts#L1-L517) — Retrieves and resolves docstrings for modules, classes, functions, variables, and properties including inherited stubs +- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts#L1-L29026) — Evaluates Python parse tree nodes to infer types and report type-related diagnostics +- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts#L1-L901) — Defines the type evaluator interface and supporting types for Pyright analysis +- [analyzer/typeEvaluatorWithTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts#L1-L72) — Wraps the type evaluator with logging and timing to track performance of type evaluation entry points +- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts#L1-L1601) — Produces human-readable string representations of Pyright type objects for diagnostics and display +- [analyzer/typePrinterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinterUtils.ts#L1-L50) — Formats and escapes string and bytes literals for the type printer +- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts#L1-L4523) — Utilities and transformers for analyzing and manipulating Type objects used by the type checker +- [analyzer/typeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts#L1-L205) — Walks components of a Type graph to visit contained types while preventing infinite recursion +- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts#L1-L1694) — Provides TypedDict type creation, member resolution, assignment and helper utilities for the analyzer +- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts#L1-L4000) — Represents and manipulates Python type abstractions used by the Pyright analyzer ## Cross-subsystem dependencies **Imported by (external):** -- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts) -- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) -- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts) -- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) -- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) -- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) -- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docStringService.ts) -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) -- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) -- [common/host.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/host.ts) -- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) -- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts) -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) -- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts) -- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) -- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) -- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) -- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts) -- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) -- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) -- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) -- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) -- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) -- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts) -- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) -- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) -- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) -- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) -- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts) -- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) -- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/partialStubService.ts) -- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts) -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts) -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) +- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts) +- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) +- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts) +- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) +- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) +- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) +- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docStringService.ts) +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) +- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) +- [common/host.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/host.ts) +- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) +- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts) +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) +- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts) +- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) +- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) +- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) +- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts) +- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) +- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) +- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) +- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) +- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) +- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts) +- [languageService/importStatementCandidates.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts) +- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) +- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) +- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) +- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts) +- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) +- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/partialStubService.ts) +- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts) +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts) +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) **Imports (external):** -- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) -- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commands.ts) -- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) -- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) -- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) -- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) -- [common/console.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/console.ts) -- [common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts) -- [common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts) -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) -- [common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts) -- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) -- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/editAction.ts) -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) -- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) -- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts) -- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) -- [common/host.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/host.ts) -- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/logTracker.ts) -- [common/memUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/memUtils.ts) -- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts) -- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) -- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) -- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) -- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) -- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts) -- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRange.ts) -- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts) -- [common/timing.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/timing.ts) -- [common/tomlUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts) -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) -- [uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts) -- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) -- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts) -- [parser/parseNodeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts) -- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts) -- [parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts) -- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) -- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) +- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) +- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commands.ts) +- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) +- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) +- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) +- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) +- [common/console.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/console.ts) +- [common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts) +- [common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts) +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) +- [common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts) +- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) +- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/editAction.ts) +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) +- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) +- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts) +- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) +- [common/host.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/host.ts) +- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/logTracker.ts) +- [common/memUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/memUtils.ts) +- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts) +- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) +- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) +- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) +- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) +- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts) +- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRange.ts) +- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts) +- [common/timing.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/timing.ts) +- [common/tomlUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts) +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) +- [uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts) +- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) +- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts) +- [parser/parseNodeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts) +- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts) +- [parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts) +- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) +- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) diff --git a/architecture/generated/subsystems/commands.md b/architecture/generated/subsystems/commands.md index 8b670c66a3b3..08756b2823d0 100644 --- a/architecture/generated/subsystems/commands.md +++ b/architecture/generated/subsystems/commands.md @@ -1,8 +1,8 @@ # Subsystem: `commands` @@ -13,36 +13,36 @@ Source files under `commands/`. Grouped by the functional area each file was ass ## Diagnostics and Configuration -- [commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L1-L74) — Dispatches language-server commands to their specific handlers and indicates long-running/refactoring commands -- [commands/commandResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandResult.ts#L1-L22) — Defines CommandResult interface representing command output with label, edits, optional data, and a type guard -- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commands.ts#L1-L22) — Exports an enum of Pyright command identifier strings used by the extension -- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L1-L119) — Creates a language-server command to generate Python type stubs for a specified import and notify the user -- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L1-L121) — Dumps tokens, syntax nodes, type info (including cached) and code-flow graph for a given file -- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L1-L39) — Handles quick action commands for the language server and returns corresponding workspace edits -- [commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L1-L21) — Provides a command to restart the language server +- [commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts#L1-L74) — Dispatches language-server commands to their specific handlers and indicates long-running/refactoring commands +- [commands/commandResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandResult.ts#L1-L22) — Defines CommandResult interface representing command output with label, edits, optional data, and a type guard +- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commands.ts#L1-L22) — Exports an enum of Pyright command identifier strings used by the extension +- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts#L1-L119) — Creates a language-server command to generate Python type stubs for a specified import and notify the user +- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts#L1-L121) — Dumps tokens, syntax nodes, type info (including cached) and code-flow graph for a given file +- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts#L1-L39) — Handles quick action commands for the language server and returns corresponding workspace edits +- [commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts#L1-L21) — Provides a command to restart the language server ## Cross-subsystem dependencies **Imported by (external):** -- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) -- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) -- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts) +- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) +- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) +- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts) **Imports (external):** -- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) -- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) -- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) -- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) -- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) +- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) +- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) +- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) +- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) +- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) diff --git a/architecture/generated/subsystems/common.md b/architecture/generated/subsystems/common.md index 2747a2cb9526..b283d1b0f818 100644 --- a/architecture/generated/subsystems/common.md +++ b/architecture/generated/subsystems/common.md @@ -1,229 +1,230 @@ # Subsystem: `common` Source files under `common/`. Grouped by the functional area each file was assigned to during semantic lifting. - **Files**: 51 -- **Symbols (leaves)**: 625 +- **Symbols (leaves)**: 628 ## Diagnostics and Configuration -- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L1-L182) — Defines command-line and language-server configuration option types for Pyright including config and server settings -- [common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts#L1-L22) — Helpers to create LSP Command objects with URI arguments converted to string form -- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1-L1799) — Defines ExecutionEnvironment and ConfigOptions along with helpers for diagnostic rule sets and file-spec matching -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts#L1-L341) — Defines Diagnostic types, serialization, comparison, and addendum helpers for building and formatting diagnostics -- [common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts#L1-L107) — Enumerates string identifiers for configurable diagnostic rules used by the type checker -- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts#L1-L202) — Collects and deduplicates file diagnostics and provides a TextRange-aware sink that converts offsets to position ranges +- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts#L1-L182) — Defines command-line and language-server configuration option types for Pyright including config and server settings +- [common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts#L1-L22) — Helpers to create LSP Command objects with URI arguments converted to string form +- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts#L1-L1799) — Defines ExecutionEnvironment and ConfigOptions along with helpers for diagnostic rule sets and file-spec matching +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts#L1-L341) — Defines Diagnostic types, serialization, comparison, and addendum helpers for building and formatting diagnostics +- [common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts#L1-L107) — Enumerates string identifiers for configurable diagnostic rules used by the type checker +- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts#L1-L202) — Collects and deduplicates file diagnostics and provides a TextRange-aware sink that converts offsets to position ranges ## Shared Runtime Infrastructure -- [common/asyncInitialization.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts#L1-L20) — Initializes runtime dependencies for Pyright, including TOML support and production source-map support -- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts#L1-L298) — Cancellation utilities: combining tokens, file-based tokens, throttling, timeouts, and cancellation-aware racing -- [common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts#L1-L18) — Determines whether a given URI should be treated as case-sensitive -- [common/charCodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/charCodes.ts#L1-L163) — Defines Char enum mapping descriptive names to numeric character codes for ASCII and select Unicode spaces -- [common/chokidarFileWatcherProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts#L1-L71) — Chokidar-based FileWatcherProvider that watches filesystem paths and emits file events -- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts#L1-L413) — Provides utility helpers for arrays and maps, including searching, sorting, transforming, and mutating collections -- [common/console.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/console.ts#L1-L312) — Provides a logging abstraction with levels, multiple console implementations, chaining, cloning, and disposable support -- [common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts#L1-L222) — Utility helpers and type guards for core operations like comparisons, type checks, cloning, and promise detection -- [common/crypto.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/crypto.ts#L1-L72) — Generates cryptographically secure random hex strings using Node or Web Crypto, failing if unavailable -- [common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts#L1-L152) — Assertion and debugging utilities: assertions, error/enum formatting, function name and serializable-error helpers -- [common/deferred.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/deferred.ts#L1-L79) — Provides Deferred promise utilities with resolve/reject/completion state and helpers to create from promises -- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docRange.ts#L1-L16) — Represents a document's URI together with a text range inside that document -- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docStringService.ts#L1-L65) — Provides an interface and Pyright implementation to convert docstrings and extract parameter and attribute docs -- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/editAction.ts#L1-L69) — Defines interfaces and helpers for text and file edit actions and file create/delete/rename operations -- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts#L1-L94) — Expands VS Code-style path variables and resolves the result to a Uri using workspace roots and environment variables -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts#L1-L175) — Defines interfaces for program views, mutators, symbol providers, and other language service extensibility APIs -- [common/extensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensions.ts#L1-L17) — Adds a Promise.ignoreErrors extension that logs and ignores promise rejections -- [common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts#L1-L214) — File-based cancellation utilities and a provider for creating filesystem-backed cancellation tokens -- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts#L1-L150) — File system provider interfaces and a virtual Dirent class for pluggable real or virtual file systems -- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts#L1-L58) — File watcher types, null implementations, and a helper to filter ignored filesystem watch events -- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts#L1-L380) — Host for executing Python interpreters and external processes to get search paths, versions, and run code -- [common/host.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/host.ts#L1-L140) — Provides host environment abstractions: Host interface, HostKind, script/process types, and NoAccessHost implementation -- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts#L1-L1304) — Provides utilities to dump and format token syntax and type information for debugging and MCP tools -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts#L1-L134) — Language server interfaces and types for settings, window/command services, workspace and background analysis -- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/logTracker.ts#L1-L213) — Tracks nested logging blocks, measures durations and parsing stats, and emits conditional formatted console logs -- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts#L1-L74) — Helper utilities for LSP: convert LSPAny, map declarations to SymbolKind, and detect null progress reporters -- [common/memUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/memUtils.ts#L1-L49) — Exports helpers for V8 heap statistics and total/free system memory -- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts#L1-L22) — Exports string constants for common Python filesystem paths and filenames -- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts#L1-L698) — Utilities for manipulating, normalizing, and matching filesystem paths, filenames, and wildcard file specs -- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts#L1-L96) — Converts between file offsets and line/column positions, ranges, and line end locations -- [common/processUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/processUtils.ts#L1-L56) — Terminates processes and their child process trees across platforms -- [common/progressReporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/progressReporter.ts#L1-L62) — Provides an interface and a tracker that manages and delegates progress reporting for a language server client -- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts#L1-L221) — Defines PythonVersion type with parsing, stringifying, comparison helpers and predefined Python 3.x version constants -- [common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts#L1-L650) — Provides real filesystem access, temp file handling, ZIP/egg archive support, and file watching integration for Pyright -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts#L1-L48) — Provides ServiceKey and GroupServiceKey constants for registering core analyzer and language-server services -- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts#L1-L166) — Registry for singleton and group services with add, remove, get, clone, and dispose operations -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts#L1-L146) — ServiceProvider extensions offering accessors and a default SourceFileFactory for common services -- [common/streamUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/streamUtils.ts#L1-L31) — Provides helpers to read all stdin as a Buffer or as a string -- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts#L1-L128) — Utility functions for string comparison, hashing, searching, counting, truncation, and escaping -- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts#L1-L449) — Tracks and manages per-file text edits, merging overlapping edits and recording node removals -- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRange.ts#L1-L208) — Defines types and utilities for text ranges, positions, and document ranges -- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts#L1-L173) — Maintains an ordered collection of text ranges and provides fast index and lookup utilities -- [common/timing.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/timing.ts#L1-L106) — Duration and timing utilities that record, aggregate, and print operation runtimes -- [common/tomlUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts#L1-L37) — Provides TOML parsing utilities to convert TOML strings into JavaScript primitive objects -- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts#L1-L299) — Converts Pyright file edit actions to LSP WorkspaceEdit objects and applies edits to an EditableProgram +- [common/asyncInitialization.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts#L1-L20) — Initializes runtime dependencies for Pyright, including TOML support and production source-map support +- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts#L1-L298) — Cancellation utilities: combining tokens, file-based tokens, throttling, timeouts, and cancellation-aware racing +- [common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts#L1-L18) — Determines whether a given URI should be treated as case-sensitive +- [common/charCodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/charCodes.ts#L1-L163) — Defines Char enum mapping descriptive names to numeric character codes for ASCII and select Unicode spaces +- [common/chokidarFileWatcherProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts#L1-L71) — Chokidar-based FileWatcherProvider that watches filesystem paths and emits file events +- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts#L1-L413) — Provides utility helpers for arrays and maps, including searching, sorting, transforming, and mutating collections +- [common/console.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/console.ts#L1-L312) — Provides a logging abstraction with levels, multiple console implementations, chaining, cloning, and disposable support +- [common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts#L1-L222) — Utility helpers and type guards for core operations like comparisons, type checks, cloning, and promise detection +- [common/crypto.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/crypto.ts#L1-L72) — Generates cryptographically secure random hex strings using Node or Web Crypto, failing if unavailable +- [common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts#L1-L152) — Assertion and debugging utilities: assertions, error/enum formatting, function name and serializable-error helpers +- [common/deferred.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/deferred.ts#L1-L79) — Provides Deferred promise utilities with resolve/reject/completion state and helpers to create from promises +- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docRange.ts#L1-L16) — Represents a document's URI together with a text range inside that document +- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docStringService.ts#L1-L79) — Defines Pyright docstring services for converting docstrings and extracting parameter, attribute, and return docs +- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/editAction.ts#L1-L69) — Defines interfaces and helpers for text and file edit actions and file create/delete/rename operations +- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts#L1-L94) — Expands VS Code-style path variables and resolves the result to a Uri using workspace roots and environment variables +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts#L1-L191) — Defines Pyright language service extension interfaces for program views, source files, symbols, and status hooks +- [common/extensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensions.ts#L1-L17) — Adds a Promise.ignoreErrors extension that logs and ignores promise rejections +- [common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts#L1-L214) — File-based cancellation utilities and a provider for creating filesystem-backed cancellation tokens +- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts#L1-L150) — File system provider interfaces and a virtual Dirent class for pluggable real or virtual file systems +- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts#L1-L58) — File watcher types, null implementations, and a helper to filter ignored filesystem watch events +- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts#L1-L424) — Provides host implementations for running Python executables and querying interpreter state +- [common/host.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/host.ts#L1-L140) — Defines host environment access APIs for Python discovery, script execution, and process spawning +- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts#L1-L1304) — Provides utilities to dump and format token syntax and type information for debugging and MCP tools +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts#L1-L134) — Language server interfaces and types for settings, window/command services, workspace and background analysis +- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/logTracker.ts#L1-L213) — Tracks nested logging blocks, measures durations and parsing stats, and emits conditional formatted console logs +- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts#L1-L74) — Helper utilities for LSP: convert LSPAny, map declarations to SymbolKind, and detect null progress reporters +- [common/memUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/memUtils.ts#L1-L49) — Exports helpers for V8 heap statistics and total/free system memory +- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts#L1-L22) — Exports string constants for common Python filesystem paths and filenames +- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts#L1-L698) — Utilities for manipulating, normalizing, and matching filesystem paths, filenames, and wildcard file specs +- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts#L1-L117) — Converts between text offsets, positions, ranges, and line-ending locations for Pyright source files +- [common/processUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/processUtils.ts#L1-L56) — Terminates processes and their child process trees across platforms +- [common/progressReporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/progressReporter.ts#L1-L62) — Provides an interface and a tracker that manages and delegates progress reporting for a language server client +- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts#L1-L221) — Defines PythonVersion type with parsing, stringifying, comparison helpers and predefined Python 3.x version constants +- [common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts#L1-L650) — Provides real filesystem access, temp file handling, ZIP/egg archive support, and file watching integration for Pyright +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts#L1-L48) — Provides ServiceKey and GroupServiceKey constants for registering core analyzer and language-server services +- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts#L1-L166) — Registry for singleton and group services with add, remove, get, clone, and dispose operations +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts#L1-L146) — ServiceProvider extensions offering accessors and a default SourceFileFactory for common services +- [common/streamUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/streamUtils.ts#L1-L31) — Provides helpers to read all stdin as a Buffer or as a string +- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts#L1-L128) — Utility functions for string comparison, hashing, searching, counting, truncation, and escaping +- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts#L1-L449) — Tracks and manages per-file text edits, merging overlapping edits and recording node removals +- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRange.ts#L1-L208) — Defines types and utilities for text ranges, positions, and document ranges +- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts#L1-L173) — Maintains an ordered collection of text ranges and provides fast index and lookup utilities +- [common/timing.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/timing.ts#L1-L106) — Duration and timing utilities that record, aggregate, and print operation runtimes +- [common/tomlUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/tomlUtils.ts#L1-L37) — Provides TOML parsing utilities to convert TOML strings into JavaScript primitive objects +- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts#L1-L299) — Converts Pyright file edit actions to LSP WorkspaceEdit objects and applies edits to an EditableProgram ## Cross-subsystem dependencies **Imported by (external):** -- [analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts) -- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts) -- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) -- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) -- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts) -- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) -- [analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts) -- [analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts) -- [analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts) -- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts) -- [analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts) -- [analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts) -- [analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts) -- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts) -- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts) -- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts) -- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) -- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) -- [analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts) -- [analyzer/deprecatedSymbols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts) -- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts) -- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts) -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) -- [analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts) -- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts) -- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) -- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts) -- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts) -- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts) -- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts) -- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts) -- [analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts) -- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) -- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) -- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts) -- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) -- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts) -- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts) -- [analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts) -- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts) -- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) -- [analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts) -- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts) -- [analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts) -- [analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts) -- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) -- [analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts) -- [analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts) -- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts) -- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts) -- [analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts) -- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) -- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) -- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) -- [analyzer/typeEvaluatorWithTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts) -- [analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts) -- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts) -- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) -- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) -- [analyzer/typeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts) -- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) -- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) -- [analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts) -- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts) -- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) -- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts) -- [commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts) -- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) -- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) -- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts) -- [commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts) -- [uri/baseUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts) -- [uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts) -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) -- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) -- [uri/webUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) -- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) -- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) -- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts) -- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) -- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) -- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) -- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) -- [languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts) -- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) -- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) -- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts) -- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts) -- [languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts) -- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) -- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) -- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) -- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) -- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) -- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts) -- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) -- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts) -- [src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeMain.ts) -- [src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeServer.ts) -- [parser/characterStream.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/characterStream.ts) -- [parser/characters.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/characters.ts) -- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts) -- [parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts) -- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) -- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) -- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/partialStubService.ts) -- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts) -- [src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts) -- [src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts) -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts) -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) +- [analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts) +- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts) +- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) +- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) +- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts) +- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) +- [analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts) +- [analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts) +- [analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts) +- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts) +- [analyzer/constraintSolution.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolution.ts) +- [analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts) +- [analyzer/constraintTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintTracker.ts) +- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts) +- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts) +- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts) +- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) +- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) +- [analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts) +- [analyzer/deprecatedSymbols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/deprecatedSymbols.ts) +- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts) +- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts) +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) +- [analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts) +- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts) +- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) +- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts) +- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts) +- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts) +- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts) +- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts) +- [analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts) +- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) +- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) +- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts) +- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) +- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts) +- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts) +- [analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts) +- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts) +- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) +- [analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts) +- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts) +- [analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts) +- [analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts) +- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) +- [analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts) +- [analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts) +- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts) +- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts) +- [analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts) +- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) +- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) +- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) +- [analyzer/typeEvaluatorWithTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorWithTracker.ts) +- [analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts) +- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts) +- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) +- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) +- [analyzer/typeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeWalker.ts) +- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) +- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) +- [analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts) +- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts) +- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) +- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts) +- [commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts) +- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) +- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) +- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts) +- [commands/restartServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/restartServer.ts) +- [uri/baseUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts) +- [uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts) +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) +- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) +- [uri/webUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) +- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) +- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) +- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts) +- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) +- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) +- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) +- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) +- [languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts) +- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) +- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) +- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts) +- [languageService/importStatementCandidates.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts) +- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts) +- [languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts) +- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) +- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) +- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) +- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) +- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts) +- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) +- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts) +- [src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeMain.ts) +- [src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeServer.ts) +- [parser/characterStream.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/characterStream.ts) +- [parser/characters.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/characters.ts) +- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts) +- [parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts) +- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) +- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) +- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/partialStubService.ts) +- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts) +- [src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts) +- [src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts) +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts) +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) **Imports (external):** -- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) -- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts) -- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) -- [analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts) -- [analyzer/docStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts) -- [analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts) -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) -- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts) -- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) -- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) -- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) -- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) -- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts) -- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) -- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts) -- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) -- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) -- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) -- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) -- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commands.ts) -- [uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts) -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) -- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) -- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts) -- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) -- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) -- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/partialStubService.ts) -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) +- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) +- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts) +- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) +- [analyzer/docStringConversion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringConversion.ts) +- [analyzer/docStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/docStringUtils.ts) +- [analyzer/importLogger.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importLogger.ts) +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) +- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts) +- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) +- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) +- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) +- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) +- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts) +- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) +- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts) +- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) +- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) +- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) +- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) +- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commands.ts) +- [uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts) +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) +- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) +- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts) +- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) +- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) +- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/partialStubService.ts) +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) diff --git a/architecture/generated/subsystems/languageservice.md b/architecture/generated/subsystems/languageservice.md index a6f548ce2b4a..9e54229c8abe 100644 --- a/architecture/generated/subsystems/languageservice.md +++ b/architecture/generated/subsystems/languageservice.md @@ -1,115 +1,116 @@ # Subsystem: `languageService` Source files under `languageService/`. Grouped by the functional area each file was assigned to during semantic lifting. -- **Files**: 23 -- **Symbols (leaves)**: 300 +- **Files**: 24 +- **Symbols (leaves)**: 325 ## Language Service Providers -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts#L1-L166) — Runs and clones AnalyzerService and builds command-line options from server settings -- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts#L1-L859) — Provides auto-import completion logic and utilities for finding module symbols and generating import edits -- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts#L1-L628) — Provides call hierarchy items (callers and callees) for a code position across the workspace -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts#L1-L78) — Provides quick-fix code actions for diagnostics, including a create-type-stub action -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts#L1-L3698) — Provides Python language completion items for a source position using type and symbol analysis -- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts#L1-L252) — Helper utilities for completion items: type details, formatted documentation, and trailing overlap detection -- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts#L1-L348) — Maps positions to symbol and type declarations for go-to-definition and type-definition features -- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts#L1-L76) — Provides document highlights for a name at a given position, classifying occurrences as read or write -- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts#L1-L622) — Collects and resolves symbol declarations and references within a parse tree for document-level symbol occurrences -- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts#L1-L147) — Provides document symbol extraction and conversion to hierarchical or flat LSP SymbolInformation for a source file -- [languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts#L1-L75) — Manages dynamic LSP features with register/update/dispose logic and a registry for multiple features -- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts#L1-L79) — Registers LSP file-watcher notifications for workspace config files and Python search paths -- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts#L1-L682) — Generates editor hover tooltips for Python symbols with type info, signatures, and documentation -- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts#L1-L197) — Sorts and formats top-level Python import statements and produces TextEditAction replacements -- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts#L1-L33) — Provides helpers to check file navigability and convert DocumentRange objects to LSP Location values -- [languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts#L1-L52) — Registers and manages pull-mode diagnostics and workspace support with the language server -- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts#L1-L45) — Provides quick action handlers for source files such as ordering imports -- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts#L1-L528) — Finds symbol references in files and returns DocumentRange/LSP locations -- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts#L1-L204) — Provides rename support: checks rename eligibility and produces workspace edits for a symbol and its references -- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts#L1-L488) — Provides signature help for Python call sites by mapping a cursor position to callable signatures and parameter info -- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts#L1-L219) — Indexes all externally visible symbols and aliases in a source file into structured metadata -- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts#L1-L846) — Formats and generates hover/completion tooltips and documentation text for types, functions, classes, and symbols -- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts#L1-L162) — Provides workspace symbol search for the language server across user code +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts#L1-L166) — Runs and clones AnalyzerService and builds command-line options from server settings +- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts#L1-L859) — Provides auto-import completion logic and utilities for finding module symbols and generating import edits +- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts#L1-L628) — Provides call hierarchy items (callers and callees) for a code position across the workspace +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts#L1-L78) — Provides quick-fix code actions for diagnostics, including a create-type-stub action +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts#L1-L3867) — Provides Python language-service completions for symbols, imports, members, calls, literals, and snippets +- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts#L1-L254) — Builds completion item details, documentation, and trailing text overlap metadata for Pyright completions +- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts#L1-L420) — Provides go-to-definition and type-definition results for Python symbols in analyzed source files +- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts#L1-L76) — Provides document highlights for a name at a given position, classifying occurrences as read or write +- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts#L1-L737) — Collects document ranges that refer to the same semantic symbol for reference and rename features +- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts#L1-L147) — Provides document symbol extraction and conversion to hierarchical or flat LSP SymbolInformation for a source file +- [languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts#L1-L75) — Manages dynamic LSP features with register/update/dispose logic and a registry for multiple features +- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts#L1-L79) — Registers LSP file-watcher notifications for workspace config files and Python search paths +- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts#L1-L712) — Provides markdown hover text for Python symbols at editor positions +- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts#L1-L197) — Sorts and formats top-level Python import statements and produces TextEditAction replacements +- [languageService/importStatementCandidates.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts#L1-L100) — Enumerates import-statement candidate names from module completions and resolved from-import targets +- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts#L1-L33) — Provides helpers to check file navigability and convert DocumentRange objects to LSP Location values +- [languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts#L1-L52) — Registers and manages pull-mode diagnostics and workspace support with the language server +- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts#L1-L45) — Provides quick action handlers for source files such as ordering imports +- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts#L1-L734) — Finds and reports symbol references across files with declaration seeding and visibility-aware workspace traversal +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts#L1-L245) — Provides rename preparation and workspace edits for Python symbols while preventing non-user-code renames +- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts#L1-L515) — Provides signature help for Python calls based on callable types and active arguments +- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts#L1-L219) — Indexes all externally visible symbols and aliases in a source file into structured metadata +- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts#L1-L846) — Formats and generates hover/completion tooltips and documentation text for types, functions, classes, and symbols +- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts#L1-L162) — Provides workspace symbol search for the language server across user code ## Cross-subsystem dependencies **Imported by (external):** -- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) -- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts) +- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) +- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts) **Imports (external):** -- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts) -- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) -- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts) -- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) -- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) -- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts) -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) -- [analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts) -- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) -- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts) -- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) -- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) -- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) -- [analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts) -- [analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts) -- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) -- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts) -- [analyzer/symbolNameUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts) -- [analyzer/symbolUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts) -- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) -- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) -- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts) -- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) -- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) -- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) -- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commands.ts) -- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) -- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) -- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) -- [common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts) -- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) -- [common/console.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/console.ts) -- [common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts) -- [common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts) -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) -- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docRange.ts) -- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docStringService.ts) -- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/editAction.ts) -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) -- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) -- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts) -- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts) -- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) -- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) -- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) -- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) -- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts) -- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRange.ts) -- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts) -- [uri/emptyUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts) -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) -- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) -- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) -- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts) -- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts) -- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) -- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) +- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts) +- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) +- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts) +- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) +- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) +- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts) +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) +- [analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts) +- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) +- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts) +- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) +- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) +- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) +- [analyzer/scope.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scope.ts) +- [analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/sourceFileInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts) +- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) +- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts) +- [analyzer/symbolNameUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbolNameUtils.ts) +- [analyzer/symbolUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbolUtils.ts) +- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) +- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) +- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts) +- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) +- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) +- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) +- [commands/commands.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commands.ts) +- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) +- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) +- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) +- [common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts) +- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) +- [common/console.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/console.ts) +- [common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts) +- [common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts) +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) +- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docRange.ts) +- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docStringService.ts) +- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/editAction.ts) +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) +- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) +- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts) +- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts) +- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) +- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) +- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) +- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) +- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts) +- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRange.ts) +- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts) +- [uri/emptyUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts) +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) +- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) +- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) +- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts) +- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts) +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts) +- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts) +- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts) +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) diff --git a/architecture/generated/subsystems/localization.md b/architecture/generated/subsystems/localization.md index ae43c84e77b4..bc334073000b 100644 --- a/architecture/generated/subsystems/localization.md +++ b/architecture/generated/subsystems/localization.md @@ -1,8 +1,8 @@ # Subsystem: `localization` @@ -13,34 +13,35 @@ Source files under `localization/`. Grouped by the functional area each file was ## Diagnostics and Configuration -- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts#L1-L1704) — Localization utilities and parameterized string formatting for retrieving locale-specific message strings +- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts#L1-L1690) — Provides locale-aware lookup and formatting for Pyright user-facing strings ## Cross-subsystem dependencies **Imported by (external):** -- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) -- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) -- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts) -- [analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts) -- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts) -- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts) -- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts) -- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts) -- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts) -- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts) -- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts) -- [analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts) -- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts) -- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) -- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts) +- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) +- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) +- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts) +- [analyzer/constraintSolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constraintSolver.ts) +- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts) +- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts) +- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts) +- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts) +- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts) +- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts) +- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts) +- [analyzer/protocols.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/protocols.ts) +- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts) +- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) +- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts) **Imports (external):** -- [common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts) +- [common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts) diff --git a/architecture/generated/subsystems/parser.md b/architecture/generated/subsystems/parser.md index 56f4d70b0889..685b9865e94e 100644 --- a/architecture/generated/subsystems/parser.md +++ b/architecture/generated/subsystems/parser.md @@ -1,8 +1,8 @@ # Subsystem: `parser` @@ -13,98 +13,99 @@ Source files under `parser/`. Grouped by the functional area each file was assig ## Parser, Binder, and Symbols -- [parser/characterStream.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/characterStream.ts#L1-L167) — Provides a character stream for inspecting and advancing through text used by parsers and tokenizers -- [parser/characters.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/characters.ts#L1-L285) — Classifies Unicode characters and provides fast lookup helpers for identifier tokenization -- [parser/parseNodeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts#L1-L162) — Maps parse node and operator string names to their enum values and provides reverse lookup maps -- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts#L1-L2864) — Parse node types, enums, and helper functions for representing and manipulating Python AST nodes -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts#L1-L5465) — Parses Python source tokens into an abstract syntax tree and reports diagnostics -- [parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts#L1-L384) — Unescapes escaped string tokens and returns the unescaped value, escape errors, and non-ASCII/bytes info -- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts#L1-L2246) — Converts Python source into a stream of lexed tokens for parsing and analysis -- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts#L1-L619) — Defines enums, interfaces, and factory creators for Python tokenizer tokens and comments -- [parser/unicode.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/unicode.ts#L1-L3649) — Unicode character range tables used by the Python language specification +- [parser/characterStream.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/characterStream.ts#L1-L167) — Provides a character stream for inspecting and advancing through text used by parsers and tokenizers +- [parser/characters.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/characters.ts#L1-L285) — Classifies Unicode characters and provides fast lookup helpers for identifier tokenization +- [parser/parseNodeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodeUtils.ts#L1-L162) — Maps parse node and operator string names to their enum values and provides reverse lookup maps +- [parser/parseNodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parseNodes.ts#L1-L2864) — Parse node types, enums, and helper functions for representing and manipulating Python AST nodes +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts#L1-L5474) — Parses Python token streams into AST nodes and parser diagnostics +- [parser/stringTokenUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/stringTokenUtils.ts#L1-L396) — Unescapes Python string token literals and reports escape errors +- [parser/tokenizer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizer.ts#L1-L2246) — Converts Python source into a stream of lexed tokens for parsing and analysis +- [parser/tokenizerTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/tokenizerTypes.ts#L1-L619) — Defines enums, interfaces, and factory creators for Python tokenizer tokens and comments +- [parser/unicode.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/unicode.ts#L1-L3649) — Unicode character range tables used by the Python language specification ## Cross-subsystem dependencies **Imported by (external):** -- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) -- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) -- [analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts) -- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) -- [analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts) -- [analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts) -- [analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts) -- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts) -- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts) -- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts) -- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts) -- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) -- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) -- [analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts) -- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts) -- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts) -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) -- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) -- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts) -- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts) -- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts) -- [analyzer/parseTreeCleaner.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts) -- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) -- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) -- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts) -- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) -- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts) -- [analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts) -- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) -- [analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts) -- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts) -- [analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts) -- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts) -- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts) -- [analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts) -- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) -- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) -- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) -- [analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts) -- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts) -- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) -- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) -- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) -- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) -- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) -- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) -- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) -- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) -- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) -- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) -- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) -- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) -- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) -- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts) -- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) -- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) -- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) -- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) -- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts) +- [analyzer/analyzerNodeInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts) +- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) +- [analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts) +- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) +- [analyzer/codeFlowEngine.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowEngine.ts) +- [analyzer/codeFlowTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowTypes.ts) +- [analyzer/codeFlowUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/codeFlowUtils.ts) +- [analyzer/commentUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/commentUtils.ts) +- [analyzer/constructorTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructorTransform.ts) +- [analyzer/constructors.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/constructors.ts) +- [analyzer/dataClasses.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/dataClasses.ts) +- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) +- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) +- [analyzer/decorators.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/decorators.ts) +- [analyzer/enums.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/enums.ts) +- [analyzer/functionTransform.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/functionTransform.ts) +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) +- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) +- [analyzer/namedTuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/namedTuples.ts) +- [analyzer/operations.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/operations.ts) +- [analyzer/parameterUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parameterUtils.ts) +- [analyzer/parseTreeCleaner.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts) +- [analyzer/parseTreeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeUtils.ts) +- [analyzer/parseTreeWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parseTreeWalker.ts) +- [analyzer/patternMatching.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/patternMatching.ts) +- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) +- [analyzer/properties.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/properties.ts) +- [analyzer/scopeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/scopeUtils.ts) +- [analyzer/sentinel.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sentinel.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) +- [analyzer/staticExpressions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/staticExpressions.ts) +- [analyzer/symbol.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/symbol.ts) +- [analyzer/testWalker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/testWalker.ts) +- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts) +- [analyzer/tuples.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tuples.ts) +- [analyzer/typeCacheUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeCacheUtils.ts) +- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) +- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) +- [analyzer/typeEvaluatorTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts) +- [analyzer/typeGuards.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeGuards.ts) +- [analyzer/typePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typePrinter.ts) +- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) +- [analyzer/typeUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeUtils.ts) +- [analyzer/typedDicts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typedDicts.ts) +- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) +- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) +- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) +- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) +- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) +- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) +- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) +- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) +- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) +- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) +- [languageService/importSorter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importSorter.ts) +- [languageService/importStatementCandidates.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts) +- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) +- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) +- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) +- [languageService/tooltipUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/tooltipUtils.ts) **Imports (external):** -- [common/charCodes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/charCodes.ts) -- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) -- [common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts) -- [common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts) -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) -- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) -- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) -- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) -- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts) -- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRange.ts) -- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts) -- [common/timing.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/timing.ts) -- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts) +- [common/charCodes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/charCodes.ts) +- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) +- [common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts) +- [common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts) +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) +- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) +- [common/positionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/positionUtils.ts) +- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) +- [common/stringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/stringUtils.ts) +- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRange.ts) +- [common/textRangeCollection.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRangeCollection.ts) +- [common/timing.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/timing.ts) +- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts) diff --git a/architecture/generated/subsystems/pprof.md b/architecture/generated/subsystems/pprof.md index 1c5675dfea05..c890f16f6f01 100644 --- a/architecture/generated/subsystems/pprof.md +++ b/architecture/generated/subsystems/pprof.md @@ -1,8 +1,8 @@ # Subsystem: `pprof` @@ -13,4 +13,4 @@ Source files under `pprof/`. Grouped by the functional area each file was assign ## Shared Runtime Infrastructure -- [pprof/profiler.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pprof/profiler.ts#L1-L64) — Starts and stops Datadog pprof CPU profiling and saves encoded profiles to disk +- [pprof/profiler.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pprof/profiler.ts#L1-L64) — Starts and stops Datadog pprof CPU profiling and saves encoded profiles to disk diff --git a/architecture/generated/subsystems/src.md b/architecture/generated/subsystems/src.md index 2c14ccce95e3..dae029b35d04 100644 --- a/architecture/generated/subsystems/src.md +++ b/architecture/generated/subsystems/src.md @@ -1,8 +1,8 @@ # Subsystem: `src` @@ -13,125 +13,125 @@ Source files under `src/`. Grouped by the functional area each file was assigned ## CLI and VS Code Extension -- [src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeMain.ts#L1-L23) — Entrypoint that starts the Pyright Node server and its background analysis runner -- [src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L1-L29) — Starts and configures the Pyright language server in Node, initializing deps and handling main vs worker threads -- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts#L1-L1400) — Command-line entry point for the Pyright type checker, handling CLI args, diagnostics, and running analysis -- [src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L1-L50) — FileSystem wrapper that remaps URIs and delegates mutable file operations to an underlying real filesystem -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts#L1-L333) — Implements the Pyright language server, handling workspace settings, background analysis, commands, and code actions -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts#L1-L457) — Manages creation, initialization, and lifecycle of language server workspaces for the Pyright analyzer -- [src/langserver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright/src/langserver.ts#L1-L5) — Starts the Pyright command-line entrypoint with zero worker threads -- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright/src/pyright.ts#L1-L4) — Starts the Pyright CLI -- [src/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts#L1-L99) — Provides a file-based cancellation strategy for the language server protocol -- [src/extension.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/vscode-pyright/src/extension.ts#L1-L407) — Registers and manages the Pyright language server client and related VS Code commands and configuration -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/vscode-pyright/src/server.ts#L1-L7) — Starts the Pyright VS Code language server with one background worker +- [src/nodeMain.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeMain.ts#L1-L23) — Entrypoint that starts the Pyright Node server and its background analysis runner +- [src/nodeServer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/nodeServer.ts#L1-L29) — Starts and configures the Pyright language server in Node, initializing deps and handling main vs worker threads +- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts#L1-L1400) — Command-line entry point for the Pyright type checker, handling CLI args, diagnostics, and running analysis +- [src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts#L1-L50) — FileSystem wrapper that remaps URIs and delegates mutable file operations to an underlying real filesystem +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts#L1-L333) — Implements the Pyright language server, including settings, commands, code actions, and progress reporting +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts#L1-L457) — Manages creation, initialization, and lifecycle of language server workspaces for the Pyright analyzer +- [src/langserver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright/src/langserver.ts#L1-L5) — Starts the Pyright command-line entrypoint with zero worker threads +- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright/src/pyright.ts#L1-L4) — Starts the Pyright CLI +- [src/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/vscode-pyright/src/cancellationUtils.ts#L1-L99) — Provides a file-based cancellation strategy for the language server protocol +- [src/extension.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/vscode-pyright/src/extension.ts#L1-L407) — Registers and manages the Pyright language server client and related VS Code commands and configuration +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/vscode-pyright/src/server.ts#L1-L7) — Starts the Pyright VS Code language server with one background worker ## Import Resolution and Packaging -- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/partialStubService.ts#L1-L181) — Maps partially typed stub packages into corresponding installed library directories and provides a no-op alternative +- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/partialStubService.ts#L1-L181) — Maps partially typed stub packages into corresponding installed library directories and provides a no-op alternative ## Language Service Providers -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L1-L1620) — Provides core language server functionality and LSP handlers for Pyright +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts#L1-L1635) — Provides shared language server base functionality for Pyright language server variants ## Shared Runtime Infrastructure -- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L1-L66) — Provides classes to spawn and coordinate Pyright background analysis workers and runners -- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L1-L898) — Runs the analyzer in a background worker and manages program views, diagnostics, and result serialization -- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts#L1-L287) — Provides background thread classes and helpers for message serialization, logging, and cancellation -- [src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts#L1-L271) — Provides a read-only augmented FileSystem that overlays mapped directories onto a backing FileSystem -- [src/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/types.ts#L1-L40) — Exports types describing language server client capabilities and initialization options +- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts#L1-L66) — Provides classes to spawn and coordinate Pyright background analysis workers and runners +- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts#L1-L898) — Runs the analyzer in a background worker and manages program views, diagnostics, and result serialization +- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts#L1-L287) — Provides background thread classes and helpers for message serialization, logging, and cancellation +- [src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts#L1-L280) — Provides a read-only file system overlay that remaps directories while hiding their original locations +- [src/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/types.ts#L1-L45) — Defines language server client capabilities and initialization options for Pyright ## Cross-subsystem dependencies **Imported by (external):** -- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) -- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) -- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts) -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) -- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) -- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) +- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) +- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) +- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts) +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) +- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) +- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) **Imports (external):** -- [analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts) -- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) -- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts) -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) -- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts) -- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts) -- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) -- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts) -- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts) -- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) -- [commands/commandController.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandController.ts) -- [commands/commandResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/commandResult.ts) -- [common/asyncInitialization.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts) -- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) -- [common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts) -- [common/chokidarFileWatcherProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts) -- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) -- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) -- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) -- [common/console.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/console.ts) -- [common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts) -- [common/debug.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/debug.ts) -- [common/deferred.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/deferred.ts) -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) -- [common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts) -- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) -- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docRange.ts) -- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts) -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) -- [common/extensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensions.ts) -- [common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts) -- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) -- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts) -- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) -- [common/host.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/host.ts) -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) -- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/logTracker.ts) -- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts) -- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts) -- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) -- [common/progressReporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/progressReporter.ts) -- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) -- [common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts) -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) -- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) -- [common/streamUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/streamUtils.ts) -- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textRange.ts) -- [common/timing.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/timing.ts) -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) -- [uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts) -- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) -- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) -- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) -- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) -- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) -- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) -- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) -- [languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts) -- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) -- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) -- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts) -- [languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts) -- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) -- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) -- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) -- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) -- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/localization/localize.ts) -- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/parser/parser.ts) +- [analyzer/analysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analysis.ts) +- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) +- [analyzer/cacheManager.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cacheManager.ts) +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) +- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts) +- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts) +- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) +- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts) +- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/sourceFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFileInfo.ts) +- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) +- [commands/commandController.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandController.ts) +- [commands/commandResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/commandResult.ts) +- [common/asyncInitialization.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/asyncInitialization.ts) +- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) +- [common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts) +- [common/chokidarFileWatcherProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/chokidarFileWatcherProvider.ts) +- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) +- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) +- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) +- [common/console.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/console.ts) +- [common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts) +- [common/debug.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/debug.ts) +- [common/deferred.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/deferred.ts) +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) +- [common/diagnosticRules.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticRules.ts) +- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) +- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docRange.ts) +- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts) +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) +- [common/extensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensions.ts) +- [common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts) +- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) +- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts) +- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) +- [common/host.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/host.ts) +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) +- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/logTracker.ts) +- [common/lspUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/lspUtils.ts) +- [common/pathConsts.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathConsts.ts) +- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) +- [common/progressReporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/progressReporter.ts) +- [common/pythonVersion.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pythonVersion.ts) +- [common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts) +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) +- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) +- [common/streamUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/streamUtils.ts) +- [common/textRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textRange.ts) +- [common/timing.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/timing.ts) +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts) +- [uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts) +- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts) +- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) +- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) +- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) +- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) +- [languageService/documentSymbolCollector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolCollector.ts) +- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) +- [languageService/dynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/dynamicFeature.ts) +- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) +- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) +- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts) +- [languageService/pullDiagnosticsDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/pullDiagnosticsDynamicFeature.ts) +- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) +- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) +- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) +- [localization/localize.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/localization/localize.ts) +- [parser/parser.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/parser/parser.ts) diff --git a/architecture/generated/subsystems/uri.md b/architecture/generated/subsystems/uri.md index 76a1c01039f8..9c4f0f24a131 100644 --- a/architecture/generated/subsystems/uri.md +++ b/architecture/generated/subsystems/uri.md @@ -1,126 +1,127 @@ # Subsystem: `uri` Source files under `uri/`. Grouped by the functional area each file was assigned to during semantic lifting. - **Files**: 10 -- **Symbols (leaves)**: 177 +- **Symbols (leaves)**: 179 ## Shared Runtime Infrastructure -- [uri/baseUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts#L1-L307) — Defines an abstract BaseUri class representing URIs and providing common path and extension utilities -- [uri/constantUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts#L1-L142) — Immutable marker URI type with no filesystem semantics and identity-based equality -- [uri/emptyUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts#L1-L43) — Defines a singleton EmptyUri class representing an empty URI value -- [uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts#L1-L302) — Represents file-schemed URIs for filesystem paths and provides path, query, fragment, and resolution utilities -- [uri/memoization.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts#L1-L86) — Provides decorators to memoize property getters, no-arg instance methods, and static methods with LRU caching -- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts#L1-L227) — Manages URI creation, parsing, normalization, and helpers for file, web, constant, and empty URI types -- [uri/uriInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriInterface.ts#L1-L102) — Uri interface for representing and manipulating URIs, including path, fragment, query, and extension helpers -- [uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts#L1-L81) — Map keyed by Uri for storing and iterating Uri-to-value mappings -- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts#L1-L459) — Utilities for URI and filesystem operations, including wildcard file specs, directory entries, and path helpers -- [uri/webUri.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts#L1-L295) — Implements a WebUri class representing non-file URIs and exposing path, query, fragment, and manipulation methods +- [uri/baseUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/baseUri.ts#L1-L307) — Defines an abstract BaseUri class representing URIs and providing common path and extension utilities +- [uri/constantUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/constantUri.ts#L1-L142) — Immutable marker URI type with no filesystem semantics and identity-based equality +- [uri/emptyUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/emptyUri.ts#L1-L43) — Defines a singleton EmptyUri class representing an empty URI value +- [uri/fileUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/fileUri.ts#L1-L327) — Represents file-schemed URIs with path manipulation, serialization, matching, and display helpers +- [uri/memoization.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/memoization.ts#L1-L90) — Provides decorators for caching property, instance method, and static method results +- [uri/uri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uri.ts#L1-L227) — Manages URI creation, parsing, normalization, and helpers for file, web, constant, and empty URI types +- [uri/uriInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriInterface.ts#L1-L102) — Uri interface for representing and manipulating URIs, including path, fragment, query, and extension helpers +- [uri/uriMap.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriMap.ts#L1-L81) — Map keyed by Uri for storing and iterating Uri-to-value mappings +- [uri/uriUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/uriUtils.ts#L1-L483) — Provides URI-based filesystem utilities for paths, file specs, wildcards, entries, and LSP URI conversion +- [uri/webUri.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/uri/webUri.ts#L1-L295) — Implements a WebUri class representing non-file URIs and exposing path, query, fragment, and manipulation methods ## Cross-subsystem dependencies **Imported by (external):** -- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts) -- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) -- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) -- [analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts) -- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) -- [analyzer/circularDependency.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts) -- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) -- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) -- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) -- [analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts) -- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts) -- [analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts) -- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) -- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts) -- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts) -- [analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts) -- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) -- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts) -- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts) -- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) -- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) -- [analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts) -- [analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts) -- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) -- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) -- [analyzer/sourceMapperUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts) -- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts) -- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) -- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) -- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) -- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) -- [analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts) -- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts) -- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) -- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts) -- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) -- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) -- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts) -- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) -- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) -- [common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts) -- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) -- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) -- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) -- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docRange.ts) -- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/docStringService.ts) -- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/editAction.ts) -- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts) -- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) -- [common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts) -- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) -- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts) -- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) -- [common/host.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/host.ts) -- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) -- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) -- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/logTracker.ts) -- [common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts) -- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) -- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts) -- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) -- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) -- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) -- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) -- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) -- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) -- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) -- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts) -- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) -- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) -- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) -- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) -- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) -- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts) -- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) -- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) -- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) -- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) -- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) -- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) -- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/partialStubService.ts) -- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyright.ts) -- [src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts) -- [src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts) -- [src/server.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/server.ts) -- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) +- [analyzer/analyzerFileInfo.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/analyzerFileInfo.ts) +- [analyzer/backgroundAnalysisProgram.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/backgroundAnalysisProgram.ts) +- [analyzer/binder.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/binder.ts) +- [analyzer/cellChainIndex.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/cellChainIndex.ts) +- [analyzer/checker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/checker.ts) +- [analyzer/circularDependency.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/circularDependency.ts) +- [analyzer/declaration.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declaration.ts) +- [analyzer/declarationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/declarationUtils.ts) +- [analyzer/importResolver.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolver.ts) +- [analyzer/importResolverFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverFileSystem.ts) +- [analyzer/importResolverTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResolverTypes.ts) +- [analyzer/importResult.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importResult.ts) +- [analyzer/importStatementUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/importStatementUtils.ts) +- [analyzer/packageTypeReport.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeReport.ts) +- [analyzer/packageTypeVerifier.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts) +- [analyzer/parentDirectoryCache.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/parentDirectoryCache.ts) +- [analyzer/program.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/program.ts) +- [analyzer/programTypes.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/programTypes.ts) +- [analyzer/pyTypedUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pyTypedUtils.ts) +- [analyzer/pythonPathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/pythonPathUtils.ts) +- [analyzer/service.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/service.ts) +- [analyzer/serviceUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/serviceUtils.ts) +- [analyzer/sourceEnumerator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceEnumerator.ts) +- [analyzer/sourceFile.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceFile.ts) +- [analyzer/sourceMapper.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapper.ts) +- [analyzer/sourceMapperUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/sourceMapperUtils.ts) +- [analyzer/tracePrinter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/tracePrinter.ts) +- [analyzer/typeDocStringUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts) +- [analyzer/typeEvaluator.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeEvaluator.ts) +- [analyzer/typeStubWriter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeStubWriter.ts) +- [analyzer/types.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/types.ts) +- [analyzer/typeshedInfoProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/analyzer/typeshedInfoProvider.ts) +- [src/backgroundAnalysis.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysis.ts) +- [src/backgroundAnalysisBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundAnalysisBase.ts) +- [src/backgroundThreadBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/backgroundThreadBase.ts) +- [commands/createTypeStub.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/createTypeStub.ts) +- [commands/dumpFileDebugInfoCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts) +- [commands/quickActionCommand.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/commands/quickActionCommand.ts) +- [common/cancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/cancellationUtils.ts) +- [common/commandLineOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandLineOptions.ts) +- [common/commandUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/commandUtils.ts) +- [common/configOptions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/configOptions.ts) +- [common/diagnostic.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnostic.ts) +- [common/diagnosticSink.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/diagnosticSink.ts) +- [common/docRange.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docRange.ts) +- [common/docStringService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/docStringService.ts) +- [common/editAction.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/editAction.ts) +- [common/envVarUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/envVarUtils.ts) +- [common/extensibility.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/extensibility.ts) +- [common/fileBasedCancellationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileBasedCancellationUtils.ts) +- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) +- [common/fileWatcher.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileWatcher.ts) +- [common/fullAccessHost.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fullAccessHost.ts) +- [common/host.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/host.ts) +- [common/languageInfoUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageInfoUtils.ts) +- [common/languageServerInterface.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/languageServerInterface.ts) +- [common/logTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/logTracker.ts) +- [common/realFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/realFileSystem.ts) +- [common/serviceProviderExtensions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProviderExtensions.ts) +- [common/textEditTracker.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/textEditTracker.ts) +- [common/workspaceEditUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/workspaceEditUtils.ts) +- [src/languageServerBase.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageServerBase.ts) +- [languageService/analyzerServiceExecutor.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts) +- [languageService/autoImporter.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/autoImporter.ts) +- [languageService/callHierarchyProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/callHierarchyProvider.ts) +- [languageService/codeActionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/codeActionProvider.ts) +- [languageService/completionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProvider.ts) +- [languageService/completionProviderUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/completionProviderUtils.ts) +- [languageService/definitionProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/definitionProvider.ts) +- [languageService/documentHighlightProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentHighlightProvider.ts) +- [languageService/documentSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/documentSymbolProvider.ts) +- [languageService/fileWatcherDynamicFeature.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts) +- [languageService/hoverProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/hoverProvider.ts) +- [languageService/importStatementCandidates.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/importStatementCandidates.ts) +- [languageService/navigationUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/navigationUtils.ts) +- [languageService/quickActions.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/quickActions.ts) +- [languageService/referencesProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/referencesProvider.ts) +- [languageService/renameProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/renameProvider.ts) +- [languageService/signatureHelpProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/signatureHelpProvider.ts) +- [languageService/symbolIndexer.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/symbolIndexer.ts) +- [languageService/workspaceSymbolProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts) +- [src/partialStubService.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/partialStubService.ts) +- [src/pyright.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyright.ts) +- [src/pyrightFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/pyrightFileSystem.ts) +- [src/readonlyAugmentedFileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts) +- [src/server.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/server.ts) +- [src/workspaceFactory.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/workspaceFactory.ts) **Imports (external):** -- [common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts) -- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) -- [common/core.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/core.ts) -- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) -- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) -- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) -- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/784698179a5627072df39bbe0fcadb55bb7dd408/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) +- [common/caseSensitivityDetector.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/caseSensitivityDetector.ts) +- [common/collectionUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/collectionUtils.ts) +- [common/core.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/core.ts) +- [common/fileSystem.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/fileSystem.ts) +- [common/pathUtils.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/pathUtils.ts) +- [common/serviceKeys.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceKeys.ts) +- [common/serviceProvider.ts](https://github.com/microsoft/pyrx/blob/af737e1f2106f0fcd1e4c921a347f7873066cad4/packages/pyright/packages/pyright-internal/src/common/serviceProvider.ts) diff --git a/build/azuredevops/azure-pipelines-release.yml b/build/azuredevops/azure-pipelines-release.yml index b23ee4fe05c3..ad6a6b03ccb8 100644 --- a/build/azuredevops/azure-pipelines-release.yml +++ b/build/azuredevops/azure-pipelines-release.yml @@ -21,10 +21,17 @@ variables: value: pyright - name: AZURE_ARTIFACTS_FEED value: 'https://devdiv.pkgs.visualstudio.com/DevDiv/_packaging/Pylance_PublicPackages/npm/registry/' + # Route all npm/pnpm/yarn installs through the runtime-generated, authenticated + # CFS feed .npmrc (created by build/templates/npmAuthenticate.yml) instead of a + # committed registry, so this public repo's local/fork installs stay on public npm (ICM 839806358). + - name: NPM_CONFIG_USERCONFIG + value: $(Agent.TempDirectory)/cfs.npmrc extends: template: azure-pipelines/MicroBuild.1ES.Official.Publish.yml@MicroBuildTemplate parameters: + settings: + networkIsolationPolicy: Good, CFSClean, GitHub, AzureStorage sdl: codeSignValidation: enabled: true @@ -67,20 +74,20 @@ extends: submodules: true fetchTags: false persistCredentials: True - - task: NodeTool@0 + - template: /build/templates/npmAuthenticate.yml@self + - task: UseNode@1 displayName: Use Node 24.15.0 inputs: - versionSpec: 24.15.0 - - template: /build/templates/npmAuthenticate.yml@self + version: 24.15.0 - task: CmdLine@2 - displayName: npm install + displayName: pnpm install inputs: - script: npm run install:all + script: pnpm run install:all - task: CmdLine@2 displayName: Package VSIX inputs: script: | - npm run package + pnpm run package workingDirectory: packages/vscode-pyright - task: PowerShell@2 @@ -98,21 +105,27 @@ extends: TargetFolder: build_output - script: | - npm install -g @vscode/vsce + pnpm install -g @vscode/vsce displayName: 'Install vsce and dependencies' - - script: npx vsce generate-manifest -i $(VSIX_NAME) -o extension.manifest + - script: pnpm exec vsce generate-manifest -i $(VSIX_NAME) -o extension.manifest displayName: 'Generate extension manifest' workingDirectory: packages/vscode-pyright - task: NuGetToolInstaller@1 displayName: 'Install NuGet' + - task: NuGetAuthenticate@1 + displayName: 'Authenticate NuGet' + - task: NuGetCommand@2 inputs: command: 'restore' restoreSolution: '$(Build.SourcesDirectory)/packages/vscode-pyright/packages.config' restoreDirectory: '$(Build.SourcesDirectory)/packages/vscode-pyright/packages' + feedsToUse: 'config' + nugetConfigPath: '$(Build.SourcesDirectory)/packages/vscode-pyright/nuget.config' + includeNuGetOrg: false - task: MSBuild@1 displayName: 'Sign binaries' @@ -153,7 +166,7 @@ extends: dependsOn: # Blank to allow running in parallel with BuildVsix jobs: - job: build_npm - displayName: Build NPM + displayName: Build package templateContext: outputs: - output: pipelineArtifact @@ -167,18 +180,18 @@ extends: submodules: true fetchTags: false persistCredentials: True - - task: NodeTool@0 + - template: /build/templates/npmAuthenticate.yml@self + - task: UseNode@1 displayName: Use Node 24.15.0 inputs: - versionSpec: 24.15.0 - - template: /build/templates/npmAuthenticate.yml@self + version: 24.15.0 - task: CmdLine@2 - displayName: npm install + displayName: pnpm install inputs: - script: npm run install:all + script: pnpm run install:all - - script: npm pack - displayName: npm pack + - script: pnpm pack + displayName: pnpm pack workingDirectory: packages/pyright - script: mv pyright-*.tgz ${{ variables.PACKAGE_NAME }} @@ -213,14 +226,19 @@ extends: targetPath: $(Pipeline.Workspace)/$(ARTIFACT_NAME_PACKAGE) steps: - checkout: none + # Generate + authenticate the CFS feed .npmrc at runtime (ICM 839806358). + - template: /build/templates/npmAuthenticate.yml@self # Next step fails the build if https://github.com/microsoft/pyright/issues/10350 repros. + # Yarn does not reliably honor NPM_CONFIG_USERCONFIG, so also drop the authenticated + # CFS .npmrc directly in the working dir where yarn resolves it. - script: | mkdir pyrightTest + cp "$(Agent.TempDirectory)/cfs.npmrc" pyrightTest/.npmrc cd pyrightTest yarn yarn add --dev $(Pipeline.Workspace)/$(ARTIFACT_NAME_PACKAGE)/$(PACKAGE_NAME) node_modules/.bin/pyright --version - displayName: Validate npm package + displayName: Validate package archive - task: GitHubRelease@1 #https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/github-release-v1?view=azure-pipelines displayName: 'Create GitHub Release' inputs: @@ -262,9 +280,9 @@ extends: displayName: Publish extension to marketplace steps: - checkout: none - - task: NodeTool@0 + - task: UseNode@1 inputs: - versionSpec: 24.15.0 + version: 24.15.0 - task: DownloadPipelineArtifact@2 displayName: 'Download Artifacts from Validation Job' inputs: @@ -273,8 +291,10 @@ extends: targetPath: '$(System.ArtifactsDirectory)' # https://code.visualstudio.com/api/working-with-extensions/publishing-extension # Install dependencies and VS Code Extension Manager (vsce >= v2.26.1 needed) + # Generate + authenticate the CFS feed .npmrc at runtime (ICM 839806358). + - template: /build/templates/npmAuthenticate.yml@self - script: | - npm install -g @vscode/vsce + pnpm install -g @vscode/vsce displayName: 'Install vsce and dependencies' # https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token # Publish to Marketplace @@ -296,7 +316,7 @@ extends: - PublishToMarketplace jobs: - job: publish_package - displayName: Publish package to NPM + displayName: Publish package to registry pool: name: VSEngSS-MicroBuild2022-1ES # This pool is required to have the certs needed to publish using ESRP. diff --git a/build/azuredevops/azure-pipelines.yml b/build/azuredevops/azure-pipelines.yml index 73ea4c331a17..5b6b5a2ea350 100644 --- a/build/azuredevops/azure-pipelines.yml +++ b/build/azuredevops/azure-pipelines.yml @@ -10,9 +10,16 @@ variables: value: 'real' - name: TeamName value: Pyright + # Route all npm/pnpm installs through the runtime-generated, authenticated CFS feed + # .npmrc (created by build/templates/npmAuthenticate.yml) instead of a committed + # registry, so this public repo's local/fork installs stay on public npm (ICM 839806358). + - name: NPM_CONFIG_USERCONFIG + value: $(Agent.TempDirectory)/cfs.npmrc extends: template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate parameters: + settings: + networkIsolationPolicy: Good, CFSClean, GitHub sdl: sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES pool: @@ -40,19 +47,21 @@ extends: submodules: true fetchTags: true persistCredentials: True - - task: NodeTool@0 + # Generate + authenticate the CFS feed .npmrc at runtime (ICM 839806358). + - template: /build/templates/npmAuthenticate.yml@self + - task: UseNode@1 displayName: Use Node 24.15.0 inputs: - versionSpec: 24.15.0 + version: 24.15.0 - task: CmdLine@2 - displayName: npm install + displayName: pnpm install inputs: - script: npm run install:all + script: pnpm run install:all - task: CmdLine@2 displayName: Package VSIX inputs: script: | - npm run package + pnpm run package workingDirectory: packages/vscode-pyright - task: CopyFiles@2 displayName: 'Copy vsix to: build_output' diff --git a/build/lib/updateDeps.js b/build/lib/updateDeps.js index 67188c6ee86f..0f225f5b507d 100644 --- a/build/lib/updateDeps.js +++ b/build/lib/updateDeps.js @@ -3,7 +3,6 @@ const { promises: fsAsync } = require('fs'); const ncu = require('npm-check-updates'); -const PQueue = require('p-queue').default; const path = require('path'); const util = require('util'); const { glob } = require('glob'); @@ -33,13 +32,10 @@ async function findPackages() { return ['package.json'].concat(...matches); } -const queue = new PQueue({ concurrency: 4 }); - -/** @type {(packageFile: string, transitive: boolean, reject?: string[]) => Promise} */ +/** @type {(packageFile: string, transitive: boolean, reject?: string[]) => Promise} */ async function updatePackage(packageFile, transitive, reject = undefined) { packageFile = path.resolve(packageFile); - const packagePath = path.dirname(packageFile); - const packageName = path.basename(packagePath); + const packageName = path.basename(path.dirname(packageFile)); console.log(`${packageName}: updating with ncu`); const updateResult = await ncu.run({ @@ -50,32 +46,30 @@ async function updatePackage(packageFile, transitive, reject = undefined) { }); if (!transitive && Object.keys(/**@type {any}*/ (updateResult)).length === 0) { - // If nothing changed and we aren't updating transitive deps, don't run npm install. - return; + // If nothing changed and we aren't updating transitive deps, don't run pnpm install. + return false; } - if (transitive) { - console.log(`${packageName}: removing package-lock.json and node_modules`); - await fsAsync.unlink(path.join(packagePath, 'package-lock.json')); - await rmdir(path.join(packagePath, 'node_modules')); - } - - await queue.add(async () => { - console.log(`${packageName}: reinstalling package`); - await exec('npm install', { - cwd: packagePath, - env: { - ...process.env, - SKIP_LERNA_BOOTSTRAP: 'yes', - }, - }); - }); + return true; } /** @type {(transitive: boolean, reject?: string[]) => Promise} */ async function updateAll(transitive, reject = undefined) { const packageFiles = await findPackages(); - await Promise.all(packageFiles.map((packageFile) => updatePackage(packageFile, transitive, reject))); + const updatedPackages = await Promise.all( + packageFiles.map((packageFile) => updatePackage(packageFile, transitive, reject)) + ); + + if (transitive) { + console.log('removing pnpm-lock.yaml and node_modules'); + await fsAsync.unlink('pnpm-lock.yaml'); + await rmdir('node_modules'); + } + + if (transitive || updatedPackages.some((updated) => updated)) { + console.log('reinstalling workspace'); + await exec('pnpm install'); + } } module.exports = { diff --git a/build/skipBootstrap.js b/build/skipBootstrap.js deleted file mode 100644 index e55fcf246e86..000000000000 --- a/build/skipBootstrap.js +++ /dev/null @@ -1,9 +0,0 @@ -// This script exits with a "failure" if this SKIP_LERNA_BOOTSTRAP is set. -// This can be used to write npm script like: -// node ./build/skipBootstrap.js || lerna bootstrap -// Which means "skip lerna bootstrap if SKIP_LERNA_BOOTSTRAP is set". -// This prevents spurious bootstraps in nested lerna repos. - -if (!process.env.SKIP_LERNA_BOOTSTRAP) { - process.exit(1); -} diff --git a/build/templates/npmAuthenticate.yml b/build/templates/npmAuthenticate.yml index f5e475cc58d3..292a08790dc5 100644 --- a/build/templates/npmAuthenticate.yml +++ b/build/templates/npmAuthenticate.yml @@ -1,16 +1,19 @@ +# Generate and authenticate a CFS-governed npm feed .npmrc at runtime (ICM 839806358). +# +# We intentionally do NOT commit the internal DevDiv registry into this public +# repository, so ordinary local `pnpm install` / `yarn` runs and fork-PR CI keep +# using the public npm registry. Only trusted Azure DevOps jobs route installs +# through the CFS feed, by pointing NPM_CONFIG_USERCONFIG (a pipeline variable) +# at the temp file created and authenticated below. steps: - - task: npmAuthenticate@0 - inputs: - workingFile: .npmrc - - - task: npmAuthenticate@0 - inputs: - workingFile: packages/pyright/.npmrc - - - task: npmAuthenticate@0 - inputs: - workingFile: packages/pyright-internal/.npmrc + - pwsh: | + @( + 'registry=https://devdiv.pkgs.visualstudio.com/DevDiv/_packaging/Pylance_PublicPackages/npm/registry/', + 'always-auth=true' + ) | Set-Content -Path "$(Agent.TempDirectory)/cfs.npmrc" + displayName: 'Create CFS .npmrc (runtime, not committed)' - task: npmAuthenticate@0 + displayName: 'Authenticate CFS feed' inputs: - workingFile: packages/vscode-pyright/.npmrc + workingFile: $(Agent.TempDirectory)/cfs.npmrc diff --git a/docs/build-debug.md b/docs/build-debug.md index 29a75efc78a2..83e0efcce243 100644 --- a/docs/build-debug.md +++ b/docs/build-debug.md @@ -3,13 +3,13 @@ To install the dependencies for all packages in the repo: 1. Install [nodejs](https://nodejs.org/en/) version 16.x 2. Open terminal window in main directory of cloned source -3. Execute `npm run install:all` to install dependencies for projects and sub-projects +3. Execute `pnpm run install:all` to install dependencies for projects and sub-projects ## Building the CLI 1. cd to the `packages/pyright` directory -2. Execute `npm run build` +2. Execute `pnpm run build` Once built, you can run the command-line tool by executing the following: @@ -18,7 +18,7 @@ Once built, you can run the command-line tool by executing the following: ## Building the VS Code extension 1. cd to the `packages/vscode-pyright` directory -2. Execute `npm run package` +2. Execute `pnpm run package` The resulting package (pyright-X.Y.Z.vsix) can be found in the client directory. To install in VS Code, go to the extensions panel and choose “Install from VSIX...” from the menu, then select the package. @@ -27,7 +27,7 @@ To install in VS Code, go to the extensions panel and choose “Install from VSI ## Running Pyright tests 1. cd to the `packages/pyright-internal` directory -2. Execute `npm run test` +2. Execute `pnpm run test` ## Debugging Pyright diff --git a/docs/configuration.md b/docs/configuration.md index 299c1eb034d0..a82363152d44 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -12,7 +12,7 @@ The following settings control the *environment* in which Pyright will check for - **include** [array of paths, optional]: Paths of directories or files that should be considered part of the project. If no paths are specified, pyright defaults to the directory that contains the config file. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no include paths are specified, the root path for the workspace is assumed. -- **exclude** [array of paths, optional]: Paths of directories or files that should not be considered part of the project. These override the directories and files that `include` matched, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). If no exclude paths are specified, Pyright automatically excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*`. Pylance also excludes any virtual environment directories regardless of the exclude paths specified. For more detail on Python environment specification and discovery, refer to the [import resolution](import-resolution.md#configuring-your-python-environment) documentation. +- **exclude** [array of paths, optional]: Paths of directories or files that should not be considered part of the project. These override the directories and files that `include` matched, allowing specific subdirectories to be excluded. Note that files in the exclude paths may still be included in the analysis if they are referenced (imported) by source files that are not excluded. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). By default Pyright also excludes the following: `**/node_modules`, `**/__pycache__`, `**/.*` (hidden directories); Pylance additionally excludes auto-detected virtual environment directories. Any paths you specify here are added on top of these defaults rather than replacing them, and the defaults take precedence over `include` (so a directory auto-detected as a virtual environment stays excluded even if it is explicitly included). In Pylance these built-in excludes can be turned off with the `python.analysis.useDefaultExcludes` setting. For more detail on Python environment specification and discovery, refer to the [import resolution](import-resolution.md#configuring-your-python-environment) documentation. - **strict** [array of paths, optional]: Paths of directories or files that should use “strict” analysis if they are included. This is the same as manually adding a “# pyright: strict” comment. In strict mode, most type-checking rules are enabled. Refer to [this table](configuration.md#diagnostic-settings-defaults) for details about which rules are enabled in strict mode. Paths may contain wildcard characters ** (a directory or multiple levels of directories), * (a sequence of zero or more characters), or ? (a single character). @@ -30,7 +30,7 @@ The following settings control the *environment* in which Pyright will check for - **verboseOutput** [boolean]: Specifies whether output logs should be verbose. This is useful when diagnosing certain problems like import resolution issues. -- **extraPaths** [array of strings, optional]: Additional search paths that will be used when searching for modules imported by files. +- **extraPaths** [array of strings, optional]: Additional search paths that will be used when searching for modules imported by files. Each entry may contain glob patterns (`*`, `**`, `?`), which are expanded to matching directories in a deterministic order; see [Extra path glob expansion](import-resolution.md#extra-path-glob-expansion). - **pythonVersion** [string, optional]: Specifies the version of Python that will be used to execute the source code. The version should be specified as a string in the format "M.m" where M is the major version and m is the minor (e.g. `"3.0"` or `"3.6"`). If a version is provided, pyright will generate errors if the source code makes use of language features that are not supported in that version. It will also tailor its use of type stub files, which conditionalizes type definitions based on the version. If no version is specified, pyright will use the version of the current python interpreter, if one is present. @@ -244,7 +244,7 @@ The following settings can be specified for each execution environment. Each sou - **root** [string, required]: Root path for the code that will execute within this execution environment. -- **extraPaths** [array of strings, optional]: Additional search paths (in addition to the root path) that will be used when searching for modules imported by files within this execution environment. If specified, this overrides the default extraPaths setting when resolving imports for files within this execution environment. Note that each file’s execution environment mapping is independent, so if file A is in one execution environment and imports a second file B within a second execution environment, any imports from B will use the extraPaths in the second execution environment. +- **extraPaths** [array of strings, optional]: Additional search paths (in addition to the root path) that will be used when searching for modules imported by files within this execution environment. If specified, this overrides the default extraPaths setting when resolving imports for files within this execution environment. Note that each file’s execution environment mapping is independent, so if file A is in one execution environment and imports a second file B within a second execution environment, any imports from B will use the extraPaths in the second execution environment. As with the top-level `extraPaths`, each entry may contain glob patterns, which are expanded to matching directories in a deterministic order; see [Extra path glob expansion](import-resolution.md#extra-path-glob-expansion). - **pythonVersion** [string, optional]: The version of Python used for this execution environment. If not specified, the global `pythonVersion` setting is used instead. diff --git a/docs/import-resolution.md b/docs/import-resolution.md index 658d9093693e..186db4e51757 100644 --- a/docs/import-resolution.md +++ b/docs/import-resolution.md @@ -11,7 +11,7 @@ For absolute (non-relative) imports, Pyright employs the following resolution or * Try to resolve relative to the **root directory** of the execution environment. If no execution environments are specified in the config file, use the root of the workspace. For more information about execution environments, refer to the [configuration documentation](configuration.md#execution-environment-options). - * Try to resolve using any of the **extra paths** defined for the execution environment in the config file. If no execution environment applies, use the `python.analysis.extraPaths` setting. Extra paths are searched in the order in which they are provided in the config file or setting. + * Try to resolve using any of the **extra paths** defined for the execution environment in the config file. If no execution environment applies, use the `python.analysis.extraPaths` setting. Extra paths are searched in the order in which they are provided in the config file or setting. Extra path entries may contain glob patterns, which are expanded to matching directories; see [Extra path glob expansion](#extra-path-glob-expansion). * If no execution environment is configured, try to resolve using the **local directory `src`**. It is common for Python projects to place local source files within a directory of this name. @@ -29,6 +29,47 @@ For absolute (non-relative) imports, Pyright employs the following resolution or 6. For an absolute import, if all of the above attempts fail, attempt to import a module from the same directory as the importing file and parent directories that are also children of the root workspace. This accommodates cases where it is assumed that a Python script will be executed from one of these subdirectories rather than from the root directory. +### Extra Path Glob Expansion +Each entry in `extraPaths` may contain glob wildcards. This applies to every source of extra paths: the top-level `extraPaths` config entry, an execution environment's `extraPaths`, and the `python.analysis.extraPaths` setting. Glob entries are expanded to the set of matching directories before import resolution, using the same wildcard syntax as `include`, `exclude`, and `ignore`: + +- `*` matches any sequence of characters within a single path segment. +- `**` matches any number of characters, including path separators (a recursive directory wildcard). +- `?` matches a single character. + +Only **directories** are matched; a file is never added as an extra path. An entry that contains no wildcard character is treated as a literal path and, as before, is not required to exist. An empty or whitespace-only entry is ignored. Relative entries are resolved against the same base directory as literal extra paths (the config file's directory for config entries, or the project root for the setting). + +Expansion is deterministic and preserves the order-sensitive contract of `extraPaths` (extra paths are searched in the order in which they are provided): + +1. **In-place expansion.** A glob entry is replaced, at its position in the list, by the directories it matches, sorted in ascending order by their path. The comparison is case-sensitive and ordinal (paths are compared by Unicode code point after normalizing to NFC), so it is independent of the user's locale, culture, Unicode normalization form, and operating system, and the expanded order is identical everywhere. Locale-aware collation is deliberately not used. +2. **Precedence on duplicates.** When the same directory would be produced more than once, an explicit (non-wildcard) entry always wins and keeps its own position, even relative to an earlier glob; among glob entries, the earlier glob in the list wins. The losing duplicate is dropped. Two literal entries that resolve to the same path keep the first occurrence. + +The comparison used for de-duplication drops a trailing path separator and is **case-sensitive**: two entries that differ only in case are treated as distinct, because case affects the resolved module name. Symbolic links are **not** resolved — the matched path is used as-is so that it maps to the intended module name — but symbolic-link cycles are guarded against during expansion, the same way they are when scanning `include` file specs. + +A glob that matches no directory contributes nothing; this is not an error. The fully resolved extra paths, after expansion, are written to the log when verbose logging is enabled. + +Glob expansion applies only to local (`file`-scheme) paths. An entry on a virtual or non-`file` filesystem is treated as a literal path (its wildcards are not expanded), so glob syntax has no effect on virtual workspaces. + +De-duplication and ordering are computed independently for each resolved `extraPaths` list. Because an execution environment's `extraPaths` overrides (rather than merges with) the default `extraPaths`, expansion runs on whichever list applies to a given file. + +For example, consider this directory layout: + +``` +libs/ +├── auth/src/ +├── core/src/ +└── shared/src/ +``` + +Given `extraPaths` of `["libs/shared/src", "libs/*/src"]`: + +- `libs/shared/src` is a literal entry, so it keeps its position at the front of the list. +- `libs/*/src` expands, in ascending order, to `libs/auth/src`, `libs/core/src`, and `libs/shared/src`, but `libs/shared/src` is dropped from the expansion because the literal entry already owns that path. + +The resulting order is `libs/shared/src`, `libs/auth/src`, `libs/core/src`. + +When two globs match the same directory, the earlier glob keeps it. For example, over a tree that contains `external/pip310_numpy/site-packages`, the list `["external/pip310_*/site-packages", "external/pip3??_numpy/site-packages"]` contributes that directory from the first glob and drops it from the second. + + ### Configuring Your Python Environment Pyright does not require a Python environment to be configured if all imports can be resolved using local files and type stubs. If a Python environment is configured, it will attempt to use the packages installed in the `site-packages` subdirectory during import resolution. diff --git a/docs/settings.md b/docs/settings.md index 8f3bef9aed30..97b097d612a6 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -22,7 +22,7 @@ The Pyright language server honors the following settings. **python.analysis.exclude** [array of paths]: Paths of directories or files that should not be included. This can be overridden in the configuration file. -**python.analysis.extraPaths** [array of paths]: Paths to add to the default execution environment extra paths if there are no execution environments defined in the config file. +**python.analysis.extraPaths** [array of paths]: Paths to add to the default execution environment extra paths if there are no execution environments defined in the config file. Each entry may contain glob patterns, which are expanded to matching directories in a deterministic order; see [Extra path glob expansion](import-resolution.md#extra-path-glob-expansion). **python.analysis.ignore** [array of paths]: Paths of directories or files whose diagnostic output (errors and warnings) should be suppressed. This can be overridden in the configuration file. diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 98df423bff51..000000000000 --- a/package-lock.json +++ /dev/null @@ -1,7996 +0,0 @@ -{ - "name": "pyright-root", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pyright-root", - "hasInstallScript": true, - "devDependencies": { - "@types/glob": "^8.1.0", - "@types/node": "^25.9.2", - "@types/yargs": "^16.0.11", - "@typescript-eslint/eslint-plugin": "8.60.1", - "@typescript-eslint/parser": "8.60.1", - "axios": "^1.12.2", - "cross-env": "^10.1.0", - "eslint": "^9.0.0", - "eslint-config-prettier": "^8.10.2", - "eslint-plugin-simple-import-sort": "^10.0.0", - "glob": "^11.1.0", - "jsonc-parser": "^3.3.1", - "lerna": "9.0.7", - "npm-check-updates": "^19.6.3", - "p-queue": "^6.6.2", - "prettier": "2.8.8", - "syncpack": "~15.3.1", - "tmp": "^0.2.7", - "typescript": "~6.0.3", - "word-wrap": "1.2.5", - "yargs": "^16.2.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.28.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@emnapi/wasi-threads": "1.0.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@epic-web/invariant": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@gar/promise-retry": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/diff-sequences": { - "version": "30.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "30.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@emnapi/core": "^1.1.0", - "@emnapi/runtime": "^1.1.0", - "@tybys/wasm-util": "^0.9.0" - } - }, - "node_modules/@npmcli/agent": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^11.2.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist": { - "version": "9.1.6", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^4.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/map-workspaces": "^5.0.0", - "@npmcli/metavuln-calculator": "^9.0.2", - "@npmcli/name-from-folder": "^3.0.0", - "@npmcli/node-gyp": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/query": "^4.0.0", - "@npmcli/redact": "^3.0.0", - "@npmcli/run-script": "^10.0.0", - "bin-links": "^5.0.0", - "cacache": "^20.0.1", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^9.0.0", - "json-stringify-nice": "^1.1.4", - "lru-cache": "^11.2.1", - "minimatch": "^10.0.3", - "nopt": "^8.0.0", - "npm-install-checks": "^7.1.0", - "npm-package-arg": "^13.0.0", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "pacote": "^21.0.2", - "parse-conflict-json": "^4.0.0", - "proc-log": "^5.0.0", - "proggy": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "semver": "^7.3.7", - "ssri": "^12.0.0", - "treeverse": "^3.0.0", - "walk-up-path": "^4.0.0" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@npmcli/arborist/node_modules/brace-expansion": { - "version": "5.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@npmcli/arborist/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/arborist/node_modules/npm-bundled": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^5.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/pacote": { - "version": "21.5.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@npmcli/git": "^7.0.0", - "@npmcli/installed-package-contents": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "@npmcli/run-script": "^10.0.0", - "cacache": "^20.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^13.0.0", - "npm-packlist": "^10.0.1", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "proc-log": "^6.0.0", - "sigstore": "^4.0.0", - "ssri": "^13.0.0", - "tar": "^7.4.3" - }, - "bin": { - "pacote": "bin/index.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/@npmcli/installed-package-contents": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^5.0.0", - "npm-normalize-package-bin": "^5.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/pacote/node_modules/ssri": { - "version": "13.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/fs": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/git": { - "version": "7.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "ini": "^6.0.0", - "lru-cache": "^11.2.1", - "npm-pick-manifest": "^11.0.1", - "proc-log": "^6.0.0", - "semver": "^7.3.5", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/ini": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "4.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/map-workspaces": { - "version": "5.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "glob": "^13.0.0", - "minimatch": "^10.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/@npmcli/name-from-folder": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { - "version": "5.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "13.0.6", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "cacache": "^20.0.0", - "json-parse-even-better-errors": "^5.0.0", - "pacote": "^21.0.0", - "proc-log": "^6.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/name-from-folder": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "7.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^7.0.0", - "glob": "^11.0.3", - "hosted-git-info": "^9.0.0", - "json-parse-even-better-errors": "^5.0.0", - "proc-log": "^6.0.0", - "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "9.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "4.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/query": { - "version": "4.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/redact": { - "version": "3.2.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "10.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^5.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "node-gyp": "^12.1.0", - "proc-log": "^6.0.0", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "4.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/@npmcli/run-script/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "6.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@nx/devkit": { - "version": "22.7.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@zkochan/js-yaml": "0.0.7", - "ejs": "5.0.1", - "enquirer": "~2.3.6", - "minimatch": "10.2.5", - "semver": "^7.6.3", - "tslib": "^2.3.0", - "yargs-parser": "21.1.1" - }, - "peerDependencies": { - "nx": ">= 21 <= 23 || ^22.0.0-0" - } - }, - "node_modules/@nx/devkit/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@nx/devkit/node_modules/brace-expansion": { - "version": "5.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@nx/devkit/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-22.7.5.tgz", - "integrity": "sha512-eoPtwx0qZqvRUD+VVOHm150AlSYwYoPxkDHBBGqKCn5nzPspb0lLWw8q83crM/L1M928YgK0WmGf3C++7eqsTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@nx/nx-darwin-x64": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-22.7.5.tgz", - "integrity": "sha512-VLOn/ZoEn3HfjSj+yIHLCM56/el79r+9I28CkZNHaSXJQWZ3edSkcgcfYjVxCurpN2VEwDQHLBeFCH8M+lQ7wQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-22.7.5.tgz", - "integrity": "sha512-LEVer/E2xfGvK9Go+imMQoEninOoq/38Z2bhV1SD3AThXrp1xaLFVkW5jQ6juebeVkAeztEoMLFlr576egS0vw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-22.7.5.tgz", - "integrity": "sha512-NP27EFGpmFJM6RL1Ey/AFJ7gA2xuqtIHaw6jjSNGvfrnZRUNaway30GrVaGGeODf0DsvAty/unqoBMPy6kDHbw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-22.7.5.tgz", - "integrity": "sha512-QLnkJl3HkHsPfpLiNiAiMfpfAeFpic0U1diAxF8RqChOkCpQ7ulvyBVgE1UrQxvhd+gFQ3ed5RNDxtCRw8nTiw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-22.7.5.tgz", - "integrity": "sha512-cEP6KmwBgnb38+jTTaibWCjwXcHmigqhTfy0tN1be7WZr6bHxbqNLsXqKRN70PSNA3HouZcxw1cdRL8tqbPBBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-22.7.5.tgz", - "integrity": "sha512-tbaX1tZCSpGifDNBfDdEZAMxVF3Yg4bhFP/bm1needc0diqb+Zflc0u5tM5/6BWDMITQDwenJVsNiQ8ZdtJURA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-22.7.5.tgz", - "integrity": "sha512-H0M7csOZIgPT822LqjxSXzf4MXRND15vIkAQe3F3Jlr3Si8LC3tzbL52aVcRfgb8MF/xOB5U47mSwxWt1M2bPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-22.7.5.tgz", - "integrity": "sha512-JTcZch9YAnDL1gbhqePz3DZ4x7iYemLn1yJzrjbbXAmXju2eiiJiZvJJHbV06+SP9HKXDT8RjTKuAWTdVxnHug==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-22.7.5.tgz", - "integrity": "sha512-ngcMyHdBJ9FSz2nHdbZ7gtJlFq0O2b05sPAsVMkZ18CKzdaA1qrBDJfsMO49hPCny505eiT766+CkKdaCDl5kA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.4.1", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/endpoint": { - "version": "9.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/graphql": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^8.4.1", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "24.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.4.4-cjs.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.7.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.3.2-cjs.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.8.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "^5" - } - }, - "node_modules/@octokit/request": { - "version": "8.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^9.0.6", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/rest": { - "version": "20.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/core": "^5.0.2", - "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", - "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/types": { - "version": "13.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^24.2.0" - } - }, - "node_modules/@sigstore/bundle": { - "version": "4.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/core": { - "version": "3.2.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.5.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@sigstore/sign": { - "version": "4.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@gar/promise-retry": "^1.0.2", - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.2.0", - "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.4", - "proc-log": "^6.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/sign/node_modules/@npmcli/redact": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { - "version": "15.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@npmcli/agent": "^4.0.0", - "@npmcli/redact": "^4.0.0", - "cacache": "^20.0.1", - "http-cache-semantics": "^4.1.1", - "minipass": "^7.0.2", - "minipass-fetch": "^5.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^6.0.0", - "ssri": "^13.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/sign/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/sign/node_modules/ssri": { - "version": "13.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/tuf": { - "version": "4.0.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0", - "tuf-js": "^4.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/verify": { - "version": "3.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.2.1", - "@sigstore/protobuf-specs": "^0.5.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "dev": true, - "license": "MIT" - }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^10.1.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@tufjs/models/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "5.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/glob": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.2.tgz", - "integrity": "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "16.0.11", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.1.tgz", - "integrity": "sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.60.1", - "@typescript-eslint/type-utils": "8.60.1", - "@typescript-eslint/utils": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.60.1", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.1.tgz", - "integrity": "sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.60.1", - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.1.tgz", - "integrity": "sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.60.1", - "@typescript-eslint/types": "^8.60.1", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.1.tgz", - "integrity": "sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.1.tgz", - "integrity": "sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.1.tgz", - "integrity": "sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1", - "@typescript-eslint/utils": "8.60.1", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.1.tgz", - "integrity": "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.1.tgz", - "integrity": "sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.60.1", - "@typescript-eslint/tsconfig-utils": "8.60.1", - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/visitor-keys": "8.60.1", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.1.tgz", - "integrity": "sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.60.1", - "@typescript-eslint/types": "8.60.1", - "@typescript-eslint/typescript-estree": "8.60.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.1.tgz", - "integrity": "sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.60.1", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/abbrev": { - "version": "3.0.1", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/add-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "7.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-ify": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/arrify": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", - "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/axios/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/axios/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bin-links": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^7.0.0", - "npm-normalize-package-bin": "^4.0.0", - "proc-log": "^5.0.0", - "read-cmd-shim": "^5.0.0", - "write-file-atomic": "^6.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/bin-links/node_modules/cmd-shim": { - "version": "7.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/bin-links/node_modules/read-cmd-shim": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/byte-size": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/cacache": { - "version": "20.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^5.0.0", - "fs-minipass": "^3.0.0", - "glob": "^13.0.0", - "lru-cache": "^11.1.0", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^13.0.0", - "unique-filename": "^5.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/cacache/node_modules/@npmcli/fs": { - "version": "5.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/cacache/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "13.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/p-map": { - "version": "7.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacache/node_modules/ssri": { - "version": "13.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/cacache/node_modules/unique-filename": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/cacache/node_modules/unique-slug": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/chownr": { - "version": "3.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/ci-info": { - "version": "4.3.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cmd-shim": { - "version": "6.0.3", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/compare-func": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-core": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^6.0.0", - "conventional-commits-parser": "^4.0.0", - "dateformat": "^3.0.3", - "get-pkg-repo": "^4.2.1", - "git-raw-commits": "^3.0.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^5.0.0", - "normalize-package-data": "^3.0.3", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-commits-filter": "^3.0.0", - "dateformat": "^3.0.3", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^8.1.2", - "semver": "^7.0.0", - "split": "^1.0.1" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-commits-filter": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-commits-parser": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.3.5", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-recommended-bump": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^3.0.0", - "conventional-commits-filter": "^3.0.0", - "conventional-commits-parser": "^4.0.0", - "git-raw-commits": "^3.0.0", - "git-semver-tags": "^5.0.0", - "meow": "^8.1.2" - }, - "bin": { - "conventional-recommended-bump": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cross-env": { - "version": "10.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dargs": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/deprecation": { - "version": "2.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand": { - "version": "12.0.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ejs": { - "version": "5.0.1", - "dev": true, - "license": "Apache-2.0", - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.12.18" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/encoding": { - "version": "0.1.13", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.13.0", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "10.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/execa": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/figures": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.16.0", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-pkg-repo/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-raw-commits": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "dargs": "^7.0.0", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/git-semver-tags": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "meow": "^8.1.2", - "semver": "^7.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/git-up": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" - } - }, - "node_modules/git-url-parse": { - "version": "14.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "git-up": "^7.0.0" - } - }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "dev": true, - "license": "BSD", - "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/glob": { - "version": "11.1.0", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/glob/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/glob/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/glob/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/glob/node_modules/jackspeak": { - "version": "4.1.1", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/glob/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "dev": true, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/hasown": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "9.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^11.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "8.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^10.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/ignore-walk/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "5.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "dev": true, - "license": "ISC" - }, - "node_modules/init-package-json": { - "version": "8.2.2", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/package-json": "^7.0.0", - "npm-package-arg": "^13.0.0", - "promzard": "^2.0.0", - "read": "^4.0.0", - "semver": "^7.7.2", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^6.0.2" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/init-package-json/node_modules/validate-npm-package-name": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/inquirer": { - "version": "12.9.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/prompts": "^7.8.6", - "@inquirer/type": "^3.0.8", - "mute-stream": "^2.0.0", - "run-async": "^4.0.5", - "rxjs": "^7.8.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-ci": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "3.9.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module/node_modules/hasown": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-ssh": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "protocols": "^2.0.1" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-diff": { - "version": "30.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.4.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-nice": { - "version": "1.1.4", - "dev": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "dev": true, - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/just-diff": { - "version": "6.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/just-diff-apply": { - "version": "5.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/keyv": { - "version": "4.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lerna": { - "version": "9.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@npmcli/arborist": "9.1.6", - "@npmcli/package-json": "7.0.2", - "@npmcli/run-script": "10.0.3", - "@nx/devkit": ">=21.5.2 < 23.0.0", - "@octokit/plugin-enterprise-rest": "6.0.1", - "@octokit/rest": "20.1.2", - "aproba": "2.0.0", - "byte-size": "8.1.1", - "chalk": "4.1.0", - "ci-info": "4.3.1", - "cmd-shim": "6.0.3", - "color-support": "1.1.3", - "columnify": "1.6.0", - "console-control-strings": "^1.1.0", - "conventional-changelog-angular": "7.0.0", - "conventional-changelog-core": "5.0.1", - "conventional-recommended-bump": "7.0.1", - "cosmiconfig": "9.0.0", - "dedent": "1.5.3", - "envinfo": "7.13.0", - "execa": "5.0.0", - "fs-extra": "^11.2.0", - "get-stream": "6.0.0", - "git-url-parse": "14.0.0", - "glob-parent": "6.0.2", - "has-unicode": "2.0.1", - "import-local": "3.1.0", - "ini": "^1.3.8", - "init-package-json": "8.2.2", - "inquirer": "12.9.6", - "is-ci": "3.0.1", - "jest-diff": ">=30.0.0 < 31", - "js-yaml": "4.1.1", - "libnpmaccess": "10.0.3", - "libnpmpublish": "11.1.2", - "load-json-file": "6.2.0", - "make-fetch-happen": "15.0.2", - "minimatch": "3.1.4", - "npm-package-arg": "13.0.1", - "npm-packlist": "10.0.3", - "npm-registry-fetch": "19.1.0", - "nx": ">=21.5.3 < 23.0.0", - "p-map": "4.0.0", - "p-map-series": "2.1.0", - "p-pipe": "3.1.0", - "p-queue": "6.6.2", - "p-reduce": "2.1.0", - "p-waterfall": "2.1.1", - "pacote": "21.0.1", - "read-cmd-shim": "4.0.0", - "semver": "7.7.2", - "signal-exit": "3.0.7", - "slash": "3.0.0", - "ssri": "12.0.0", - "string-width": "^4.2.3", - "tar": "7.5.11", - "through": "2.3.8", - "tinyglobby": "0.2.12", - "typescript": ">=3 < 6", - "upath": "2.0.1", - "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "6.0.2", - "wide-align": "1.1.5", - "write-file-atomic": "5.0.1", - "yargs": "17.7.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "lerna": "dist/cli.js" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/lerna/node_modules/brace-expansion": { - "version": "1.1.15", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/lerna/node_modules/chalk": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lerna/node_modules/minimatch": { - "version": "3.1.4", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/lerna/node_modules/semver": { - "version": "7.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lerna/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/lerna/node_modules/validate-npm-package-name": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/lerna/node_modules/yargs": { - "version": "17.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libnpmaccess": { - "version": "10.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^13.0.0", - "npm-registry-fetch": "^19.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/libnpmpublish": { - "version": "11.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/package-json": "^7.0.0", - "ci-info": "^4.0.0", - "npm-package-arg": "^13.0.0", - "npm-registry-fetch": "^19.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.7", - "sigstore": "^4.0.0", - "ssri": "^12.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/lines-and-columns": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/load-json-file": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^5.0.0", - "strip-bom": "^4.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "11.5.1", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/make-fetch-happen": { - "version": "15.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^4.0.0", - "cacache": "^20.0.1", - "http-cache-semantics": "^4.1.1", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "ssri": "^12.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass-fetch": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-fetch": { - "version": "5.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^2.0.0", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - }, - "optionalDependencies": { - "iconv-lite": "^0.7.2" - } - }, - "node_modules/minipass-fetch/node_modules/minipass-sized": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/modify-values": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/node-gyp": { - "version": "12.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "graceful-fs": "^4.2.6", - "nopt": "^9.0.0", - "proc-log": "^6.0.0", - "semver": "^7.3.5", - "tar": "^7.5.4", - "tinyglobby": "^0.2.12", - "undici": "^6.25.0", - "which": "^6.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/node-gyp/node_modules/abbrev": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/node-gyp/node_modules/isexe": { - "version": "4.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "9.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^4.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/node-gyp/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/node-gyp/node_modules/which": { - "version": "6.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/nopt": { - "version": "8.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^3.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-bundled": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-check-updates": { - "version": "19.6.3", - "dev": true, - "license": "Apache-2.0", - "bin": { - "ncu": "build/cli.js", - "npm-check-updates": "build/cli.js" - }, - "engines": { - "node": ">=20.0.0", - "npm": ">=8.12.1" - } - }, - "node_modules/npm-install-checks": { - "version": "7.1.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-package-arg": { - "version": "13.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^9.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/npm-packlist": { - "version": "10.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^8.0.0", - "proc-log": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-packlist/node_modules/proc-log": { - "version": "6.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-pick-manifest": { - "version": "11.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^8.0.0", - "npm-normalize-package-bin": "^5.0.0", - "npm-package-arg": "^13.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-pick-manifest/node_modules/npm-install-checks": { - "version": "8.0.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-registry-fetch": { - "version": "19.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/redact": "^3.0.0", - "jsonparse": "^1.3.1", - "make-fetch-happen": "^15.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minizlib": "^3.0.1", - "npm-package-arg": "^13.0.0", - "proc-log": "^5.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nx": { - "version": "22.7.5", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@emnapi/core": "1.4.5", - "@emnapi/runtime": "1.4.5", - "@emnapi/wasi-threads": "1.0.4", - "@jest/diff-sequences": "30.0.1", - "@napi-rs/wasm-runtime": "0.2.4", - "@tybys/wasm-util": "0.9.0", - "@yarnpkg/lockfile": "1.1.0", - "@zkochan/js-yaml": "0.0.7", - "ansi-colors": "4.1.3", - "ansi-regex": "5.0.1", - "ansi-styles": "4.3.0", - "argparse": "2.0.1", - "asynckit": "0.4.0", - "axios": "1.16.0", - "balanced-match": "4.0.3", - "base64-js": "1.5.1", - "bl": "4.1.0", - "brace-expansion": "5.0.6", - "buffer": "5.7.1", - "call-bind-apply-helpers": "1.0.2", - "chalk": "4.1.2", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "8.0.1", - "clone": "1.0.4", - "color-convert": "2.0.1", - "color-name": "1.1.4", - "combined-stream": "1.0.8", - "defaults": "1.0.4", - "define-lazy-prop": "2.0.0", - "delayed-stream": "1.0.0", - "dotenv": "16.4.7", - "dotenv-expand": "12.0.3", - "dunder-proto": "1.0.1", - "ejs": "5.0.1", - "emoji-regex": "8.0.0", - "end-of-stream": "1.4.5", - "enquirer": "2.3.6", - "es-define-property": "1.0.1", - "es-errors": "1.3.0", - "es-object-atoms": "1.1.1", - "es-set-tostringtag": "2.1.0", - "escalade": "3.2.0", - "escape-string-regexp": "1.0.5", - "figures": "3.2.0", - "flat": "5.0.2", - "follow-redirects": "1.16.0", - "form-data": "4.0.5", - "fs-constants": "1.0.0", - "function-bind": "1.1.2", - "get-caller-file": "2.0.5", - "get-intrinsic": "1.3.0", - "get-proto": "1.0.1", - "gopd": "1.2.0", - "has-flag": "4.0.0", - "has-symbols": "1.1.0", - "has-tostringtag": "1.0.2", - "hasown": "2.0.2", - "ieee754": "1.2.1", - "ignore": "7.0.5", - "inherits": "2.0.4", - "is-docker": "2.2.1", - "is-fullwidth-code-point": "3.0.0", - "is-interactive": "1.0.0", - "is-unicode-supported": "0.1.0", - "is-wsl": "2.2.0", - "json5": "2.2.3", - "jsonc-parser": "3.2.0", - "lines-and-columns": "2.0.3", - "log-symbols": "4.1.0", - "math-intrinsics": "1.1.0", - "mime-db": "1.52.0", - "mime-types": "2.1.35", - "mimic-fn": "2.1.0", - "minimatch": "10.2.5", - "minimist": "1.2.8", - "npm-run-path": "4.0.1", - "once": "1.4.0", - "onetime": "5.1.2", - "open": "8.4.2", - "ora": "5.3.0", - "path-key": "3.1.1", - "picocolors": "1.1.1", - "proxy-from-env": "2.1.0", - "readable-stream": "3.6.2", - "require-directory": "2.1.1", - "resolve.exports": "2.0.3", - "restore-cursor": "3.1.0", - "safe-buffer": "5.2.1", - "semver": "7.7.4", - "signal-exit": "3.0.7", - "smol-toml": "1.6.1", - "string_decoder": "1.3.0", - "string-width": "4.2.3", - "strip-ansi": "6.0.1", - "strip-bom": "3.0.0", - "supports-color": "7.2.0", - "tar-stream": "2.2.0", - "tmp": "0.2.6", - "tree-kill": "1.2.2", - "tsconfig-paths": "4.2.0", - "tslib": "2.8.1", - "util-deprecate": "1.0.2", - "wcwidth": "1.0.1", - "wrap-ansi": "7.0.0", - "wrappy": "1.0.2", - "y18n": "5.0.8", - "yaml": "2.9.0", - "yargs": "17.7.2", - "yargs-parser": "21.1.1" - }, - "bin": { - "nx": "dist/bin/nx.js", - "nx-cloud": "dist/bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "22.7.5", - "@nx/nx-darwin-x64": "22.7.5", - "@nx/nx-freebsd-x64": "22.7.5", - "@nx/nx-linux-arm-gnueabihf": "22.7.5", - "@nx/nx-linux-arm64-gnu": "22.7.5", - "@nx/nx-linux-arm64-musl": "22.7.5", - "@nx/nx-linux-x64-gnu": "22.7.5", - "@nx/nx-linux-x64-musl": "22.7.5", - "@nx/nx-win32-arm64-msvc": "22.7.5", - "@nx/nx-win32-x64-msvc": "22.7.5" - }, - "peerDependencies": { - "@swc-node/register": "^1.11.1", - "@swc/core": "^1.15.8" - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/nx/node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/nx/node_modules/axios": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", - "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/nx/node_modules/balanced-match": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/nx/node_modules/brace-expansion": { - "version": "5.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/nx/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/nx/node_modules/ignore": { - "version": "7.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/nx/node_modules/jsonc-parser": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/nx/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nx/node_modules/ora": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nx/node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/nx/node_modules/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/nx/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/nx/node_modules/yargs": { - "version": "17.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map-series": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-pipe": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-reduce": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-waterfall": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "p-reduce": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/pacote": { - "version": "21.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^6.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "@npmcli/run-script": "^10.0.0", - "cacache": "^20.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^13.0.0", - "npm-packlist": "^10.0.1", - "npm-pick-manifest": "^10.0.0", - "npm-registry-fetch": "^19.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^4.0.0", - "ssri": "^12.0.0", - "tar": "^7.4.3" - }, - "bin": { - "pacote": "bin/index.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/git": { - "version": "6.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^8.0.0", - "ini": "^5.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^10.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/@npmcli/promise-spawn": { - "version": "8.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "which": "^5.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/hosted-git-info": { - "version": "8.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/ini": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/isexe": { - "version": "3.1.5", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/pacote/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "license": "ISC" - }, - "node_modules/pacote/node_modules/npm-pick-manifest": { - "version": "10.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^7.1.0", - "npm-normalize-package-bin": "^4.0.0", - "npm-package-arg": "^12.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/npm-pick-manifest/node_modules/npm-package-arg": { - "version": "12.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^8.0.0", - "proc-log": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^6.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/validate-npm-package-name": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/pacote/node_modules/which": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-conflict-json": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^4.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-json/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-json/node_modules/lines-and-columns": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-path": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "protocols": "^2.0.0" - } - }, - "node_modules/parse-url": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-path": "^7.0.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/postcss-selector-parser": { - "version": "7.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "30.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.4.1", - "ansi-styles": "^5.2.0", - "react-is-18": "npm:react-is@^18.3.1", - "react-is-19": "npm:react-is@^19.2.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/proc-log": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/proggy": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/promise-all-reject-late": { - "version": "1.0.1", - "dev": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/promise-call-limit": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/promzard": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "read": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/protocols": { - "version": "2.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-is-18": { - "name": "react-is", - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/react-is-19": { - "name": "react-is", - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", - "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", - "dev": true, - "license": "MIT" - }, - "node_modules/read": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "mute-stream": "^2.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/read-cmd-shim": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/read-pkg/node_modules/load-json-file": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-async": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.4", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/sigstore": { - "version": "4.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.2.1", - "@sigstore/protobuf-specs": "^0.5.0", - "@sigstore/sign": "^4.1.1", - "@sigstore/tuf": "^4.0.2", - "@sigstore/verify": "^3.1.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/smol-toml": { - "version": "1.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, - "node_modules/socks": { - "version": "2.8.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/split": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "dev": true, - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/ssri": { - "version": "12.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/syncpack": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-15.3.1.tgz", - "integrity": "sha512-0Z+/rwbskj+m5qW8caVbd59OwwXBcxRiDFk82Cb4tKGLPXmZn7Vjo7BnfxHwZqS51Ff+5TFgH5/iyXd24+G6YA==", - "dev": true, - "license": "MIT", - "bin": { - "syncpack": "index.cjs" - }, - "engines": { - "node": ">=14.17.0" - }, - "funding": { - "url": "https://github.com/sponsors/JamieMason" - }, - "optionalDependencies": { - "syncpack-darwin-arm64": "15.3.1", - "syncpack-darwin-x64": "15.3.1", - "syncpack-linux-arm64": "15.3.1", - "syncpack-linux-arm64-musl": "15.3.1", - "syncpack-linux-x64": "15.3.1", - "syncpack-linux-x64-musl": "15.3.1", - "syncpack-windows-arm64": "15.3.1", - "syncpack-windows-x64": "15.3.1" - } - }, - "node_modules/syncpack-darwin-arm64": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-darwin-arm64/-/syncpack-darwin-arm64-15.3.1.tgz", - "integrity": "sha512-XvbaowC/fw+B7diOtoYjEtSWJVMEbJ7ZH72/TZIe73NwYwY7KFRMVefwxcJE29G+my4vaPmttf2Lbnri8pD6Jw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-darwin-x64": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-darwin-x64/-/syncpack-darwin-x64-15.3.1.tgz", - "integrity": "sha512-KX5+fcHzaGugppyPV3se8iKoFYE5Jde3ZxN80dJKNejluP29rGmOQ1JNaVjy40nZInPNLKQ8LS0TMRtxIgh8ew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-linux-arm64": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-linux-arm64/-/syncpack-linux-arm64-15.3.1.tgz", - "integrity": "sha512-5saJ4LnizTppqVLt49MKagTixDpuR+5MFweGCkoEAm4SikLqNfzkiEnHqVsjY3+BkCVtXf6DcR1OX6hwswNJ0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-linux-arm64-musl": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-linux-arm64-musl/-/syncpack-linux-arm64-musl-15.3.1.tgz", - "integrity": "sha512-YslfJ1UndTwL000p0JTP/r8uwXJ4LfYeFBqAfRhLuWoJz8CO+yWyUl4VNdFNitSR1OOB/J7gc4q3jOsxh7kTOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-linux-x64": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-linux-x64/-/syncpack-linux-x64-15.3.1.tgz", - "integrity": "sha512-bk8keNTteQxXpKDc+Y3r3fE7IZn4cU61gq7ka4gPcBNvvMHOk8Pg71/qQEwN3zBtzAj6yF1Fyzb0NYK9Wo6EPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-linux-x64-musl": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-linux-x64-musl/-/syncpack-linux-x64-musl-15.3.1.tgz", - "integrity": "sha512-/mnWa3FmzJRsDLuqx6rzQIawV5ly1MFyUPxcZlaLX3FbxBryrVXJZZXGd0yJ9UTEKgE5UfRRQlS+ayeXvJbNew==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-windows-arm64": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-windows-arm64/-/syncpack-windows-arm64-15.3.1.tgz", - "integrity": "sha512-GIKQtpNl1Ox2gwBDlEXgL1rneMwUMG0E3eB+EjDKdh4kOJtO0DYduTgg10dmFk/i1ynKGvFtgvhN3VZAr75jgA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/syncpack-windows-x64": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/syncpack-windows-x64/-/syncpack-windows-x64-15.3.1.tgz", - "integrity": "sha512-4Kl7gCFzaEF7IoHa3vcEHRPx1um8pnzEqidRyQProIJBROG4srgkyQkmwJUXbWzWJhAq2Ic0vtDUvzIXF2U/Dg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "funding": { - "url": "https://github.com/sponsors/JamieMason" - } - }, - "node_modules/tar": { - "version": "7.5.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", - "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/through": { - "version": "2.3.8", - "dev": true, - "license": "MIT" - }, - "node_modules/through2": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.8", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.12", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.3", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tmp": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", - "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/treeverse": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-api-utils": { - "version": "2.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/tuf-js": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "4.1.0", - "debug": "^4.4.3", - "make-fetch-happen": "^15.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.6.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undici": { - "version": "6.26.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/undici-types": { - "version": "7.24.6", - "dev": true, - "license": "MIT" - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/universalify": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/upath": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/walk-up-path": { - "version": "4.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.9.0", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/yargs/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 7d385fb9e3ed..2ed1f8f1ff31 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,24 @@ { "name": "pyright-root", "private": true, + "packageManager": "pnpm@10.12.2", "scripts": { - "postinstall": "node ./build/skipBootstrap.js || npm run install:others", "clean": "lerna run --no-bail --stream clean", - "install:all": "npm install", - "install:others": "cross-env SKIP_LERNA_BOOTSTRAP=yes lerna exec --no-bail npm install", + "install:all": "pnpm install", + "test": "pnpm --dir packages/pyright-internal test", "update:all": "node ./build/updateDeps.js", - "build:extension:dev": "cd packages/vscode-pyright && npm run webpack", - "build:cli:dev": "cd packages/pyright && npm run webpack", - "watch:extension": "cd packages/vscode-pyright && npm run webpack-dev", - "watch:testserver": "cd packages/pyright-internal && npm run webpack:testserver:watch", - "check": "npm run check:syncpack && npm run check:eslint && npm run check:prettier", + "build:extension:dev": "pnpm --dir packages/vscode-pyright run webpack", + "build:cli:dev": "pnpm --dir packages/pyright run webpack", + "watch:extension": "pnpm --dir packages/vscode-pyright run webpack-dev", + "watch:testserver": "pnpm --dir packages/pyright-internal run webpack:testserver:watch", + "check": "pnpm run check:syncpack && pnpm run check:eslint && pnpm run check:prettier", "check:syncpack": "syncpack lint", - "fix:syncpack": "syncpack fix && npm run install:all", + "fix:syncpack": "syncpack fix && pnpm run install:all", "check:eslint": "cross-env ESLINT_USE_FLAT_CONFIG=false eslint .", "fix:eslint": "cross-env ESLINT_USE_FLAT_CONFIG=false eslint --fix .", "check:prettier": "prettier -c .", "fix:prettier": "prettier --write .", - "typecheck": "npx lerna exec --stream --no-bail --ignore=pyright -- \"tsc --noEmit\"" + "typecheck": "pnpm exec lerna exec --stream --no-bail --ignore=pyright -- \"tsc --noEmit\"" }, "devDependencies": { "@types/glob": "^8.1.0", @@ -42,8 +42,5 @@ "typescript": "~6.0.3", "word-wrap": "1.2.5", "yargs": "^16.2.0" - }, - "overrides": { - "tar": "7.5.11" } } diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json deleted file mode 100644 index ecbc1efd8d84..000000000000 --- a/packages/pyright-internal/package-lock.json +++ /dev/null @@ -1,7058 +0,0 @@ -{ - "name": "pyright-internal", - "version": "1.1.411", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pyright-internal", - "version": "1.1.411", - "license": "MIT", - "dependencies": { - "@yarnpkg/fslib": "2.10.4", - "@yarnpkg/libzip": "2.3.0", - "chalk": "^4.1.2", - "chokidar": "^3.6.0", - "command-line-args": "^5.2.1", - "jsonc-parser": "^3.3.1", - "smol-toml": "^1.6.1", - "source-map-support": "^0.5.21", - "tmp": "^0.2.7", - "vscode-jsonrpc": "^9.0.0-next.8", - "vscode-languageserver": "^10.0.0-next.13", - "vscode-languageserver-protocol": "^3.17.6-next.13", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-languageserver-types": "^3.17.6-next.6", - "vscode-uri": "^3.1.0" - }, - "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", - "@types/command-line-args": "^5.2.3", - "@types/fs-extra": "^11.0.4", - "@types/jest": "^30.0.0", - "@types/lodash": "^4.17.24", - "@types/node": "^25.9.2", - "@types/tmp": "^0.2.6", - "esbuild-loader": "^4.5.0", - "jest": "^30.2.0", - "jest-junit": "^17.0.0", - "shx": "^0.4.0", - "ts-jest": "^29.4.7", - "ts-loader": "^9.5.4", - "typescript": "~6.0.3", - "webpack": "^5.104.1", - "word-wrap": "1.2.5" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", - "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", - "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@emnapi/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", - "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.4.1.tgz", - "integrity": "sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.4.1", - "jest-util": "30.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.4.2.tgz", - "integrity": "sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.4.1", - "@jest/pattern": "30.4.0", - "@jest/reporters": "30.4.1", - "@jest/test-result": "30.4.1", - "@jest/transform": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.4.1", - "jest-config": "30.4.2", - "jest-haste-map": "30.4.1", - "jest-message-util": "30.4.1", - "jest-regex-util": "30.4.0", - "jest-resolve": "30.4.1", - "jest-resolve-dependencies": "30.4.2", - "jest-runner": "30.4.2", - "jest-runtime": "30.4.2", - "jest-snapshot": "30.4.1", - "jest-util": "30.4.1", - "jest-validate": "30.4.1", - "jest-watcher": "30.4.1", - "pretty-format": "30.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", - "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.4.1.tgz", - "integrity": "sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "jest-mock": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.4.1.tgz", - "integrity": "sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.4.1", - "jest-snapshot": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", - "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.4.1.tgz", - "integrity": "sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@sinonjs/fake-timers": "^15.4.0", - "@types/node": "*", - "jest-message-util": "30.4.1", - "jest-mock": "30.4.1", - "jest-util": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.4.1.tgz", - "integrity": "sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.4.1", - "@jest/expect": "30.4.1", - "@jest/types": "30.4.1", - "jest-mock": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", - "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.4.1.tgz", - "integrity": "sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.4.1", - "@jest/test-result": "30.4.1", - "@jest/transform": "30.4.1", - "@jest/types": "30.4.1", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.4.1", - "jest-util": "30.4.1", - "jest-worker": "30.4.1", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", - "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.4.1.tgz", - "integrity": "sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.4.1.tgz", - "integrity": "sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.4.1", - "@jest/types": "30.4.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.4.1.tgz", - "integrity": "sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.4.1", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.4.1.tgz", - "integrity": "sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.4.1", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.4.1", - "jest-regex-util": "30.4.0", - "jest-util": "30.4.1", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", - "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.4.0", - "@jest/schemas": "30.4.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@rspack/binding": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.0.5.tgz", - "integrity": "sha512-Ta1y4WXJA87wM1OstqaMddoPsBGv7Cu779bYToKxEAqR/Yy9DxLkp7bdgBaAx2JH++BwVjV+toWts2V9AaiTFQ==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "2.0.5", - "@rspack/binding-darwin-x64": "2.0.5", - "@rspack/binding-linux-arm64-gnu": "2.0.5", - "@rspack/binding-linux-arm64-musl": "2.0.5", - "@rspack/binding-linux-x64-gnu": "2.0.5", - "@rspack/binding-linux-x64-musl": "2.0.5", - "@rspack/binding-wasm32-wasi": "2.0.5", - "@rspack/binding-win32-arm64-msvc": "2.0.5", - "@rspack/binding-win32-ia32-msvc": "2.0.5", - "@rspack/binding-win32-x64-msvc": "2.0.5" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.0.5.tgz", - "integrity": "sha512-++wjLQjQ20GcR0DwbzQmVXg9qy4XCX5NlfSzkzj2icHoDxr3KkrXhyVrQkdWuNG6l/bQrGLPnvLEAqkroC2Y7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.0.5.tgz", - "integrity": "sha512-JBD5mCN3JKjV64Mh9nDYx8lLUrWDfEl5tLBuMkREUnqEKbo+z4nfwotyqHHM8/XgZwL+Gr7ps4GLWuQQrZB8+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.0.5.tgz", - "integrity": "sha512-JI8+//woanJPNsfL7iGjX39zyiWumnrKHznWQM/7lEtE5nPmk+j+X7TYXxczSWC9zfZegiqI74D3L5JPDC84Fw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.0.5.tgz", - "integrity": "sha512-5LujilxLtJFRiiPz5i5iWcWJriK9oy4gN7gZtTo8YRB7wwmwA8LMypTjjO0GLbkPS4/KeCfY4fDfTC29KmK+tA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.0.5.tgz", - "integrity": "sha512-241wqE132jh+/U/pn97qUPV4KpIy4bSrTH0tqfzQCocgw+8hrUj02GqNG+3MXVC3qtwaQeJFYgEBy3TqFKsrIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.0.5.tgz", - "integrity": "sha512-BhaXZD064Lci3Kia0kLDAb4TyxO2C+0UidMlj44e8+ctasxIfFZgnrhCJrhTFHAtOiAwqhU3FHun2UuxPqX0Eg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-wasm32-wasi": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.0.5.tgz", - "integrity": "sha512-duEkRoXrl9SW8uGHv7JURJ5lgKu87qFDQ4Exy6UQPvsUJVXhtRXTfvMHCb/CejVJuW2Bw2D632/axZq3qRSuBQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "1.1.4" - } - }, - "node_modules/@rspack/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.0.5.tgz", - "integrity": "sha512-q2WT3HFoWL+2g84l3s2kY7CiE1gEZ1bwB3txx3eZzQQ6YKP7bE82z6sl6S/pTOHGjHdAO4snQXpSaHwUt3LX5g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.0.5.tgz", - "integrity": "sha512-nMJGIY7kvgbyMolEE7tXDe+Z9jSItDshTIqMQQkkD3WTHdjlBQozHxk4kBtKLsunO+3NkCLe5Oa3hXg1yyStIg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.0.5.tgz", - "integrity": "sha512-vP0BR6fxdPL9cb02HAuZATg/CjR07aecWel3s1vqRwW1aDffgXh9PVmqEKIHTgyaNsNR55kSKNJsB9AcQ8/QrA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/cli": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-2.0.5.tgz", - "integrity": "sha512-AAyuY/8sfegb0IcsFEhn5gLOTxy1uDmwjP49RY81PENz2pCk/7NU0zDdt0ke5wmpOH5s6IxS+Kw4aWdvl8FGpQ==", - "dev": true, - "license": "MIT", - "bin": { - "rspack": "bin/rspack.js" - }, - "peerDependencies": { - "@rspack/core": "^2.0.0-0", - "@rspack/dev-server": "^2.0.0-0" - }, - "peerDependenciesMeta": { - "@rspack/dev-server": { - "optional": true - } - } - }, - "node_modules/@rspack/core": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.0.5.tgz", - "integrity": "sha512-9tv2HAnSiTote5WPH2tmz1hLZ1zKbzkiZc1eYp7LP/8jcsiJBuf40ihiWidAgbbuYtJo3kWET6q+qOm5UhNiGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rspack/binding": "2.0.5" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", - "@swc/helpers": "^0.5.23" - }, - "peerDependenciesMeta": { - "@module-federation/runtime-tools": { - "optional": true - }, - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", - "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/command-line-args": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", - "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/emscripten": { - "version": "1.41.5", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.41.5.tgz", - "integrity": "sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==", - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", - "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.2.tgz", - "integrity": "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", - "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz", - "integrity": "sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz", - "integrity": "sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz", - "integrity": "sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz", - "integrity": "sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz", - "integrity": "sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz", - "integrity": "sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz", - "integrity": "sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz", - "integrity": "sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz", - "integrity": "sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-loong64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz", - "integrity": "sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-loong64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz", - "integrity": "sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz", - "integrity": "sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz", - "integrity": "sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz", - "integrity": "sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz", - "integrity": "sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz", - "integrity": "sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz", - "integrity": "sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-openharmony-arm64": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz", - "integrity": "sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz", - "integrity": "sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "^1.1.4" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz", - "integrity": "sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz", - "integrity": "sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz", - "integrity": "sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/fslib": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.4.tgz", - "integrity": "sha512-WhaLwvXEMjCjGxOraQx+Qtmst13iAPOlSElSZfQFdLohva5owlqACRapJ78zZFEW6M9ArqdQlZaHKVN5/mM+SA==", - "license": "BSD-2-Clause", - "dependencies": { - "@yarnpkg/libzip": "^2.3.0", - "tslib": "^1.13.0" - }, - "engines": { - "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" - } - }, - "node_modules/@yarnpkg/fslib/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@yarnpkg/libzip": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", - "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", - "license": "BSD-2-Clause", - "dependencies": { - "@types/emscripten": "^1.39.6", - "tslib": "^1.13.0" - }, - "engines": { - "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" - } - }, - "node_modules/@yarnpkg/libzip/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/babel-jest": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.4.1.tgz", - "integrity": "sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.4.1", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.4.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.4.0.tgz", - "integrity": "sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.4.0.tgz", - "integrity": "sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.4.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", - "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "license": "MIT", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.360", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz", - "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.21.6", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz", - "integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/esbuild-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.5.0.tgz", - "integrity": "sha512-rVYe97IN1+VoealVHQ3STEPbfTm+vvPk7AZPrL53Pt6JUGBhHTnIqyaow7EveMFlmQ2A1bLp7q19sP4PppaCDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.28.1", - "get-tsconfig": "^4.10.1", - "loader-utils": "^2.0.4", - "webpack-sources": "^3.3.4" - }, - "funding": { - "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" - }, - "peerDependencies": { - "webpack": "^4.40.0 || ^5.0.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", - "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.4.1", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.4.1", - "jest-message-util": "30.4.1", - "jest-mock": "30.4.1", - "jest-util": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "license": "MIT", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.4.2.tgz", - "integrity": "sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.4.2", - "@jest/types": "30.4.1", - "import-local": "^3.2.0", - "jest-cli": "30.4.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.4.1.tgz", - "integrity": "sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.4.1", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.4.2.tgz", - "integrity": "sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.4.1", - "@jest/expect": "30.4.1", - "@jest/test-result": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.4.1", - "jest-matcher-utils": "30.4.1", - "jest-message-util": "30.4.1", - "jest-runtime": "30.4.2", - "jest-snapshot": "30.4.1", - "jest-util": "30.4.1", - "p-limit": "^3.1.0", - "pretty-format": "30.4.1", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.4.2.tgz", - "integrity": "sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.4.2", - "@jest/test-result": "30.4.1", - "@jest/types": "30.4.1", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.4.2", - "jest-util": "30.4.1", - "jest-validate": "30.4.1", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.4.2.tgz", - "integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.4.0", - "@jest/test-sequencer": "30.4.1", - "@jest/types": "30.4.1", - "babel-jest": "30.4.1", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-circus": "30.4.2", - "jest-docblock": "30.4.0", - "jest-environment-node": "30.4.1", - "jest-regex-util": "30.4.0", - "jest-resolve": "30.4.1", - "jest-runner": "30.4.2", - "jest-util": "30.4.1", - "jest-validate": "30.4.1", - "parse-json": "^5.2.0", - "pretty-format": "30.4.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", - "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.4.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.4.0.tgz", - "integrity": "sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.4.1.tgz", - "integrity": "sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.4.1", - "chalk": "^4.1.2", - "jest-util": "30.4.1", - "pretty-format": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.4.1.tgz", - "integrity": "sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.4.1", - "@jest/fake-timers": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "jest-mock": "30.4.1", - "jest-util": "30.4.1", - "jest-validate": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.4.1.tgz", - "integrity": "sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.4.0", - "jest-util": "30.4.1", - "jest-worker": "30.4.1", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-junit": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-17.0.0.tgz", - "integrity": "sha512-RYWCkq4j59gUXj5DsgbIE7xFBZzu1gtibPhyjSjMmGaOTLnqlXhg7x9zuGCwgbCuMAyoyvk0Mi8wSrRR5uOeLA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mkdirp": "^1.0.4", - "strip-ansi": "^6.0.1", - "uuid": "^14.0.0", - "xml": "^1.0.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/jest-junit/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-junit/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.4.1.tgz", - "integrity": "sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", - "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.4.1", - "pretty-format": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", - "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.4.1", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-util": "30.4.1", - "picomatch": "^4.0.3", - "pretty-format": "30.4.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-mock": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", - "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "jest-util": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", - "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.4.1.tgz", - "integrity": "sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.4.1", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.4.1", - "jest-validate": "30.4.1", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.4.2.tgz", - "integrity": "sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "30.4.0", - "jest-snapshot": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.4.2.tgz", - "integrity": "sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.4.1", - "@jest/environment": "30.4.1", - "@jest/test-result": "30.4.1", - "@jest/transform": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.4.0", - "jest-environment-node": "30.4.1", - "jest-haste-map": "30.4.1", - "jest-leak-detector": "30.4.1", - "jest-message-util": "30.4.1", - "jest-resolve": "30.4.1", - "jest-runtime": "30.4.2", - "jest-util": "30.4.1", - "jest-watcher": "30.4.1", - "jest-worker": "30.4.1", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.4.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.4.2.tgz", - "integrity": "sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.4.1", - "@jest/fake-timers": "30.4.1", - "@jest/globals": "30.4.1", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.4.1", - "@jest/transform": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.4.1", - "jest-message-util": "30.4.1", - "jest-mock": "30.4.1", - "jest-regex-util": "30.4.0", - "jest-resolve": "30.4.1", - "jest-snapshot": "30.4.1", - "jest-util": "30.4.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.4.1.tgz", - "integrity": "sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.4.1", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.4.1", - "@jest/transform": "30.4.1", - "@jest/types": "30.4.1", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.4.1", - "graceful-fs": "^4.2.11", - "jest-diff": "30.4.1", - "jest-matcher-utils": "30.4.1", - "jest-message-util": "30.4.1", - "jest-util": "30.4.1", - "pretty-format": "30.4.1", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", - "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.4.1.tgz", - "integrity": "sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.4.1", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.4.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.4.1.tgz", - "integrity": "sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.4.1", - "@jest/types": "30.4.1", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.4.1", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.4.1.tgz", - "integrity": "sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.4.1", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/loader-runner": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", - "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", - "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", - "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.4.1", - "ansi-styles": "^5.2.0", - "react-is-18": "npm:react-is@^18.3.1", - "react-is-19": "npm:react-is@^19.2.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/react-is-18": { - "name": "react-is", - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-is-19": { - "name": "react-is", - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", - "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", - "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "execa": "^1.0.0", - "fast-glob": "^3.3.2", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/shelljs/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/shelljs/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/shelljs/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/shelljs/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shelljs/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/shelljs/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shelljs/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shelljs/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/shelljs/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/shx": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", - "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.8", - "shelljs": "^0.9.2" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/smol-toml": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", - "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.47.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", - "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@minify-html/node": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "@swc/html": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "cssnano": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "html-minifier-terser": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "postcss": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tmp": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", - "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-jest": { - "version": "29.4.10", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.10.tgz", - "integrity": "sha512-vMTlTTtvz5aKZgzOoc7DQ5TzAL2fCzl8JnG1+ZpwjQa/g0xLlwE44yQ+1Cao9ZP1xVv9y5g34IFXEiqGOGFBUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.9", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.8.0", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <7" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-loader": { - "version": "9.5.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", - "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", - "dev": true, - "license": "MIT" - }, - "node_modules/unrs-resolver": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.12.2.tgz", - "integrity": "sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.4" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.12.2", - "@unrs/resolver-binding-android-arm64": "1.12.2", - "@unrs/resolver-binding-darwin-arm64": "1.12.2", - "@unrs/resolver-binding-darwin-x64": "1.12.2", - "@unrs/resolver-binding-freebsd-x64": "1.12.2", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.12.2", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.12.2", - "@unrs/resolver-binding-linux-arm64-gnu": "1.12.2", - "@unrs/resolver-binding-linux-arm64-musl": "1.12.2", - "@unrs/resolver-binding-linux-loong64-gnu": "1.12.2", - "@unrs/resolver-binding-linux-loong64-musl": "1.12.2", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.12.2", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.12.2", - "@unrs/resolver-binding-linux-riscv64-musl": "1.12.2", - "@unrs/resolver-binding-linux-s390x-gnu": "1.12.2", - "@unrs/resolver-binding-linux-x64-gnu": "1.12.2", - "@unrs/resolver-binding-linux-x64-musl": "1.12.2", - "@unrs/resolver-binding-openharmony-arm64": "1.12.2", - "@unrs/resolver-binding-wasm32-wasi": "1.12.2", - "@unrs/resolver-binding-win32-arm64-msvc": "1.12.2", - "@unrs/resolver-binding-win32-ia32-msvc": "1.12.2", - "@unrs/resolver-binding-win32-x64-msvc": "1.12.2" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uuid": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", - "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist-node/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/vscode-jsonrpc": { - "version": "9.0.0-next.11", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.11.tgz", - "integrity": "sha512-u6LElQNbSiE9OugEEmrUKwH6+8BpPz2S5MDHvQUqHL//I4Q8GPikKLOUf856UnbLkZdhxaPrExac1lA3XwpIPA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "10.0.0-next.17", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.17.tgz", - "integrity": "sha512-/bwO/E3RUzIkQ1BQ70gcLdZeM8xvK0JS7gMvtug7yiH0dzTjciqqQTUh3H9NEXsqYEjLzGwiXgRUkt6Z8fQV0Q==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.6-next.17" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.6-next.17", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.17.tgz", - "integrity": "sha512-HW72YcFsuckfK6oPVuysRXhKiIFJoUvXgspPHvCMWpwe2x9aq2oGZDUSvKx4m/qUGB27+iu8ijAxsFlljYl2IQ==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "9.0.0-next.11", - "vscode-languageserver-types": "3.17.6-next.6" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.6-next.6", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.6.tgz", - "integrity": "sha512-aiJY5/yW+xzw7KPNlwi3gQtddq/3EIn5z8X8nCgJfaiAij2R1APKePngv+MUdLdYJBVTLu+Qa0ODsT+pHgYguQ==", - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "license": "MIT" - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.107.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.0.tgz", - "integrity": "sha512-PSxeHk/dmLYZlnTU+vL1Gej6Evg5RNtl3flhxBresfznFnzxinHMzHKloHnywM/3ouQv7/AlZCswWDIkNSggUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.21.4", - "es-module-lexer": "^2.1.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "loader-runner": "^4.3.2", - "mime-db": "^1.54.0", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.5.0", - "watchpack": "^2.5.1", - "webpack-sources": "^3.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", - "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", - "dev": true, - "license": "MIT" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/packages/pyright-internal/package.json b/packages/pyright-internal/package.json index 6719f9a5256c..1821a6cdbd6c 100644 --- a/packages/pyright-internal/package.json +++ b/packages/pyright-internal/package.json @@ -12,8 +12,8 @@ "build": "tsc", "clean": "shx rm -rf ./dist ./out", "webpack:testserver": "rspack build --config ./src/tests/lsp/rspack.testserver.config.js --mode development", - "webpack:testserver:watch": "npm run clean && rspack build --config ./src/tests/lsp/rspack.testserver.config.js --mode development --watch", - "test": "npm run webpack:testserver && node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testPathIgnorePatterns src/tests/benchmarks", + "webpack:testserver:watch": "pnpm run clean && rspack build --config ./src/tests/lsp/rspack.testserver.config.js --mode development --watch", + "test": "pnpm run webpack:testserver && node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testPathIgnorePatterns src/tests/benchmarks", "test:norebuild": "node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testPathIgnorePatterns src/tests/benchmarks", "test:benchmark": "cross-env PYRIGHT_RUN_BENCHMARKS=1 node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testTimeout=300000 --runInBand --detectOpenHandles src/tests/benchmarks", "test:coverage": "node --max-old-space-size=8192 --expose-gc ./node_modules/jest/bin/jest --forceExit --testPathIgnorePatterns src/tests/benchmarks --reporters=jest-junit --reporters=default --coverage --coverageReporters=cobertura --coverageReporters=html --coverageReporters=json", @@ -26,6 +26,7 @@ "chokidar": "^3.6.0", "command-line-args": "^5.2.1", "jsonc-parser": "^3.3.1", + "fs-extra": "^11.3.3", "smol-toml": "^1.6.1", "source-map-support": "^0.5.21", "tmp": "^0.2.7", @@ -37,8 +38,8 @@ "vscode-uri": "^3.1.0" }, "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", + "@rspack/cli": "^2.1.3", + "@rspack/core": "^2.1.3", "@types/command-line-args": "^5.2.3", "@types/fs-extra": "^11.0.4", "@types/jest": "^30.0.0", @@ -47,6 +48,7 @@ "@types/tmp": "^0.2.6", "esbuild-loader": "^4.5.0", "jest": "^30.2.0", + "jest-environment-node": "^30.2.0", "jest-junit": "^17.0.0", "shx": "^0.4.0", "ts-jest": "^29.4.7", diff --git a/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts b/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts index 79b392f3b039..23051b321d11 100644 --- a/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts +++ b/packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts @@ -4,10 +4,9 @@ * Licensed under the MIT license. * Author: Eric Traut * - * Defines objects that hang off the parse nodes in the parse tree. - * It contains information collected during the binder phase that - * can be used for later analysis steps or for language services - * (e.g. hover information). + * Defines information associated with parse nodes. It contains data + * collected during the binder phase that can be used for later analysis + * steps or for language services (e.g. hover information). */ import { @@ -15,12 +14,16 @@ import { ComprehensionNode, ExecutionScopeNode, FunctionNode, + getParserStringAnnotation, + getParseTreeRoot, LambdaNode, ModuleNode, ParseNode, - ParseNodeType, + ExpressionNode, + StringListNode, StringNode, } from '../parser/parseNodes'; +import { StringAnnotationInfo } from '../parser/stringAnnotationInfo'; import { AnalyzerFileInfo } from './analyzerFileInfo'; import { FlowFlags, FlowNode } from './codeFlowTypes'; import { Declaration } from './declaration'; @@ -57,9 +60,6 @@ export interface AnalyzerNodeInfo { // Control flow information at the end of this node. afterFlowNode?: FlowNode; - // Info about the source file, used only on module nodes. - fileInfo?: AnalyzerFileInfo; - // Set of expressions used within an execution scope (module, // function or lambda) that requires code flow analysis. codeFlowExpressions?: Set; @@ -70,147 +70,594 @@ export interface AnalyzerNodeInfo { // List of __all__ symbols in the module. dunderAllInfo?: DunderAllInfo | undefined; + + // String annotations discovered after parsing, keyed by analyzer owner. + stringAnnotations?: WeakMap>; +} + +export interface AnalyzerNodeInfoReader { + get(node: ParseNode): AnalyzerNodeInfo | undefined; + getFileInfo(node: ParseNode): AnalyzerFileInfo | undefined; +} + +interface AnalyzerNodeInfoReaderPropertyProvider { + readonly analyzerNodeInfoReader: AnalyzerNodeInfoReader; +} + +interface AnalyzerNodeInfoReaderMethodProvider { + getAnalyzerNodeInfoReader(): AnalyzerNodeInfoReader; +} + +export function getInfoReader(provider: AnalyzerNodeInfoReaderPropertyProvider): AnalyzerNodeInfoReader; +export function getInfoReader(provider: AnalyzerNodeInfoReaderMethodProvider): AnalyzerNodeInfoReader; +export function getInfoReader( + provider: AnalyzerNodeInfoReaderPropertyProvider | AnalyzerNodeInfoReaderMethodProvider +): AnalyzerNodeInfoReader { + if ('analyzerNodeInfoReader' in provider) { + return provider.analyzerNodeInfoReader; + } + + return provider.getAnalyzerNodeInfoReader(); +} + +export interface AnalyzerNodeInfoWriter extends AnalyzerNodeInfoReader { + getOrCreate(node: ParseNode): AnalyzerNodeInfo; + setFileInfo(root: ModuleNode, fileInfo: AnalyzerFileInfo): void; +} + +export class AnalyzerNodeInfoStore implements AnalyzerNodeInfoWriter { + private readonly _infoByTree = new WeakMap>(); + private readonly _fileInfoByTree = new WeakMap(); + + get(node: ParseNode): AnalyzerNodeInfo | undefined { + return this._infoByTree.get(node.a)?.get(node); + } + + getFileInfo(node: ParseNode): AnalyzerFileInfo | undefined { + return this._fileInfoByTree.get(node.a); + } + + getOrCreate(node: ParseNode): AnalyzerNodeInfo { + let treeInfo = this._infoByTree.get(node.a); + if (!treeInfo) { + treeInfo = new WeakMap(); + this._infoByTree.set(node.a, treeInfo); + } + + let info = treeInfo.get(node); + if (!info) { + info = {}; + treeInfo.set(node, info); + } + return info; + } + + setFileInfo(root: ModuleNode, fileInfo: AnalyzerFileInfo): void { + this._fileInfoByTree.set(root.a, fileInfo); + } +} + +export interface AnalyzerNodeInfoBindingSession extends AnalyzerNodeInfoWriter { + readonly root: ModuleNode; +} + +export interface AnalyzerNodeInfoContext extends AnalyzerNodeInfoReader { + getCurrentLayerReader(): AnalyzerNodeInfoReader; + beginWrite(root: ModuleNode): AnalyzerNodeInfoBindingSession; + publish(session: AnalyzerNodeInfoBindingSession): AnalyzerNodeInfoStore; + registerStore(root: ModuleNode, store: AnalyzerNodeInfoStore): void; + remove(root: ModuleNode): void; + enterOverlay(): void; + // Preserves an overlay-produced store for a tree that survives the overlay. + promoteToPreviousLayer(root: ModuleNode): void; + discardOverlay(): void; + dispose(): void; +} + +interface AnalyzerNodeInfoContextLayer { + readonly stores: WeakMap; + readonly removedKeys: WeakSet; +} + +class AnalyzerNodeInfoBindingSessionImpl implements AnalyzerNodeInfoBindingSession { + private readonly _store = new AnalyzerNodeInfoStore(); + private _published = false; + + constructor(readonly root: ModuleNode, private readonly _context: AnalyzerNodeInfoContextImpl) {} + + get(node: ParseNode): AnalyzerNodeInfo | undefined { + if (node.a === this.root.a) { + return this._store.get(node); + } + + return this._context.get(node); + } + + getFileInfo(node: ParseNode): AnalyzerFileInfo | undefined { + if (node.a === this.root.a) { + return this._store.getFileInfo(node); + } + + return this._context.getFileInfo(node); + } + + getOrCreate(node: ParseNode): AnalyzerNodeInfo { + this._verifyWritable(node); + return this._store.getOrCreate(node); + } + + setFileInfo(root: ModuleNode, fileInfo: AnalyzerFileInfo): void { + this._verifyWritable(root); + this._store.setFileInfo(root, fileInfo); + } + + publish(context: AnalyzerNodeInfoContextImpl): AnalyzerNodeInfoStore { + if (context !== this._context) { + throw new Error('Cannot publish analyzer information to a different context'); + } + + if (this._published) { + throw new Error('Analyzer information binding session was already published'); + } + + this._published = true; + return this._store; + } + + private _verifyWritable(node: ParseNode) { + if (this._published) { + throw new Error('Cannot write analyzer information after publication'); + } + + if (node.a !== this.root.a) { + throw new Error('Cannot write analyzer information for a foreign parse tree'); + } + } +} + +export class AnalyzerNodeInfoContextImpl implements AnalyzerNodeInfoContext { + private _layers: AnalyzerNodeInfoContextLayer[] = [this._createLayer()]; + private _disposed = false; + private readonly _currentLayerReader: AnalyzerNodeInfoReader = { + get: (node) => this._getFromCurrentLayer(node), + getFileInfo: (node) => this._getFileInfoFromCurrentLayer(node), + }; + + get(node: ParseNode): AnalyzerNodeInfo | undefined { + if (this._disposed) { + return undefined; + } + + // Fast path: no edit-mode overlay is active (the steady-state batch/check + // case always has just the base layer). Skip the layer-walk loop and the + // removedKeys tombstone check: a tree removed from the base layer also has + // its store deleted, so stores.get returns undefined for it anyway. + const layers = this._layers; + if (layers.length === 1) { + return layers[0].stores.get(node.a)?.get(node); + } + + for (let index = layers.length - 1; index >= 0; index--) { + const layer = layers[index]; + if (layer.removedKeys.has(node.a)) { + return undefined; + } + + const store = layer.stores.get(node.a); + if (store) { + return store.get(node); + } + } + + return undefined; + } + + getFileInfo(node: ParseNode): AnalyzerFileInfo | undefined { + if (this._disposed) { + return undefined; + } + + const layers = this._layers; + if (layers.length === 1) { + return layers[0].stores.get(node.a)?.getFileInfo(node); + } + + for (let index = layers.length - 1; index >= 0; index--) { + const layer = layers[index]; + if (layer.removedKeys.has(node.a)) { + return undefined; + } + + const store = layer.stores.get(node.a); + if (store) { + return store.getFileInfo(node); + } + } + + return undefined; + } + + getCurrentLayerReader(): AnalyzerNodeInfoReader { + return this._currentLayerReader; + } + + beginWrite(root: ModuleNode): AnalyzerNodeInfoBindingSession { + this._throwIfDisposed(); + return new AnalyzerNodeInfoBindingSessionImpl(root, this); + } + + publish(session: AnalyzerNodeInfoBindingSession): AnalyzerNodeInfoStore { + this._throwIfDisposed(); + if (!(session instanceof AnalyzerNodeInfoBindingSessionImpl)) { + throw new Error('Cannot publish an analyzer information binding session from a different implementation'); + } + + const store = session.publish(this); + this.registerStore(session.root, store); + return store; + } + + registerStore(root: ModuleNode, store: AnalyzerNodeInfoStore): void { + this._throwIfDisposed(); + const layer = this._layers[this._layers.length - 1]; + layer.removedKeys.delete(root.a); + layer.stores.set(root.a, store); + } + + remove(root: ModuleNode): void { + this._throwIfDisposed(); + const layer = this._layers[this._layers.length - 1]; + layer.stores.delete(root.a); + layer.removedKeys.add(root.a); + } + + enterOverlay(): void { + this._throwIfDisposed(); + this._layers.push(this._createLayer()); + } + + promoteToPreviousLayer(root: ModuleNode): void { + this._throwIfDisposed(); + if (this._layers.length < 2) { + return; + } + + const top = this._layers[this._layers.length - 1]; + const store = top.stores.get(root.a); + if (!store) { + return; + } + + const previous = this._layers[this._layers.length - 2]; + previous.removedKeys.delete(root.a); + previous.stores.set(root.a, store); + top.stores.delete(root.a); + } + + discardOverlay(): void { + this._throwIfDisposed(); + if (this._layers.length === 1) { + throw new Error('Cannot discard the base analyzer information context layer'); + } + + this._layers.pop(); + } + + dispose(): void { + this._layers = []; + this._disposed = true; + } + + private _createLayer(): AnalyzerNodeInfoContextLayer { + return { + stores: new WeakMap(), + removedKeys: new WeakSet(), + }; + } + + private _getFromCurrentLayer(node: ParseNode): AnalyzerNodeInfo | undefined { + if (this._disposed) { + return undefined; + } + + const layer = this._layers[this._layers.length - 1]; + if (layer.removedKeys.has(node.a)) { + return undefined; + } + + return layer.stores.get(node.a)?.get(node); + } + + private _getFileInfoFromCurrentLayer(node: ParseNode): AnalyzerFileInfo | undefined { + if (this._disposed) { + return undefined; + } + + const layer = this._layers[this._layers.length - 1]; + if (layer.removedKeys.has(node.a)) { + return undefined; + } + + return layer.stores.get(node.a)?.getFileInfo(node); + } + + private _throwIfDisposed() { + if (this._disposed) { + throw new Error('Analyzer node information context is disposed'); + } + } } export type ScopedNode = ModuleNode | ClassNode | FunctionNode | LambdaNode | ComprehensionNode; -// Cleans out all fields that are added by the analyzer phases -// (after the post-parse walker). -export function cleanNodeAnalysisInfo(node: ParseNode) { - const info = getAnalyzerInfo(node); - if (info?.scope) { - info.scope = undefined; +export class AnalyzerNodeInfoAccessor implements AnalyzerNodeInfoReader { + constructor(private readonly _reader: AnalyzerNodeInfoReader, private readonly _writer?: AnalyzerNodeInfoWriter) {} + + get(node: ParseNode) { + return this._reader.get(node); + } + + getImportInfo(node: ParseNode) { + return getImportInfo(node, this._reader); + } + + setImportInfo(node: ParseNode, importInfo: ImportResult) { + this._write((writer) => setImportInfo(node, importInfo, writer)); + } + + getScope(node: ParseNode) { + return getScope(node, this._reader); + } + + setScope(node: ParseNode, scope: Scope) { + this._write((writer) => setScope(node, scope, writer)); + } + + getDeclaration(node: ParseNode) { + return getDeclaration(node, this._reader); + } + + setDeclaration(node: ParseNode, declaration: Declaration) { + this._write((writer) => setDeclaration(node, declaration, writer)); } - if (info?.declaration) { - info.declaration = undefined; + getFlowNode(node: ParseNode) { + return getFlowNode(node, this._reader); } - if (info?.flowNode) { - info.flowNode = undefined; + setFlowNode(node: ParseNode, flowNode: FlowNode) { + this._write((writer) => setFlowNode(node, flowNode, writer)); } - if (info?.afterFlowNode) { - info.afterFlowNode = undefined; + getAfterFlowNode(node: ParseNode) { + return getAfterFlowNode(node, this._reader); } - if (info?.fileInfo) { - info.fileInfo = undefined; + setAfterFlowNode(node: ParseNode, flowNode: FlowNode) { + this._write((writer) => setAfterFlowNode(node, flowNode, writer)); } - if (info?.codeFlowExpressions) { - info.codeFlowExpressions = undefined; + getFileInfoIfAvailable(node: ParseNode) { + return getFileInfoIfAvailable(node, this._reader); } - if (info?.codeFlowComplexity) { - info.codeFlowComplexity = undefined; + getFileInfo(node: ParseNode) { + return getFileInfo(node, this._reader); } - if (info?.dunderAllInfo) { - info.dunderAllInfo = undefined; + setFileInfo(node: ModuleNode, fileInfo: AnalyzerFileInfo) { + this._write((writer) => setFileInfo(node, fileInfo, writer)); } + + getCodeFlowExpressions(node: ExecutionScopeNode) { + return getCodeFlowExpressions(node, this._reader); + } + + setCodeFlowExpressions(node: ExecutionScopeNode, expressions: Set) { + this._write((writer) => setCodeFlowExpressions(node, expressions, writer)); + } + + getCodeFlowComplexity(node: ExecutionScopeNode) { + return getCodeFlowComplexity(node, this._reader); + } + + setCodeFlowComplexity(node: ExecutionScopeNode, complexity: number) { + this._write((writer) => setCodeFlowComplexity(node, complexity, writer)); + } + + getDunderAllInfo(node: ModuleNode) { + return getDunderAllInfo(node, this._reader); + } + + setDunderAllInfo(node: ModuleNode, names: DunderAllInfo | undefined) { + this._write((writer) => setDunderAllInfo(node, names, writer)); + } + + getStringAnnotation(node: StringListNode) { + return getStringAnnotation(node, this._reader); + } + + setStringAnnotation(node: StringListNode, annotation: ExpressionNode, nestedAnnotations: StringAnnotationInfo) { + setStringAnnotation(node, annotation, nestedAnnotations, this._reader); + } + + isCodeUnreachable(node: ParseNode) { + return isCodeUnreachable(node, this._reader); + } + + private _getWriter() { + if (!this._writer) { + throw new Error('Analyzer node information accessor is read-only'); + } + + return this._writer; + } + + private _write(callback: (writer: AnalyzerNodeInfoWriter) => void) { + callback(this._getWriter()); + } +} + +export function createAnalyzerNodeInfoAccessor(reader: AnalyzerNodeInfoReader, writer?: AnalyzerNodeInfoWriter) { + return new AnalyzerNodeInfoAccessor(reader, writer); } -export function getImportInfo(node: ParseNode): ImportResult | undefined { - const info = getAnalyzerInfo(node); +export function getImportInfo(node: ParseNode, reader: AnalyzerNodeInfoReader): ImportResult | undefined { + const info = reader.get(node); return info?.importInfo; } -export function setImportInfo(node: ParseNode, importInfo: ImportResult) { - const info = getAnalyzerInfoForWrite(node); +export function setImportInfo(node: ParseNode, importInfo: ImportResult, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.importInfo = importInfo; } -export function getScope(node: ParseNode): Scope | undefined { - const info = getAnalyzerInfo(node); +export function getScope(node: ParseNode, reader: AnalyzerNodeInfoReader): Scope | undefined { + const info = reader.get(node); return info?.scope; } -export function setScope(node: ParseNode, scope: Scope) { - const info = getAnalyzerInfoForWrite(node); +export function setScope(node: ParseNode, scope: Scope, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.scope = scope; } -export function getDeclaration(node: ParseNode): Declaration | undefined { - const info = getAnalyzerInfo(node); +export function getDeclaration(node: ParseNode, reader: AnalyzerNodeInfoReader): Declaration | undefined { + const info = reader.get(node); return info?.declaration; } -export function setDeclaration(node: ParseNode, decl: Declaration) { - const info = getAnalyzerInfoForWrite(node); +export function setDeclaration(node: ParseNode, decl: Declaration, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.declaration = decl; } -export function getFlowNode(node: ParseNode): FlowNode | undefined { - const info = getAnalyzerInfo(node); +export function getFlowNode(node: ParseNode, reader: AnalyzerNodeInfoReader): FlowNode | undefined { + const info = reader.get(node); return info?.flowNode; } -export function setFlowNode(node: ParseNode, flowNode: FlowNode) { - const info = getAnalyzerInfoForWrite(node); +export function setFlowNode(node: ParseNode, flowNode: FlowNode, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.flowNode = flowNode; } -export function getAfterFlowNode(node: ParseNode): FlowNode | undefined { - const info = getAnalyzerInfo(node); +export function getAfterFlowNode(node: ParseNode, reader: AnalyzerNodeInfoReader): FlowNode | undefined { + const info = reader.get(node); return info?.afterFlowNode; } -export function setAfterFlowNode(node: ParseNode, flowNode: FlowNode) { - const info = getAnalyzerInfoForWrite(node); +export function setAfterFlowNode(node: ParseNode, flowNode: FlowNode, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.afterFlowNode = flowNode; } -export function getFileInfo(node: ParseNode): AnalyzerFileInfo { - while (node.nodeType !== ParseNodeType.Module) { - node = node.parent!; +export function getStringAnnotation(node: StringListNode, reader: AnalyzerNodeInfoReader): ExpressionNode | undefined { + // Precedence and tier asymmetry (do not reorder): + // Tier 1 - parser-derived quoted annotations (e.g. `x: "Data"`) are established by the + // grammar during parsing. They are owner-independent and live on the shared parse + // tree's owner key, so they are visible to every Program that reuses the tree. + // Tier 2 - semantically-discovered annotations (e.g. `cast("Data", v)`, alias-dependent + // forward refs) are owner-specific and stored per-`fileInfo` under the root node. + // Parser annotations always win: an ordinary string is only consulted against the tier-2 + // store when no tier-1 annotation exists. Merging or reordering these lookups would break + // cross-owner isolation (two Programs sharing a root could see each other's semantic results). + const parserAnnotation = getParserStringAnnotation(node); + if (parserAnnotation) { + return parserAnnotation; + } + + const root = getParseTreeRoot(node); + if (!root) { + return undefined; + } + + const fileInfo = reader.getFileInfo(node); + return fileInfo ? reader.get(root)?.stringAnnotations?.get(fileInfo)?.get(node) : undefined; +} + +export function setStringAnnotation( + node: StringListNode, + annotation: ExpressionNode, + nestedAnnotations: StringAnnotationInfo, + reader: AnalyzerNodeInfoReader +) { + const root = getParseTreeRoot(node); + const fileInfo = reader.getFileInfo(node); + const rootInfo = root ? reader.get(root) : undefined; + if (!root || !fileInfo || !rootInfo) { + throw new Error('String annotations require a bound parse tree'); + } + + rootInfo.stringAnnotations ??= new WeakMap(); + let ownerAnnotations = rootInfo.stringAnnotations.get(fileInfo); + if (!ownerAnnotations) { + ownerAnnotations = new WeakMap(); + rootInfo.stringAnnotations.set(fileInfo, ownerAnnotations); } - const info = getAnalyzerInfo(node); - return info!.fileInfo!; + + ownerAnnotations.set(node, annotation); + nestedAnnotations.forEach((nestedAnnotation, nestedNode) => { + ownerAnnotations.set(nestedNode, nestedAnnotation); + }); +} + +export function getFileInfoIfAvailable(node: ParseNode, reader: AnalyzerNodeInfoReader): AnalyzerFileInfo | undefined { + return reader.getFileInfo(node); +} + +export function getFileInfo(node: ParseNode, reader: AnalyzerNodeInfoReader): AnalyzerFileInfo { + return getFileInfoIfAvailable(node, reader)!; } -export function setFileInfo(node: ModuleNode, fileInfo: AnalyzerFileInfo) { - const info = getAnalyzerInfoForWrite(node); - info.fileInfo = fileInfo; +export function setFileInfo(node: ModuleNode, fileInfo: AnalyzerFileInfo, writer: AnalyzerNodeInfoWriter) { + writer.setFileInfo(node, fileInfo); } -export function getCodeFlowExpressions(node: ExecutionScopeNode): Set | undefined { - const info = getAnalyzerInfo(node); +export function getCodeFlowExpressions( + node: ExecutionScopeNode, + reader: AnalyzerNodeInfoReader +): Set | undefined { + const info = reader.get(node); return info?.codeFlowExpressions; } -export function setCodeFlowExpressions(node: ExecutionScopeNode, expressions: Set) { - const info = getAnalyzerInfoForWrite(node); +export function setCodeFlowExpressions( + node: ExecutionScopeNode, + expressions: Set, + writer: AnalyzerNodeInfoWriter +) { + const info = writer.getOrCreate(node); info.codeFlowExpressions = expressions; } -export function getCodeFlowComplexity(node: ExecutionScopeNode) { - const info = getAnalyzerInfo(node); +export function getCodeFlowComplexity(node: ExecutionScopeNode, reader: AnalyzerNodeInfoReader) { + const info = reader.get(node); return info?.codeFlowComplexity ?? 0; } -export function setCodeFlowComplexity(node: ExecutionScopeNode, complexity: number) { - const info = getAnalyzerInfoForWrite(node); +export function setCodeFlowComplexity(node: ExecutionScopeNode, complexity: number, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.codeFlowComplexity = complexity; } -export function getDunderAllInfo(node: ModuleNode): DunderAllInfo | undefined { - const info = getAnalyzerInfo(node); +export function getDunderAllInfo(node: ModuleNode, reader: AnalyzerNodeInfoReader): DunderAllInfo | undefined { + const info = reader.get(node); return info?.dunderAllInfo; } -export function setDunderAllInfo(node: ModuleNode, names: DunderAllInfo | undefined) { - const info = getAnalyzerInfoForWrite(node); +export function setDunderAllInfo(node: ModuleNode, names: DunderAllInfo | undefined, writer: AnalyzerNodeInfoWriter) { + const info = writer.getOrCreate(node); info.dunderAllInfo = names; } -export function isCodeUnreachable(node: ParseNode): boolean { +export function isCodeUnreachable(node: ParseNode, reader: AnalyzerNodeInfoReader): boolean { let curNode: ParseNode | undefined = node; // Walk up the parse tree until we find a node with // an associated flow node. while (curNode) { - const flowNode = getFlowNode(curNode); + const flowNode = getFlowNode(curNode, reader); if (flowNode) { return (flowNode.flags & (FlowFlags.UnreachableStaticCondition | FlowFlags.UnreachableStructural)) !== 0; } @@ -219,15 +666,3 @@ export function isCodeUnreachable(node: ParseNode): boolean { return false; } - -function getAnalyzerInfo(node: ParseNode): AnalyzerNodeInfo | undefined { - return node.a as AnalyzerNodeInfo | undefined; -} - -function getAnalyzerInfoForWrite(node: ParseNode): AnalyzerNodeInfo { - let info = node.a as AnalyzerNodeInfo | undefined; - if (!info) { - node.a = info = {}; - } - return info; -} diff --git a/packages/pyright-internal/src/analyzer/binder.ts b/packages/pyright-internal/src/analyzer/binder.ts index 4fc901c144d3..866001521986 100644 --- a/packages/pyright-internal/src/analyzer/binder.ts +++ b/packages/pyright-internal/src/analyzer/binder.ts @@ -172,6 +172,7 @@ const flowNodeComplexityContribution = 0.025; export class Binder extends ParseTreeWalker { private readonly _fileInfo: AnalyzerFileInfo; + private readonly _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor; // A queue of deferred analysis operations. private _deferredBindingTasks: DeferredBindingTask[] = []; @@ -280,12 +281,14 @@ export class Binder extends ParseTreeWalker { constructor( fileInfo: AnalyzerFileInfo, - private _moduleSymbolOnly = false, - private readonly _cellChainIndex?: CellChainIndexProvider + private _moduleSymbolOnly: boolean | undefined, + private readonly _cellChainIndex: CellChainIndexProvider | undefined, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor ) { super(); this._fileInfo = fileInfo; + this._nodeInfo = nodeInfo; } bindModule(node: ModuleNode): void { @@ -302,8 +305,8 @@ export class Binder extends ParseTreeWalker { /* proxyScope */ undefined, chainedModuleLevelScopeLookup, () => { - AnalyzerNodeInfo.setScope(node, this._currentScope); - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setScope(node, this._currentScope); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); // Bind implicit names. // List taken from https://docs.python.org/3/reference/import.html#__name__ @@ -325,10 +328,10 @@ export class Binder extends ParseTreeWalker { this._walkStatementsAndReportUnreachable(node.d.statements); // Associate the code flow node at the end of the module with the module. - AnalyzerNodeInfo.setAfterFlowNode(node, this._currentFlowNode); + this._nodeInfo.setAfterFlowNode(node, this._currentFlowNode); - AnalyzerNodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions!); - AnalyzerNodeInfo.setCodeFlowComplexity(node, this._codeFlowComplexity); + this._nodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions!); + this._nodeInfo.setCodeFlowComplexity(node, this._codeFlowComplexity); } ); @@ -376,17 +379,17 @@ export class Binder extends ParseTreeWalker { }); if (this._dunderAllNames) { - AnalyzerNodeInfo.setDunderAllInfo(node, { + this._nodeInfo.setDunderAllInfo(node, { names: this._dunderAllNames, stringNodes: this._dunderAllStringNodes, usesUnsupportedDunderAllForm: this._usesUnsupportedDunderAllForm, }); } else { - AnalyzerNodeInfo.setDunderAllInfo(node, /* names */ undefined); + this._nodeInfo.setDunderAllInfo(node, /* names */ undefined); } // Set __all__ flags on the module symbols. - const scope = AnalyzerNodeInfo.getScope(node); + const scope = this._nodeInfo.getScope(node); if (scope && this._dunderAllNames) { for (const name of this._dunderAllNames) { scope.symbolTable.get(name)?.setIsInDunderAll(); @@ -407,7 +410,7 @@ export class Binder extends ParseTreeWalker { } override visitModuleName(node: ModuleNameNode): boolean { - const importResult = AnalyzerNodeInfo.getImportInfo(node); + const importResult = this._nodeInfo.getImportInfo(node); assert(importResult !== undefined); if (importResult.isNativeLib) { @@ -488,12 +491,12 @@ export class Binder extends ParseTreeWalker { } // Stash the declaration in the parse node for later access. - AnalyzerNodeInfo.setDeclaration(node, classDeclaration); + this._nodeInfo.setDeclaration(node, classDeclaration); let typeParamScope: Scope | undefined; if (node.d.typeParams) { this.walk(node.d.typeParams); - typeParamScope = AnalyzerNodeInfo.getScope(node.d.typeParams); + typeParamScope = this._nodeInfo.getScope(node.d.typeParams); } this.walkMultiple(node.d.arguments); @@ -504,7 +507,7 @@ export class Binder extends ParseTreeWalker { /* proxyScope */ undefined, /* chainedModuleLevelScopeLookup */ undefined, () => { - AnalyzerNodeInfo.setScope(node, this._currentScope); + this._nodeInfo.setScope(node, this._currentScope); this._addImplicitSymbolToCurrentScope('__doc__', node, 'str | None'); this._addImplicitSymbolToCurrentScope('__module__', node, 'str'); @@ -553,7 +556,7 @@ export class Binder extends ParseTreeWalker { override visitFunction(node: FunctionNode): boolean { this._createVariableAnnotationFlowNode(); - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); const symbol = this._bindNameToScope(this._currentScope, node.d.name); const containingClassNode = ParseTreeUtils.getEnclosingClass(node, /* stopAtFunction */ true); @@ -573,7 +576,7 @@ export class Binder extends ParseTreeWalker { } // Stash the declaration in the parse node for later access. - AnalyzerNodeInfo.setDeclaration(node, functionDeclaration); + this._nodeInfo.setDeclaration(node, functionDeclaration); // Walk the default values prior to the type parameters. node.d.params.forEach((param) => { @@ -585,7 +588,7 @@ export class Binder extends ParseTreeWalker { let typeParamScope: Scope | undefined; if (node.d.typeParams) { this.walk(node.d.typeParams); - typeParamScope = AnalyzerNodeInfo.getScope(node.d.typeParams); + typeParamScope = this._nodeInfo.getScope(node.d.typeParams); } this.walkMultiple(node.d.decorators); @@ -616,7 +619,7 @@ export class Binder extends ParseTreeWalker { /* proxyScope */ undefined, /* chainedModuleLevelScopeLookup */ undefined, () => { - AnalyzerNodeInfo.setScope(node, this._currentScope); + this._nodeInfo.setScope(node, this._currentScope); const enclosingClass = ParseTreeUtils.getEnclosingClass(node); if (enclosingClass) { @@ -644,7 +647,7 @@ export class Binder extends ParseTreeWalker { }; symbol.addDeclaration(paramDeclaration); - AnalyzerNodeInfo.setDeclaration(paramNode.d.name, paramDeclaration); + this._nodeInfo.setDeclaration(paramNode.d.name, paramDeclaration); } this._createFlowAssignment(paramNode.d.name); @@ -661,7 +664,7 @@ export class Binder extends ParseTreeWalker { // Associate the code flow node at the end of the suite with // the suite. - AnalyzerNodeInfo.setAfterFlowNode(node.d.suite, this._currentFlowNode); + this._nodeInfo.setAfterFlowNode(node.d.suite, this._currentFlowNode); // Compute the final return flow node and associate it with // the function's parse node. If this node is unreachable, then @@ -669,10 +672,10 @@ export class Binder extends ParseTreeWalker { this._addAntecedent(this._currentReturnTarget, this._currentFlowNode); const returnFlowNode = this._finishFlowLabel(this._currentReturnTarget); - AnalyzerNodeInfo.setAfterFlowNode(node, returnFlowNode); + this._nodeInfo.setAfterFlowNode(node, returnFlowNode); - AnalyzerNodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions!); - AnalyzerNodeInfo.setCodeFlowComplexity(node, this._codeFlowComplexity); + this._nodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions!); + this._nodeInfo.setCodeFlowComplexity(node, this._codeFlowComplexity); }); } ); @@ -685,7 +688,7 @@ export class Binder extends ParseTreeWalker { override visitLambda(node: LambdaNode): boolean { this._createVariableAnnotationFlowNode(); - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); // Analyze the parameter defaults in the context of the parent's scope // before we add any names from the function's scope. @@ -701,7 +704,7 @@ export class Binder extends ParseTreeWalker { /* proxyScope */ undefined, /* chainedModuleLevelScopeLookup */ undefined, () => { - AnalyzerNodeInfo.setScope(node, this._currentScope); + this._nodeInfo.setScope(node, this._currentScope); this._deferBinding(() => { // Create a start node for the lambda. @@ -721,19 +724,19 @@ export class Binder extends ParseTreeWalker { }; symbol.addDeclaration(paramDeclaration); - AnalyzerNodeInfo.setDeclaration(paramNode.d.name, paramDeclaration); + this._nodeInfo.setDeclaration(paramNode.d.name, paramDeclaration); } this._createFlowAssignment(paramNode.d.name); this.walk(paramNode.d.name); - AnalyzerNodeInfo.setFlowNode(paramNode, this._currentFlowNode!); + this._nodeInfo.setFlowNode(paramNode, this._currentFlowNode!); } }); // Walk the expression that make up the lambda body. this.walk(node.d.expr); - AnalyzerNodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions!); + this._nodeInfo.setCodeFlowExpressions(node, this._currentScopeCodeFlowExpressions!); }); } ); @@ -750,7 +753,7 @@ export class Binder extends ParseTreeWalker { sortedArgs.forEach((argNode) => { if (this._currentFlowNode) { - AnalyzerNodeInfo.setFlowNode(argNode, this._currentFlowNode); + this._nodeInfo.setFlowNode(argNode, this._currentFlowNode); } this.walk(argNode); }); @@ -883,7 +886,7 @@ export class Binder extends ParseTreeWalker { }; symbol.addDeclaration(paramDeclaration); - AnalyzerNodeInfo.setDeclaration(name, paramDeclaration); + this._nodeInfo.setDeclaration(name, paramDeclaration); if (typeParamsSeen.has(name.d.value)) { this._addSyntaxError( @@ -901,7 +904,7 @@ export class Binder extends ParseTreeWalker { } }); - AnalyzerNodeInfo.setScope(node, typeParamScope); + this._nodeInfo.setScope(node, typeParamScope); return false; } @@ -914,7 +917,7 @@ export class Binder extends ParseTreeWalker { let typeParamScope: Scope | undefined; if (node.d.typeParams) { this.walk(node.d.typeParams); - typeParamScope = AnalyzerNodeInfo.getScope(node.d.typeParams); + typeParamScope = this._nodeInfo.getScope(node.d.typeParams); } const typeAliasDeclaration: TypeAliasDeclaration = { @@ -933,7 +936,7 @@ export class Binder extends ParseTreeWalker { } // Stash the declaration in the parse node for later access. - AnalyzerNodeInfo.setDeclaration(node, typeAliasDeclaration); + this._nodeInfo.setDeclaration(node, typeAliasDeclaration); this._createAssignmentTargetFlowNodes(node.d.name, /* walkTargets */ true, /* unbound */ false); @@ -1122,7 +1125,7 @@ export class Binder extends ParseTreeWalker { this.walk(node.d.rightExpr); }); - const evaluationNode = ParseTreeUtils.getEvaluationNodeForAssignmentExpression(node); + const evaluationNode = ParseTreeUtils.getEvaluationNodeForAssignmentExpression(node, this._nodeInfo); if (!evaluationNode) { this._addSyntaxError(LocMessage.assignmentExprContext(), node); this.walk(node.d.name); @@ -1131,7 +1134,7 @@ export class Binder extends ParseTreeWalker { // because of the behavior defined in PEP 572. Targets of assignment // expressions don't bind to a list comprehension's scope but instead // bind to its containing scope. - const containerScope = AnalyzerNodeInfo.getScope(evaluationNode)!; + const containerScope = this._nodeInfo.getScope(evaluationNode)!; // If we're in a list comprehension (possibly nested), make sure that // local for targets don't collide with the target of the assignment @@ -1395,11 +1398,11 @@ export class Binder extends ParseTreeWalker { } if (node.d.expr) { - AnalyzerNodeInfo.setFlowNode(node.d.expr, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node.d.expr, this._currentFlowNode!); this.walk(node.d.expr); } - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); if (this._currentReturnTarget) { this._addAntecedent(this._currentReturnTarget, this._currentFlowNode!); } @@ -1430,17 +1433,17 @@ export class Binder extends ParseTreeWalker { override visitMemberAccess(node: MemberAccessNode): boolean { this.walk(node.d.leftExpr); - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); return false; } override visitName(node: NameNode): boolean { - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); return false; } override visitIndex(node: IndexNode): boolean { - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); this.walk(node.d.leftExpr); @@ -1760,7 +1763,7 @@ export class Binder extends ParseTreeWalker { override visitAwait(node: AwaitNode) { // Make sure this is within an async lambda or function. - const execScopeNode = ParseTreeUtils.getExecutionScopeNode(node); + const execScopeNode = ParseTreeUtils.getExecutionScopeNode(node, this._nodeInfo); if (execScopeNode?.nodeType !== ParseNodeType.Function || !execScopeNode.d.isAsync) { if (this._fileInfo.ipythonMode && execScopeNode?.nodeType === ParseNodeType.Module) { // Top level await is allowed in ipython mode. @@ -1879,7 +1882,7 @@ export class Binder extends ParseTreeWalker { } } - const importInfo = AnalyzerNodeInfo.getImportInfo(node.d.module); + const importInfo = this._nodeInfo.getImportInfo(node.d.module); assert(importInfo !== undefined); if (symbol) { @@ -1905,9 +1908,9 @@ export class Binder extends ParseTreeWalker { override visitImportFrom(node: ImportFromNode): boolean { const typingSymbolsOfInterest = ['Final', 'ClassVar', 'Annotated']; const dataclassesSymbolsOfInterest = ['InitVar']; - const importInfo = AnalyzerNodeInfo.getImportInfo(node.d.module); + const importInfo = this._nodeInfo.getImportInfo(node.d.module); - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); let resolvedPath = Uri.empty(); if (importInfo && importInfo.isImportFound && !importInfo.isNativeLib) { @@ -2071,7 +2074,7 @@ export class Binder extends ParseTreeWalker { const importedName = importSymbolNode.d.name.d.value; const nameNode = importSymbolNode.d.alias || importSymbolNode.d.name; - AnalyzerNodeInfo.setFlowNode(importSymbolNode, this._currentFlowNode!); + this._nodeInfo.setFlowNode(importSymbolNode, this._currentFlowNode!); const symbol = this._bindNameToScope(this._currentScope, nameNode); @@ -2345,7 +2348,7 @@ export class Binder extends ParseTreeWalker { /* proxyScope */ undefined, /* chainedModuleLevelScopeLookup */ undefined, () => { - AnalyzerNodeInfo.setScope(node, this._currentScope); + this._nodeInfo.setScope(node, this._currentScope); const falseLabel = this._createBranchLabel(); @@ -2768,7 +2771,7 @@ export class Binder extends ParseTreeWalker { ) { const firstNamePartValue = node.d.module.d.nameParts[0].d.value; - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); let uriOfFirstSubmodule: Uri | undefined; if (importInfo && importInfo.isImportFound && !importInfo.isNativeLib && importInfo.resolvedUris.length > 0) { @@ -2853,7 +2856,7 @@ export class Binder extends ParseTreeWalker { // See if there is import info for this part of the path. This allows us // to implicitly import all of the modules in a multi-part module name. - const implicitImportInfo = AnalyzerNodeInfo.getImportInfo(node.d.module.d.nameParts[0]); + const implicitImportInfo = this._nodeInfo.getImportInfo(node.d.module.d.nameParts[0]); if (implicitImportInfo && implicitImportInfo.resolvedUris.length) { newDecl.uri = implicitImportInfo.resolvedUris[0]; newDecl.loadSymbolsFromPath = true; @@ -2913,7 +2916,7 @@ export class Binder extends ParseTreeWalker { // is import info for this part of the path. This allows us to implicitly // import all of the modules in a multi-part module name (e.g. "import a.b.c" // imports "a" and "a.b" and "a.b.c"). - const implicitImportInfo = AnalyzerNodeInfo.getImportInfo(node.d.module.d.nameParts[i]); + const implicitImportInfo = this._nodeInfo.getImportInfo(node.d.module.d.nameParts[i]); if (implicitImportInfo && implicitImportInfo.resolvedUris.length) { loaderActions.uri = implicitImportInfo.resolvedUris[i]; loaderActions.loadSymbolsFromPath = true; @@ -2934,7 +2937,7 @@ export class Binder extends ParseTreeWalker { let foundUnreachableStatement = false; for (const statement of statements) { - AnalyzerNodeInfo.setFlowNode(statement, this._currentFlowNode!); + this._nodeInfo.setFlowNode(statement, this._currentFlowNode!); if (!foundUnreachableStatement) { foundUnreachableStatement = this._isCodeUnreachable(); @@ -2957,7 +2960,7 @@ export class Binder extends ParseTreeWalker { // subtree, we need to create dummy scopes for them. The type analyzer // depends on scopes being present. if (!this._moduleSymbolOnly) { - const dummyScopeGenerator = new DummyScopeGenerator(this._currentScope); + const dummyScopeGenerator = new DummyScopeGenerator(this._currentScope, this._nodeInfo); dummyScopeGenerator.walk(statement); } } @@ -3566,8 +3569,8 @@ export class Binder extends ParseTreeWalker { // introduced in except clauses. If there is no use the previous flow node // associated, use the previous flow node (applies in the del case). // Otherwise, the node will be evaluated as unbound at this point in the flow. - if (!unbound || AnalyzerNodeInfo.getFlowNode(node) === undefined) { - AnalyzerNodeInfo.setFlowNode(node, unbound ? prevFlowNode : this._currentFlowNode!); + if (!unbound || this._nodeInfo.getFlowNode(node) === undefined) { + this._nodeInfo.setFlowNode(node, unbound ? prevFlowNode : this._currentFlowNode!); } } @@ -3585,7 +3588,7 @@ export class Binder extends ParseTreeWalker { this._currentFlowNode = flowNode; } - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); } private _createFlowExhaustedMatch(node: MatchNode) { @@ -3601,7 +3604,7 @@ export class Binder extends ParseTreeWalker { this._currentFlowNode = flowNode; } - AnalyzerNodeInfo.setAfterFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setAfterFlowNode(node, this._currentFlowNode!); } private _isCodeUnreachable() { @@ -3843,7 +3846,7 @@ export class Binder extends ParseTreeWalker { // state so that hits from later cells are correctly marked. return (name: string, context?: ChainedModuleLevelLookupContext): SymbolWithScope | undefined => { for (const moduleNode of cellChainIndex.getLaterModuleNodes(fileUri) ?? []) { - const moduleScope = AnalyzerNodeInfo.getScope(moduleNode); + const moduleScope = this._nodeInfo.getScope(moduleNode); if (!moduleScope) { continue; } @@ -4167,8 +4170,8 @@ export class Binder extends ParseTreeWalker { let annotationNode = typeAnnotation; // Is this a quoted annotation? - if (annotationNode.nodeType === ParseNodeType.StringList && annotationNode.d.annotation) { - annotationNode = annotationNode.d.annotation; + if (annotationNode.nodeType === ParseNodeType.StringList) { + annotationNode = this._nodeInfo.getStringAnnotation(annotationNode) ?? annotationNode; } if (annotationNode.nodeType === ParseNodeType.Name) { @@ -4252,8 +4255,8 @@ export class Binder extends ParseTreeWalker { while (typeAnnotation) { // Is this a quoted annotation? - if (typeAnnotation.nodeType === ParseNodeType.StringList && typeAnnotation.d.annotation) { - typeAnnotation = typeAnnotation.d.annotation; + if (typeAnnotation.nodeType === ParseNodeType.StringList) { + typeAnnotation = this._nodeInfo.getStringAnnotation(typeAnnotation) ?? typeAnnotation; } if ( @@ -4365,7 +4368,7 @@ export class Binder extends ParseTreeWalker { } } - const classScope = AnalyzerNodeInfo.getScope(classNode)!; + const classScope = this._nodeInfo.getScope(classNode)!; assert(classScope !== undefined); return { @@ -4614,7 +4617,7 @@ export class Binder extends ParseTreeWalker { symbol.addDeclaration(specialBuiltInClassDeclaration); } - AnalyzerNodeInfo.setDeclaration(node, specialBuiltInClassDeclaration); + this._nodeInfo.setDeclaration(node, specialBuiltInClassDeclaration); return true; } @@ -4667,7 +4670,7 @@ export class Binder extends ParseTreeWalker { this.walk(node.d.expr); } - AnalyzerNodeInfo.setFlowNode(node, this._currentFlowNode!); + this._nodeInfo.setFlowNode(node, this._currentFlowNode!); } private _getUniqueFlowNodeId() { @@ -4746,7 +4749,10 @@ export class ReturnFinder extends ParseTreeWalker { export class DummyScopeGenerator extends ParseTreeWalker { private _currentScope: Scope | undefined; - constructor(currentScope: Scope | undefined) { + constructor( + currentScope: Scope | undefined, + private readonly _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor + ) { super(); this._currentScope = currentScope; } @@ -4756,8 +4762,8 @@ export class DummyScopeGenerator extends ParseTreeWalker { this.walk(node.d.suite); }); - if (!AnalyzerNodeInfo.getScope(node)) { - AnalyzerNodeInfo.setScope(node, newScope); + if (!this._nodeInfo.getScope(node)) { + this._nodeInfo.setScope(node, newScope); } return false; @@ -4768,8 +4774,8 @@ export class DummyScopeGenerator extends ParseTreeWalker { this.walk(node.d.suite); }); - if (!AnalyzerNodeInfo.getScope(node)) { - AnalyzerNodeInfo.setScope(node, newScope); + if (!this._nodeInfo.getScope(node)) { + this._nodeInfo.setScope(node, newScope); } return false; diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 64e04c7ba752..7624ad305b46 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -217,6 +217,7 @@ const isPrintCodeComplexityEnabled = false; export class Checker extends ParseTreeWalker { private readonly _moduleNode: ModuleNode; private readonly _fileInfo: AnalyzerFileInfo; + private readonly _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoAccessor; private _isUnboundCheckSuppressed = false; // A list of all nodes that are defined within the module that @@ -233,19 +234,27 @@ export class Checker extends ParseTreeWalker { private _importResolver: ImportResolver, private _evaluator: TypeEvaluator, parseResults: ParserOutput, - private _dependentFiles?: ParserOutput[] + private _dependentFiles: ParserOutput[] | undefined, + nodeInfoReader: AnalyzerNodeInfo.AnalyzerNodeInfoReader ) { - super(); - + // Forward the reader to the base walker so the structural walk expands both tier-1 + // (parser-derived) and tier-2 (evaluator-discovered, e.g. `cast("Foo", v)`) string + // annotations. The checker runs after type evaluation, so tier-2 annotations exist by + // the time it descends; without the reader it would silently skip tier-2 forward-ref + // subtrees and drop checker-only diagnostics (reportDeprecated, reportPrivateUsage, ...) + // for symbols referenced only inside an evaluator-discovered forward reference. + super(nodeInfoReader); + + this._nodeInfo = AnalyzerNodeInfo.createAnalyzerNodeInfoAccessor(nodeInfoReader); this._moduleNode = parseResults.parseTree; - this._fileInfo = AnalyzerNodeInfo.getFileInfo(this._moduleNode)!; + this._fileInfo = this._nodeInfo.getFileInfo(this._moduleNode)!; } check() { this._scopedNodes.push(this._moduleNode); // Report code complexity issues for the module. - const codeComplexity = AnalyzerNodeInfo.getCodeFlowComplexity(this._moduleNode); + const codeComplexity = this._nodeInfo.getCodeFlowComplexity(this._moduleNode); if (isPrintCodeComplexityEnabled) { console.log( @@ -265,7 +274,7 @@ export class Checker extends ParseTreeWalker { this._walkStatementsAndReportUnreachable(this._moduleNode.d.statements); // Mark symbols accessed by __all__ as accessed. - const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(this._moduleNode); + const dunderAllInfo = this._nodeInfo.getDunderAllInfo(this._moduleNode); if (dunderAllInfo) { this._evaluator.markNamesAccessed(this._moduleNode, dunderAllInfo.names); @@ -282,7 +291,7 @@ export class Checker extends ParseTreeWalker { } override walk(node: ParseNode) { - if (!AnalyzerNodeInfo.isCodeUnreachable(node)) { + if (!this._nodeInfo.isCodeUnreachable(node)) { super.walk(node); } else { this._evaluator.suppressDiagnostics(node, () => { @@ -663,7 +672,7 @@ export class Checker extends ParseTreeWalker { } }); - const codeComplexity = AnalyzerNodeInfo.getCodeFlowComplexity(node); + const codeComplexity = this._nodeInfo.getCodeFlowComplexity(node); const isTooComplexToAnalyze = codeComplexity > maxCodeComplexity; if (isPrintCodeComplexityEnabled) { @@ -712,7 +721,7 @@ export class Checker extends ParseTreeWalker { // if there is a '__getattr__' function defined when in strict mode. // This signifies an incomplete stub file that obscures type errors. if (this._fileInfo.isStubFile && node.d.name.d.value === '__getattr__') { - const scope = getScopeForNode(node); + const scope = getScopeForNode(node, this._nodeInfo); if (scope?.type === ScopeType.Module) { this._evaluator.addDiagnostic( DiagnosticRule.reportIncompleteStub, @@ -966,7 +975,7 @@ export class Checker extends ParseTreeWalker { // statement is not allowed to have an argument. A syntax error occurs // at runtime in this case. if (enclosingFunctionNode?.d.isAsync && node.d.expr) { - const functionDecl = AnalyzerNodeInfo.getDeclaration(enclosingFunctionNode); + const functionDecl = this._nodeInfo.getDeclaration(enclosingFunctionNode); if (functionDecl?.type === DeclarationType.Function && functionDecl.isGenerator) { this._evaluator.addDiagnostic( DiagnosticRule.reportGeneralTypeIssues, @@ -985,7 +994,7 @@ export class Checker extends ParseTreeWalker { node ); } else { - const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node, this._nodeInfo); declaredReturnType = this._evaluator.stripTypeGuard(declaredReturnType); let adjReturnType = makeTypeVarsBound(declaredReturnType, liveScopes); @@ -1189,7 +1198,7 @@ export class Checker extends ParseTreeWalker { const annotationType = this._evaluator.getTypeOfAnnotation(node.d.leftExpr.d.annotation); if (isClassInstance(annotationType) && ClassType.isBuiltIn(annotationType, 'TypeAlias')) { - const scope = getScopeForNode(node); + const scope = getScopeForNode(node, this._nodeInfo); if (scope) { if ( scope.type !== ScopeType.Class && @@ -1415,7 +1424,7 @@ export class Checker extends ParseTreeWalker { } } - if (node.d.annotation) { + if (AnalyzerNodeInfo.getStringAnnotation(node, AnalyzerNodeInfo.getInfoReader(this._evaluator))) { this._evaluator.getType(node); } @@ -1550,7 +1559,7 @@ export class Checker extends ParseTreeWalker { } else { this._evaluator.evaluateTypesForStatement(node); - const importInfo = AnalyzerNodeInfo.getImportInfo(node.d.module); + const importInfo = this._nodeInfo.getImportInfo(node.d.module); if ( importInfo && importInfo.isImportFound && @@ -1621,7 +1630,7 @@ export class Checker extends ParseTreeWalker { return false; } - const importResult = AnalyzerNodeInfo.getImportInfo(node); + const importResult = this._nodeInfo.getImportInfo(node); assert(importResult !== undefined); this._addMissingModuleSourceDiagnosticIfNeeded(importResult, node); @@ -1676,7 +1685,7 @@ export class Checker extends ParseTreeWalker { } override visitTypeAlias(node: TypeAliasNode): boolean { - const scope = getScopeForNode(node); + const scope = getScopeForNode(node, this._nodeInfo); if (scope) { if (scope.type !== ScopeType.Class && scope.type !== ScopeType.Module && scope.type !== ScopeType.Builtin) { this._evaluator.addDiagnostic( @@ -2379,7 +2388,7 @@ export class Checker extends ParseTreeWalker { const nameType = this._evaluator.getType(nameNode); if (nameType && isTypeVar(nameType) && !TypeVarType.isSelf(nameType)) { // Does this name refer to a TypeVar that is scoped to this function? - if (nameType.priv.scopeId === ParseTreeUtils.getScopeIdForNode(node)) { + if (nameType.priv.scopeId === ParseTreeUtils.getScopeIdForNode(node, this._nodeInfo)) { // We exempt constrained TypeVars, TypeVars that are type arguments of // other types, and ParamSpecs. There are legitimate uses for singleton // instances in these particular cases. @@ -2751,7 +2760,7 @@ export class Checker extends ParseTreeWalker { const functionNode = functionType.shared.declaration?.node; if (functionNode) { - const liveTypeVars = ParseTreeUtils.getTypeVarScopesForNode(functionNode); + const liveTypeVars = ParseTreeUtils.getTypeVarScopesForNode(functionNode, this._nodeInfo); functionType = makeTypeVarsBound(functionType, liveTypeVars); } @@ -2759,7 +2768,7 @@ export class Checker extends ParseTreeWalker { // function-local type variables into bound type variables. const prevOverloadNode = prevOverload.shared.declaration?.node?.parent; if (prevOverloadNode) { - const liveTypeVars = ParseTreeUtils.getTypeVarScopesForNode(prevOverloadNode); + const liveTypeVars = ParseTreeUtils.getTypeVarScopesForNode(prevOverloadNode, this._nodeInfo); prevOverload = makeTypeVarsBound(prevOverload, liveTypeVars); } @@ -2788,13 +2797,13 @@ export class Checker extends ParseTreeWalker { const implNode = implementation.shared.declaration?.node?.parent; if (implNode) { - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(implNode); + const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(implNode, this._nodeInfo); implBound = makeTypeVarsBound(implementation, liveScopeIds); } const overloadNode = overload.shared.declaration?.node; if (overloadNode) { - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(overloadNode); + const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(overloadNode, this._nodeInfo); overloadBound = makeTypeVarsBound(overload, liveScopeIds); } @@ -3084,7 +3093,7 @@ export class Checker extends ParseTreeWalker { return; } - const moduleScope = AnalyzerNodeInfo.getScope(this._moduleNode); + const moduleScope = this._nodeInfo.getScope(this._moduleNode); if (!moduleScope) { return; } @@ -3101,9 +3110,9 @@ export class Checker extends ParseTreeWalker { } private _validateSymbolTables() { - const dependentFileInfo = this._dependentFiles?.map((p) => AnalyzerNodeInfo.getFileInfo(p.parseTree)); + const dependentFileInfo = this._dependentFiles?.map((p) => this._nodeInfo.getFileInfo(p.parseTree)); for (const scopedNode of this._scopedNodes) { - const scope = AnalyzerNodeInfo.getScope(scopedNode); + const scope = this._nodeInfo.getScope(scopedNode); if (scope) { scope.symbolTable.forEach((symbol, name) => { @@ -3127,7 +3136,7 @@ export class Checker extends ParseTreeWalker { // Report unaccessed type parameters. const accessedSymbolSet = this._fileInfo.accessedSymbolSet; for (const paramList of this._typeParamLists) { - const typeParamScope = AnalyzerNodeInfo.getScope(paramList); + const typeParamScope = this._nodeInfo.getScope(paramList); for (const param of paramList.d.params) { const symbol = typeParamScope?.symbolTable.get(param.d.name.d.value); @@ -3841,6 +3850,13 @@ export class Checker extends ParseTreeWalker { return; } + // The presence of a decorator can change how the class is used (e.g. it + // may be registered or consumed through a decorator side effect), so back + // off from reporting it as unaccessed if any decorator is present. + if (decl.node.d.decorators.length > 0) { + return; + } + diagnosticLevel = this._fileInfo.diagnosticRuleSet.reportUnusedClass; nameNode = decl.node.d.name; rule = DiagnosticRule.reportUnusedClass; @@ -3858,6 +3874,13 @@ export class Checker extends ParseTreeWalker { return; } + // The presence of a decorator can change how the function is used (e.g. a + // Flask `@app.route(...)` handler is registered via a decorator side effect), + // so back off from reporting it as unaccessed if any decorator is present. + if (decl.node.d.decorators.length > 0) { + return; + } + diagnosticLevel = this._fileInfo.diagnosticRuleSet.reportUnusedFunction; nameNode = decl.node.d.name; rule = DiagnosticRule.reportUnusedFunction; @@ -4013,7 +4036,8 @@ export class Checker extends ParseTreeWalker { isInstanceCheck, /* isTypeIsCheck */ false, /* isPositiveTest */ false, - node + node, + this._nodeInfo ); const narrowedTypePositive = narrowTypeForInstanceOrSubclass( @@ -4023,7 +4047,8 @@ export class Checker extends ParseTreeWalker { isInstanceCheck, /* isTypeIsCheck */ false, /* isPositiveTest */ true, - node + node, + this._nodeInfo ); const isAlwaysTrue = isNever(narrowedTypeNegative); @@ -4437,7 +4462,7 @@ export class Checker extends ParseTreeWalker { return; } - if (!AnalyzerNodeInfo.isCodeUnreachable(node)) { + if (!this._nodeInfo.isCodeUnreachable(node)) { const type = this._evaluator.getType(node); if (type) { @@ -4597,7 +4622,7 @@ export class Checker extends ParseTreeWalker { // enum class that has already defined values. private _validateEnumClassOverride(node: ClassNode, classType: ClassType) { classType.shared.baseClasses.forEach((baseClass, index) => { - if (isClass(baseClass) && isEnumClassWithMembers(this._evaluator, baseClass)) { + if (isClass(baseClass) && isEnumClassWithMembers(this._evaluator, baseClass, this._nodeInfo)) { this._evaluator.addDiagnostic( DiagnosticRule.reportGeneralTypeIssues, LocMessage.enumClassOverride().format({ name: baseClass.shared.name }), @@ -4616,7 +4641,7 @@ export class Checker extends ParseTreeWalker { }; suiteNode.d.statements.forEach((statement) => { - if (!AnalyzerNodeInfo.isCodeUnreachable(statement)) { + if (!this._nodeInfo.isCodeUnreachable(statement)) { if (statement.nodeType === ParseNodeType.StatementList) { for (const substatement of statement.d.statements) { if ( @@ -4754,7 +4779,7 @@ export class Checker extends ParseTreeWalker { this._reportUnknownReturnResult(node, declaredReturnType); this._validateReturnTypeIsNotContravariant(declaredReturnType, returnAnnotation); - const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node, this._nodeInfo); declaredReturnType = makeTypeVarsBound(declaredReturnType, liveScopes); } @@ -4943,6 +4968,7 @@ export class Checker extends ParseTreeWalker { this._evaluator, classType, name, + this._nodeInfo, /* ignoreAnnotation */ true ); @@ -7452,7 +7478,7 @@ export class Checker extends ParseTreeWalker { return; } - const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopes = ParseTreeUtils.getTypeVarScopesForNode(node, this._nodeInfo); declaredReturnType = makeTypeVarsBound(declaredReturnType, liveScopes); let generatorType: Type | undefined; @@ -7611,7 +7637,11 @@ export class Checker extends ParseTreeWalker { } private _reportDuplicateImports() { - const importStatements = getTopLevelImports(this._moduleNode); + const importStatements = getTopLevelImports( + this._moduleNode, + /* includeImplicitImports */ false, + this._nodeInfo + ); const importModuleMap = new Map(); diff --git a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts index de3bf877e18b..583f4c0fa3b8 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowEngine.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowEngine.ts @@ -15,7 +15,7 @@ import { ConsoleInterface } from '../common/console'; import { assert, fail } from '../common/debug'; import { convertOffsetToPosition } from '../common/positionUtils'; import { ArgCategory, ExpressionNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; -import { getFileInfo, getImportInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { CodeFlowReferenceExpressionNode, createKeyForReference, @@ -202,7 +202,8 @@ const enablePrintConvergenceLimitHit = false; export function getCodeFlowEngine( evaluator: TypeEvaluator, - speculativeTypeTracker: SpeculativeTypeTracker + speculativeTypeTracker: SpeculativeTypeTracker, + nodeInfo: AnalyzerNodeInfoAccessor ): CodeFlowEngine { const isReachableRecursionSet = new Set(); const reachabilityCache = new Map(); @@ -704,7 +705,8 @@ export function getCodeFlowEngine( !!( conditionalFlowNode.flags & (FlowFlags.TrueCondition | FlowFlags.TrueNeverCondition) - ) + ), + nodeInfo ); if (typeNarrowingCallback) { @@ -763,7 +765,8 @@ export function getCodeFlowEngine( !!( conditionalFlowNode.flags & (FlowFlags.TrueCondition | FlowFlags.TrueNeverCondition) - ) + ), + nodeInfo ); if (typeNarrowingCallback) { @@ -1000,7 +1003,10 @@ export function getCodeFlowEngine( while (true) { let sawIncomplete = false; - let sawPending = false; + // A reentrant reachability query can start with an existing pending subtype. + let sawPending = + reference === undefined && + (cacheEntry.incompleteSubtypes?.some((subtype) => subtype.isPending) ?? false); let isProvenReachable = reference === undefined && cacheEntry.incompleteSubtypes?.some((subtype) => subtype.type !== undefined); @@ -1383,7 +1389,11 @@ export function getCodeFlowEngine( evaluator, conditionalFlowNode.reference!, conditionalFlowNode.expression, - !!(conditionalFlowNode.flags & (FlowFlags.TrueCondition | FlowFlags.TrueNeverCondition)) + !!( + conditionalFlowNode.flags & + (FlowFlags.TrueCondition | FlowFlags.TrueNeverCondition) + ), + nodeInfo ); if (typeNarrowingCallback) { @@ -1728,7 +1738,7 @@ export function getCodeFlowEngine( // type, thus preventing further traversal of the code flow graph. function isCallNoReturn(evaluator: TypeEvaluator, flowNode: FlowCall) { const node = flowNode.node; - const fileInfo = getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // Assume that calls within a pyi file are not "NoReturn" calls. if (fileInfo.isStubFile) { @@ -2010,7 +2020,7 @@ export function getCodeFlowEngine( } function getTypeFromWildcardImport(flowNode: FlowWildcardImport, name: string): Type { - const importInfo = getImportInfo(flowNode.node.d.module); + const importInfo = nodeInfo.getImportInfo(flowNode.node.d.module); assert(importInfo !== undefined && importInfo.isImportFound); assert(flowNode.node.d.isWildcardImport); @@ -2054,13 +2064,13 @@ export function getCodeFlowEngine( ) { let referenceText = ''; if (reference) { - const fileInfo = getFileInfo(reference); + const fileInfo = nodeInfo.getFileInfo(reference); const pos = convertOffsetToPosition(reference.start, fileInfo.lines); referenceText = `${printExpression(reference)}[${pos.line + 1}:${pos.character + 1}]`; } logger.log(`${callName}@${flowNode.id}: ${referenceText || '(none)'}`); - logger.log(formatControlFlowGraph(flowNode)); + logger.log(formatControlFlowGraph(flowNode, nodeInfo)); } return { diff --git a/packages/pyright-internal/src/analyzer/codeFlowUtils.ts b/packages/pyright-internal/src/analyzer/codeFlowUtils.ts index 4cbf5660a68f..2a901763f1eb 100644 --- a/packages/pyright-internal/src/analyzer/codeFlowUtils.ts +++ b/packages/pyright-internal/src/analyzer/codeFlowUtils.ts @@ -9,7 +9,7 @@ import { convertOffsetToPosition } from '../common/positionUtils'; import { ParseNode } from '../parser/parseNodes'; -import { getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { FlowAssignment, FlowCall, @@ -25,7 +25,7 @@ import { FlowWildcardImport, } from './codeFlowTypes'; -export function formatControlFlowGraph(flowNode: FlowNode) { +export function formatControlFlowGraph(flowNode: FlowNode, nodeInfo: AnalyzerNodeInfoAccessor) { const enum BoxCharacter { lr = '─', ud = '│', @@ -297,7 +297,7 @@ export function formatControlFlowGraph(flowNode: FlowNode) { return undefined; } - const fileInfo = getFileInfo(parseNode); + const fileInfo = nodeInfo.getFileInfo(parseNode); const startPos = convertOffsetToPosition(parseNode.start, fileInfo.lines); return `[${startPos.line + 1}:${startPos.character + 1}]`; diff --git a/packages/pyright-internal/src/analyzer/dataClasses.ts b/packages/pyright-internal/src/analyzer/dataClasses.ts index 03f829f9eee9..8d55e1f9387b 100644 --- a/packages/pyright-internal/src/analyzer/dataClasses.ts +++ b/packages/pyright-internal/src/analyzer/dataClasses.ts @@ -25,8 +25,7 @@ import { ParseNodeType, TypeAnnotationNode, } from '../parser/parseNodes'; -import * as AnalyzerNodeInfo from './analyzerNodeInfo'; -import { getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { ConstraintSolution } from './constraintSolution'; import { ConstraintTracker } from './constraintTracker'; import { createFunctionFromConstructor, getBoundInitMethod } from './constructors'; @@ -99,7 +98,8 @@ export function synthesizeDataClassMethods( isNamedTuple: boolean, skipSynthesizeInit: boolean, hasExistingInitMethod: boolean, - skipSynthesizeHash: boolean + skipSynthesizeHash: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ) { assert(ClassType.isDataClass(classType) || isNamedTuple); @@ -136,7 +136,7 @@ export function synthesizeDataClassMethods( let replaceType: FunctionType | undefined; if ( PythonVersion.isGreaterOrEqualTo( - AnalyzerNodeInfo.getFileInfo(node).executionEnvironment.pythonVersion, + nodeInfo.getFileInfo(node).executionEnvironment.pythonVersion, pythonVersion3_13 ) ) { @@ -288,7 +288,7 @@ export function synthesizeDataClassMethods( ) { const initArg = statement.d.rightExpr.d.args.find((arg) => arg.d.name?.d.value === 'init'); if (initArg && initArg.d.valueExpr) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); includeInInit = evaluateStaticBoolExpression( initArg.d.valueExpr, @@ -307,7 +307,7 @@ export function synthesizeDataClassMethods( const kwOnlyArg = statement.d.rightExpr.d.args.find((arg) => arg.d.name?.d.value === 'kw_only'); if (kwOnlyArg && kwOnlyArg.d.valueExpr) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); isKeywordOnly = evaluateStaticBoolExpression( kwOnlyArg.d.valueExpr, @@ -596,7 +596,13 @@ export function synthesizeDataClassMethods( if (entry.converter) { const fieldType = effectiveType; - effectiveType = getConverterInputType(evaluator, entry.converter, effectiveType, entry.name); + effectiveType = getConverterInputType( + evaluator, + entry.converter, + effectiveType, + entry.name, + nodeInfo + ); symbolTable.set( entry.name, getDescriptorForConverterField( @@ -607,7 +613,8 @@ export function synthesizeDataClassMethods( entry.converter, entry.name, fieldType, - effectiveType + effectiveType, + nodeInfo ) ); @@ -620,9 +627,9 @@ export function synthesizeDataClassMethods( defaultType = entry.type; } else { const defaultExpr = entry.defaultExpr; - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const flags = fileInfo.isStubFile ? EvalFlags.ConvertEllipsisToAny : EvalFlags.None; - const liveTypeVars = getTypeVarScopesForNode(entry.defaultExpr); + const liveTypeVars = getTypeVarScopesForNode(entry.defaultExpr, nodeInfo); const boundEffectiveType = makeTypeVarsBound(effectiveType, liveTypeVars); // Use speculative mode here so we don't cache the results. @@ -904,7 +911,8 @@ function getConverterInputType( evaluator: TypeEvaluator, converterNode: ArgumentNode, fieldType: Type, - fieldName: string + fieldName: string, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { // Use speculative mode here so we don't cache the results. // We'll want to re-evaluate this expression later, potentially @@ -922,7 +930,7 @@ function getConverterInputType( // Create synthesized function of the form Callable[[T], fieldType] which // will be used to check compatibility of the provided converter. const typeVar = TypeVarType.createInstance('__converterInput'); - typeVar.priv.scopeId = getScopeIdForNode(converterNode); + typeVar.priv.scopeId = getScopeIdForNode(converterNode, nodeInfo); const targetFunction = FunctionType.createSynthesizedInstance(''); targetFunction.shared.typeVarScopeId = typeVar.priv.scopeId; targetFunction.shared.declaredReturnType = fieldType; @@ -1047,9 +1055,10 @@ function getDescriptorForConverterField( converterNode: ParseNode, fieldName: string, getType: Type, - setType: Type + setType: Type, + nodeInfo: AnalyzerNodeInfoAccessor ): Symbol { - const fileInfo = getFileInfo(dataclassNode); + const fileInfo = nodeInfo.getFileInfo(dataclassNode); const typeMetaclass = evaluator.getBuiltInType(dataclassNode, 'type'); const descriptorName = `__converterDescriptor_${fieldName}`; @@ -1064,7 +1073,7 @@ function getDescriptorForConverterField( isInstantiableClass(typeMetaclass) ? typeMetaclass : UnknownType.create() ); - const scopeId = getScopeIdForNode(converterNode); + const scopeId = getScopeIdForNode(converterNode, nodeInfo); descriptorClass.shared.typeVarScopeId = scopeId; // Make the descriptor generic, copying the type parameters from the dataclass. @@ -1216,7 +1225,8 @@ function isDataclassFieldConstructor(type: Type, fieldDescriptorNames: string[]) export function validateDataClassTransformDecorator( evaluator: TypeEvaluator, - node: CallNode + node: CallNode, + nodeInfo: AnalyzerNodeInfoAccessor ): DataClassBehaviors | undefined { const behaviors: DataClassBehaviors = { skipGenerateInit: false, @@ -1230,7 +1240,7 @@ export function validateDataClassTransformDecorator( fieldDescriptorNames: [], }; - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // Parse the arguments to the call. node.d.args.forEach((arg) => { @@ -1422,9 +1432,10 @@ function applyDataClassBehaviorOverride( classType: ClassType, argName: string, argValueExpr: ExpressionNode, - behaviors: DataClassBehaviors + behaviors: DataClassBehaviors, + nodeInfo: AnalyzerNodeInfoAccessor ) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); const value = evaluateStaticBoolExpression(argValueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants); applyDataClassBehaviorOverrideValue(evaluator, errorNode, classType, argName, value, behaviors); @@ -1549,7 +1560,8 @@ export function applyDataClassClassBehaviorOverrides( errorNode: ParseNode, classType: ClassType, args: Arg[], - defaultBehaviors: DataClassBehaviors + defaultBehaviors: DataClassBehaviors, + nodeInfo: AnalyzerNodeInfoAccessor ) { let sawFrozenArg = false; @@ -1569,7 +1581,8 @@ export function applyDataClassClassBehaviorOverrides( classType, arg.name.d.value, arg.valueExpression, - behaviors + behaviors, + nodeInfo ); if (arg.name.d.value === 'frozen') { @@ -1598,13 +1611,15 @@ export function applyDataClassDecorator( errorNode: ParseNode, classType: ClassType, defaultBehaviors: DataClassBehaviors, - callNode: CallNode | undefined + callNode: CallNode | undefined, + nodeInfo: AnalyzerNodeInfoAccessor ) { applyDataClassClassBehaviorOverrides( evaluator, errorNode, classType, (callNode?.d.args ?? []).map((arg) => evaluator.convertNodeToArg(arg)), - defaultBehaviors + defaultBehaviors, + nodeInfo ); } diff --git a/packages/pyright-internal/src/analyzer/declarationUtils.ts b/packages/pyright-internal/src/analyzer/declarationUtils.ts index 3b7623858bed..007931018464 100644 --- a/packages/pyright-internal/src/analyzer/declarationUtils.ts +++ b/packages/pyright-internal/src/analyzer/declarationUtils.ts @@ -12,6 +12,7 @@ import { getEmptyRange } from '../common/textRange'; import { Uri } from '../common/uri/uri'; import { NameNode, ParseNodeType } from '../parser/parseNodes'; import { ImportLookup, ImportLookupResult } from './analyzerFileInfo'; +import { AnalyzerNodeInfoReader } from './analyzerNodeInfo'; import { AliasDeclaration, Declaration, DeclarationType, ModuleLoaderActions, isAliasDeclaration } from './declaration'; import { getFileInfoFromNode } from './parseTreeUtils'; import { Symbol } from './symbol'; @@ -185,12 +186,12 @@ export function getNameNodeForDeclaration(declaration: Declaration): NameNode | throw new Error(`Shouldn't reach here`); } -export function isDefinedInFile(decl: Declaration, fileUri: Uri) { +export function isDefinedInFile(decl: Declaration, fileUri: Uri, nodeInfo: AnalyzerNodeInfoReader) { if (isAliasDeclaration(decl)) { // Alias decl's path points to the original symbol // the alias is pointing to. So, we need to get the // filepath in that the alias is defined from the node. - return getFileInfoFromNode(decl.node)?.fileUri.equals(fileUri); + return getFileInfoFromNode(decl.node, nodeInfo)?.fileUri.equals(fileUri); } // Other decls, the path points to the file the symbol is defined in. diff --git a/packages/pyright-internal/src/analyzer/decorators.ts b/packages/pyright-internal/src/analyzer/decorators.ts index 43b2814b938f..38e62042e965 100644 --- a/packages/pyright-internal/src/analyzer/decorators.ts +++ b/packages/pyright-internal/src/analyzer/decorators.ts @@ -10,7 +10,7 @@ import { appendArray } from '../common/collectionUtils'; import { ArgCategory, CallNode, DecoratorNode, FunctionNode, ParamCategory, ParseNodeType } from '../parser/parseNodes'; -import { getDeclaration, getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { applyDataClassDecorator, getDataclassDecoratorBehaviors, @@ -54,9 +54,10 @@ export interface FunctionDecoratorInfo { export function getFunctionInfoFromDecorators( evaluator: TypeEvaluator, node: FunctionNode, - isInClass: boolean + isInClass: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): FunctionDecoratorInfo { - const fileInfo = getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); let flags = FunctionTypeFlags.None; let deprecationMessage: string | undefined; @@ -130,9 +131,10 @@ export function applyFunctionDecorator( inputFunctionType: Type, undecoratedType: FunctionType, decoratorNode: DecoratorNode, - functionNode: FunctionNode + functionNode: FunctionNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { - const fileInfo = getFileInfo(decoratorNode); + const fileInfo = nodeInfo.getFileInfo(decoratorNode); // Some stub files (e.g. builtins.pyi) rely on forward declarations of decorators. let evaluatorFlags = fileInfo.isStubFile ? EvalFlags.ForwardRefs : EvalFlags.None; @@ -169,7 +171,8 @@ export function applyFunctionDecorator( ) { undecoratedType.shared.decoratorDataClassBehaviors = validateDataClassTransformDecorator( evaluator, - decoratorNode.d.expr + decoratorNode.d.expr, + nodeInfo ); return inputFunctionType; } @@ -186,7 +189,7 @@ export function applyFunctionDecorator( ) : inputFunctionType; - let returnType = getTypeOfDecorator(evaluator, decoratorNode, decoratorArg); + let returnType = getTypeOfDecorator(evaluator, decoratorNode, decoratorArg, nodeInfo); // Check for some built-in decorator types with known semantics. if (isFunction(decoratorType)) { @@ -211,14 +214,14 @@ export function applyFunctionDecorator( if (memberName === 'setter') { if (isFunction(inputFunctionType)) { validatePropertyMethod(evaluator, inputFunctionType, decoratorNode); - return clonePropertyWithSetter(evaluator, baseType, inputFunctionType, functionNode); + return clonePropertyWithSetter(evaluator, baseType, inputFunctionType, functionNode, nodeInfo); } else { return inputFunctionType; } } else if (memberName === 'deleter') { if (isFunction(inputFunctionType)) { validatePropertyMethod(evaluator, inputFunctionType, decoratorNode); - return clonePropertyWithDeleter(evaluator, baseType, inputFunctionType, functionNode); + return clonePropertyWithDeleter(evaluator, baseType, inputFunctionType, functionNode, nodeInfo); } else { return inputFunctionType; } @@ -262,12 +265,12 @@ export function applyFunctionDecorator( if (ClassType.isPropertyClass(decoratorType)) { if (isFunction(inputFunctionType)) { validatePropertyMethod(evaluator, inputFunctionType, decoratorNode); - return createProperty(evaluator, decoratorNode, decoratorType, inputFunctionType); + return createProperty(evaluator, decoratorNode, decoratorType, inputFunctionType, nodeInfo); } else if (isClassInstance(inputFunctionType)) { const boundMethod = evaluator.getBoundMagicMethod(inputFunctionType, '__call__'); if (boundMethod && isFunction(boundMethod)) { - return createProperty(evaluator, decoratorNode, decoratorType, boundMethod); + return createProperty(evaluator, decoratorNode, decoratorType, boundMethod, nodeInfo); } return UnknownType.create(); @@ -297,9 +300,10 @@ export function applyClassDecorator( evaluator: TypeEvaluator, inputClassType: Type, originalClassType: ClassType, - decoratorNode: DecoratorNode + decoratorNode: DecoratorNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { - const fileInfo = getFileInfo(decoratorNode); + const fileInfo = nodeInfo.getFileInfo(decoratorNode); let flags = fileInfo.isStubFile ? EvalFlags.ForwardRefs : EvalFlags.None; if (decoratorNode.d.expr.nodeType !== ParseNodeType.Call) { flags |= EvalFlags.CallBaseDefaults; @@ -319,7 +323,8 @@ export function applyClassDecorator( ) { originalClassType.shared.classDataClassTransform = validateDataClassTransformDecorator( evaluator, - decoratorNode.d.expr + decoratorNode.d.expr, + nodeInfo ); } } @@ -343,7 +348,14 @@ export function applyClassDecorator( } if (dataclassBehaviors) { - applyDataClassDecorator(evaluator, decoratorNode, originalClassType, dataclassBehaviors, callNode); + applyDataClassDecorator( + evaluator, + decoratorNode, + originalClassType, + dataclassBehaviors, + callNode, + nodeInfo + ); return true; } @@ -358,7 +370,8 @@ export function applyClassDecorator( decoratorNode, originalClassType, dataclassBehaviors, - /* callNode */ undefined + /* callNode */ undefined, + nodeInfo ); return inputClassType; } @@ -400,12 +413,17 @@ export function applyClassDecorator( } } - return getTypeOfDecorator(evaluator, decoratorNode, inputClassType); + return getTypeOfDecorator(evaluator, decoratorNode, inputClassType, nodeInfo); } -function getTypeOfDecorator(evaluator: TypeEvaluator, node: DecoratorNode, functionOrClassType: Type): Type { +function getTypeOfDecorator( + evaluator: TypeEvaluator, + node: DecoratorNode, + functionOrClassType: Type, + nodeInfo: AnalyzerNodeInfoAccessor +): Type { // Evaluate the type of the decorator expression. - let flags = getFileInfo(node).isStubFile ? EvalFlags.ForwardRefs : EvalFlags.None; + let flags = nodeInfo.getFileInfo(node).isStubFile ? EvalFlags.ForwardRefs : EvalFlags.None; if (node.d.expr.nodeType !== ParseNodeType.Call) { flags |= EvalFlags.CallBaseDefaults; } @@ -492,11 +510,16 @@ function getTypeOfDecorator(evaluator: TypeEvaluator, node: DecoratorNode, funct // method searches for prior function nodes that are marked as @overload // and creates an OverloadedType that includes this function and // all previous ones. -export function addOverloadsToFunctionType(evaluator: TypeEvaluator, node: FunctionNode, type: Type): Type { +export function addOverloadsToFunctionType( + evaluator: TypeEvaluator, + node: FunctionNode, + type: Type, + nodeInfo: AnalyzerNodeInfoAccessor +): Type { let functionDecl: FunctionDeclaration | undefined; let implementation: Type | undefined; - const decl = getDeclaration(node); + const decl = nodeInfo.getDeclaration(node); if (decl) { functionDecl = decl as FunctionDeclaration; } diff --git a/packages/pyright-internal/src/analyzer/enums.ts b/packages/pyright-internal/src/analyzer/enums.ts index 16bab7084e14..8f8e58adfed1 100644 --- a/packages/pyright-internal/src/analyzer/enums.ts +++ b/packages/pyright-internal/src/analyzer/enums.ts @@ -10,7 +10,7 @@ import { assert } from '../common/debug'; import { PythonVersion, pythonVersion3_13 } from '../common/pythonVersion'; import { ArgCategory, ExpressionNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; -import { getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor, AnalyzerNodeInfoReader, getFileInfo } from './analyzerNodeInfo'; import { VariableDeclaration } from './declaration'; import { getClassFullName, getEnclosingClass, getTypeSourceId } from './parseTreeUtils'; import { Symbol, SymbolFlags } from './symbol'; @@ -55,7 +55,11 @@ export function isEnumMetaclass(classType: ClassType) { // Determines whether this is an enum class that has at least one enum // member defined. -export function isEnumClassWithMembers(evaluator: TypeEvaluator, classType: ClassType) { +export function isEnumClassWithMembers( + evaluator: TypeEvaluator, + classType: ClassType, + nodeInfo: AnalyzerNodeInfoAccessor +) { if (!isClass(classType) || !ClassType.isEnumClass(classType)) { return false; } @@ -63,7 +67,7 @@ export function isEnumClassWithMembers(evaluator: TypeEvaluator, classType: Clas // Determine whether the enum class defines a member. const symbolTable = ClassType.getSymbolTable(classType); for (const name of symbolTable.keys()) { - const symbolType = transformTypeForEnumMember(evaluator, classType, name); + const symbolType = transformTypeForEnumMember(evaluator, classType, name, nodeInfo); if ( symbolType && isClassInstance(symbolType) && @@ -81,9 +85,10 @@ export function createEnumType( evaluator: TypeEvaluator, errorNode: ExpressionNode, enumClass: ClassType, - argList: Arg[] + argList: Arg[], + nodeInfo: AnalyzerNodeInfoAccessor ): ClassType | undefined { - const fileInfo = getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); const isReprEnum = isReprEnumClass(enumClass); if (argList.length === 0) { @@ -312,6 +317,7 @@ export function transformTypeForEnumMember( evaluator: TypeEvaluator, classType: ClassType, memberName: string, + nodeInfo: AnalyzerNodeInfoReader, ignoreAnnotation = false, recursionCount = 0 ): Type | undefined { @@ -401,7 +407,8 @@ export function transformTypeForEnumMember( let assignedType: Type | undefined; if (valueTypeExprNode) { - const evalFlags = getFileInfo(valueTypeExprNode).isStubFile ? EvalFlags.ConvertEllipsisToAny : undefined; + const fileInfo = getFileInfo(valueTypeExprNode, nodeInfo); + const evalFlags = fileInfo.isStubFile ? EvalFlags.ConvertEllipsisToAny : undefined; assignedType = evaluator.getTypeOfExpression(valueTypeExprNode, evalFlags).type; } @@ -411,6 +418,7 @@ export function transformTypeForEnumMember( evaluator, classType, valueTypeExprNode.d.value, + nodeInfo, /* ignoreAnnotation */ false, recursionCount ); @@ -439,7 +447,7 @@ export function transformTypeForEnumMember( // depends on the version of Python. In versions prior to 3.13, classes // are treated as members. if (isInstantiableClass(assignedType)) { - const fileInfo = getFileInfo(primaryDecl.node); + const fileInfo = getFileInfo(primaryDecl.node, nodeInfo); isMemberOfEnumeration = PythonVersion.isLessThan( fileInfo.executionEnvironment.pythonVersion, pythonVersion3_13 @@ -581,13 +589,14 @@ export function getTypeOfEnumMember( errorNode: ParseNode, classType: ClassType, memberName: string, - isIncomplete: boolean + isIncomplete: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): TypeResult | undefined { if (!ClassType.isEnumClass(classType)) { return undefined; } - const type = transformTypeForEnumMember(evaluator, classType, memberName); + const type = transformTypeForEnumMember(evaluator, classType, memberName, nodeInfo); if (type) { return { type, isIncomplete }; } diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index 80ad86010222..62146c1d14c0 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -685,12 +685,15 @@ export class ImportResolver { // Intended to be overridden by subclasses to provide additional stub // resolving capabilities. Return undefined if no stubs were found for - // this import. + // this import. `bestResultSoFar` is the best import resolved so far (from + // site-packages/local/etc.) so subclasses can decide whether their stubs + // should override it. protected resolveImportEx( sourceFileUri: Uri, execEnv: ExecutionEnvironment, moduleDescriptor: ImportedModuleDescriptor, importName: string, + bestResultSoFar: ImportResult | undefined, importLogger?: ImportLogger, allowPyi = true ): ImportResult | undefined { @@ -1706,6 +1709,7 @@ export class ImportResolver { execEnv, moduleDescriptor, importName, + bestResultSoFar, importLogger, allowPyi ); diff --git a/packages/pyright-internal/src/analyzer/importStatementUtils.ts b/packages/pyright-internal/src/analyzer/importStatementUtils.ts index 8a26c3d5eb17..ef20b0e45400 100644 --- a/packages/pyright-internal/src/analyzer/importStatementUtils.ts +++ b/packages/pyright-internal/src/analyzer/importStatementUtils.ts @@ -124,7 +124,23 @@ export function compareImportStatements(a: ImportStatement, b: ImportStatement) // Looks for top-level 'import' and 'import from' statements and provides // an ordered list and a map (by file path). -export function getTopLevelImports(parseTree: ModuleNode, includeImplicitImports = false): ImportStatements { +export function getTopLevelImports( + parseTree: ModuleNode, + includeImplicitImports = false, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): ImportStatements { + return _getTopLevelImports(parseTree, includeImplicitImports, nodeInfo); +} + +export function collectTopLevelImports(parseTree: ModuleNode): ImportStatements { + return _getTopLevelImports(parseTree, /* includeImplicitImports */ false, /* nodeInfo */ undefined); +} + +function _getTopLevelImports( + parseTree: ModuleNode, + includeImplicitImports: boolean, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader | undefined +): ImportStatements { const localImports: ImportStatements = { orderedImports: [], mapByFilePath: new Map(), @@ -138,7 +154,7 @@ export function getTopLevelImports(parseTree: ModuleNode, includeImplicitImports statement.d.statements.forEach((subStatement) => { if (subStatement.nodeType === ParseNodeType.Import) { foundFirstImportStatement = true; - _processImportNode(subStatement, localImports, followsNonImportStatement); + _processImportNode(subStatement, localImports, followsNonImportStatement, nodeInfo); followsNonImportStatement = false; } else if (subStatement.nodeType === ParseNodeType.ImportFrom) { foundFirstImportStatement = true; @@ -146,7 +162,8 @@ export function getTopLevelImports(parseTree: ModuleNode, includeImplicitImports subStatement, localImports, followsNonImportStatement, - includeImplicitImports + includeImplicitImports, + nodeInfo ); followsNonImportStatement = false; } else { @@ -663,9 +680,14 @@ function _getInsertionEditForAutoImportInsertion( return { range, preChange, importStatement, postChange, importGroup }; } -function _processImportNode(node: ImportNode, localImports: ImportStatements, followsNonImportStatement: boolean) { +function _processImportNode( + node: ImportNode, + localImports: ImportStatements, + followsNonImportStatement: boolean, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader | undefined +) { node.d.list.forEach((importAsNode) => { - const importResult = AnalyzerNodeInfo.getImportInfo(importAsNode.d.module); + const importResult = nodeInfo ? AnalyzerNodeInfo.getImportInfo(importAsNode.d.module, nodeInfo) : undefined; let resolvedPath: Uri | undefined; if (importResult && importResult.isImportFound) { @@ -699,9 +721,10 @@ function _processImportFromNode( node: ImportFromNode, localImports: ImportStatements, followsNonImportStatement: boolean, - includeImplicitImports: boolean + includeImplicitImports: boolean, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader | undefined ) { - const importResult = AnalyzerNodeInfo.getImportInfo(node.d.module); + const importResult = nodeInfo ? AnalyzerNodeInfo.getImportInfo(node.d.module, nodeInfo) : undefined; let resolvedPath: Uri | undefined; if (importResult && importResult.isImportFound) { diff --git a/packages/pyright-internal/src/analyzer/namedTuples.ts b/packages/pyright-internal/src/analyzer/namedTuples.ts index ea3dfcdb217d..5a8e11acbd97 100644 --- a/packages/pyright-internal/src/analyzer/namedTuples.ts +++ b/packages/pyright-internal/src/analyzer/namedTuples.ts @@ -14,7 +14,7 @@ import { TextRange } from '../common/textRange'; import { LocMessage } from '../localization/localize'; import { ArgCategory, ExpressionNode, ParamCategory, ParseNodeType } from '../parser/parseNodes'; import { Tokenizer } from '../parser/tokenizer'; -import { getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { DeclarationType, VariableDeclaration } from './declaration'; import * as ParseTreeUtils from './parseTreeUtils'; import { evaluateStaticBoolExpression } from './staticExpressions'; @@ -53,9 +53,10 @@ export function createNamedTupleType( evaluator: TypeEvaluator, errorNode: ExpressionNode, argList: Arg[], - includesTypes: boolean + includesTypes: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): ClassType { - const fileInfo = getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); let className = 'namedtuple'; const namedTupleEntries = new Set(); @@ -124,7 +125,7 @@ export function createNamedTupleType( isInstantiableClass(namedTupleType) ? namedTupleType.shared.effectiveMetaclass : UnknownType.create() ); classType.shared.baseClasses.push(namedTupleType); - classType.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(errorNode); + classType.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(errorNode, nodeInfo); const classFields = ClassType.getSymbolTable(classType); classFields.set( diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts index d4ed00b39d5c..5f3f992af07a 100644 --- a/packages/pyright-internal/src/analyzer/operations.ts +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -21,7 +21,7 @@ import { UnaryOperationNode, } from '../parser/parseNodes'; import { OperatorType } from '../parser/tokenizerTypes'; -import { getFileInfo } from './analyzerNodeInfo'; +import { getInfoReader, AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { getEnclosingLambda, isWithinLoop, operatorSupportsChaining, printOperator } from './parseTreeUtils'; import { getScopeForNode } from './scopeUtils'; import { evaluateStaticBoolExpression } from './staticExpressions'; @@ -249,7 +249,8 @@ export function getTypeOfBinaryOperation( evaluator: TypeEvaluator, node: BinaryOperationNode, flags: EvalFlags, - inferenceContext: InferenceContext | undefined + inferenceContext: InferenceContext | undefined, + nodeInfo: AnalyzerNodeInfoAccessor ): TypeResult { const leftExpression = node.d.leftExpr; let rightExpression = node.d.rightExpr; @@ -266,7 +267,7 @@ export function getTypeOfBinaryOperation( operatorSupportsChaining(rightExpression.d.operator) ) { // Evaluate the right expression so it is type checked. - getTypeOfBinaryOperation(evaluator, rightExpression, flags, inferenceContext); + getTypeOfBinaryOperation(evaluator, rightExpression, flags, inferenceContext, nodeInfo); // Use the left side of the right expression for comparison purposes. rightExpression = rightExpression.d.leftExpr; @@ -381,7 +382,8 @@ export function getTypeOfBinaryOperation( leftTypeResult, rightTypeResult, adjustedRightType, - adjustedLeftType + adjustedLeftType, + nodeInfo ); } } @@ -769,9 +771,10 @@ export function getTypeOfTernaryOperation( evaluator: TypeEvaluator, node: TernaryNode, flags: EvalFlags, - inferenceContext: InferenceContext | undefined + inferenceContext: InferenceContext | undefined, + nodeInfo: AnalyzerNodeInfoAccessor ): TypeResult { - const fileInfo = getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if ((flags & EvalFlags.TypeExpression) !== 0) { evaluator.addDiagnostic(DiagnosticRule.reportInvalidTypeForm, LocMessage.ternaryNotAllowed(), node); @@ -822,11 +825,12 @@ function createUnionType( leftTypeResult: TypeResult, rightTypeResult: TypeResult, adjustedRightType: Type, - adjustedLeftType: Type + adjustedLeftType: Type, + nodeInfo: AnalyzerNodeInfoAccessor ): TypeResult { const leftExpression = node.d.leftExpr; const rightExpression = node.d.rightExpr; - const fileInfo = getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const unionNotationSupported = fileInfo.isStubFile || (flags & EvalFlags.ForwardRefs) !== 0 || @@ -1168,7 +1172,7 @@ function isExpressionLocalVariable(evaluator: TypeEvaluator, node: ExpressionNod return false; } - const currentScope = getScopeForNode(node); + const currentScope = getScopeForNode(node, getInfoReader(evaluator)); return currentScope === symbolWithScope.scope; } diff --git a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts index 2fcd46728ccb..1d6eafe5771d 100644 --- a/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts +++ b/packages/pyright-internal/src/analyzer/packageTypeVerifier.ts @@ -288,7 +288,7 @@ export class PackageTypeVerifier { }; const parseTree = sourceFile.getParserOutput()!.parseTree; - const moduleScope = getScopeForNode(parseTree)!; + const moduleScope = getScopeForNode(parseTree, this._program.analyzerNodeInfoContext)!; this._getPublicSymbolsInSymbolTable( publicSymbols, @@ -401,7 +401,7 @@ export class PackageTypeVerifier { if (sourceFile) { const parseTree = sourceFile.getParserOutput()!.parseTree; - const moduleScope = getScopeForNode(parseTree)!; + const moduleScope = getScopeForNode(parseTree, this._program.analyzerNodeInfoContext)!; this._getTypeKnownStatusForSymbolTable( report, diff --git a/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts b/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts deleted file mode 100644 index df16589c2374..000000000000 --- a/packages/pyright-internal/src/analyzer/parseTreeCleaner.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * parseTreeCleaner.ts - * Copyright (c) Microsoft Corporation. - * Licensed under the MIT license. - * Author: Eric Traut - * - * A parse tree walker that's used to clean any analysis - * information hanging off the parse tree. It's used when - * dependent files have been modified and the file requires - * reanalysis. Without this, we'd need to generate a fresh - * parse tree from scratch. - */ - -import { ModuleNode, ParseNode } from '../parser/parseNodes'; -import * as AnalyzerNodeInfo from './analyzerNodeInfo'; -import { ParseTreeWalker } from './parseTreeWalker'; - -export class ParseTreeCleanerWalker extends ParseTreeWalker { - private _parseTree: ModuleNode; - - constructor(parseTree: ModuleNode) { - super(); - - this._parseTree = parseTree; - } - - clean() { - this.walk(this._parseTree); - } - - override visitNode(node: ParseNode) { - AnalyzerNodeInfo.cleanNodeAnalysisInfo(node); - return super.visitNode(node); - } -} diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index b55c8e17e556..2d2412bf0a4f 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -25,6 +25,7 @@ import { ExecutionScopeNode, ExpressionNode, FunctionNode, + getParserStringAnnotation, ImportFromNode, IndexNode, LambdaNode, @@ -48,7 +49,6 @@ import { OperatorTypeNameMap, ParseNodeTypeNameMap } from '../parser/parseNodeUt import { ParseFileResults } from '../parser/parser'; import { Tokenizer, TokenizerOutput } from '../parser/tokenizer'; import { KeywordType, OperatorType, StringToken, StringTokenFlags, Token, TokenType } from '../parser/tokenizerTypes'; -import { getScope } from './analyzerNodeInfo'; import { ParseTreeWalker, getChildNodes } from './parseTreeWalker'; import { TypeVarScopeId } from './types'; @@ -87,25 +87,36 @@ export function getNodeDepth(node: ParseNode): number { export function findNodeByPosition( node: ParseNode, position: Position, - lines: TextRangeCollection + lines: TextRangeCollection, + reader?: AnalyzerNodeInfo.AnalyzerNodeInfoReader ): ParseNode | undefined { const offset = convertPositionToOffset(position, lines); if (offset === undefined) { return undefined; } - return findNodeByOffset(node, offset); + return findNodeByOffset(node, offset, reader); } // Returns the deepest node that contains the specified offset. -export function findNodeByOffset(node: ParseNode, offset: number): ParseNode | undefined { +export function findNodeByOffset( + node: ParseNode, + offset: number, + reader?: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): ParseNode | undefined { if (!TextRange.overlaps(node, offset)) { return undefined; } + // When a reader is provided, descend into evaluator-discovered (tier-2) string + // annotations too. Otherwise getChildNodes defaults to parser-tier annotations. + const getStringAnnotation = reader + ? (n: StringListNode) => AnalyzerNodeInfo.getStringAnnotation(n, reader) + : undefined; + // The range is found within this node. See if we can localize it // further by checking its children. - let children = getChildNodes(node); + let children = getChildNodes(node, getStringAnnotation); if (isCompliantWithNodeRangeRules(node) && children.length > 20) { // Use binary search to find the child to visit. This should be helpful // when there are many siblings, such as statements in a module/suite @@ -140,7 +151,7 @@ export function findNodeByOffset(node: ParseNode, offset: number): ParseNode | u continue; } - const containingChild = findNodeByOffset(child, offset); + const containingChild = findNodeByOffset(child, offset, reader); if (containingChild) { // For augmented assignments, prefer the dest expression, which is a clone // of the left expression but is used to hold the type of the operation result. @@ -270,8 +281,9 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla } case ParseNodeType.StringList: { - if (flags & PrintExpressionFlags.ForwardDeclarations && node.d.annotation) { - return printExpression(node.d.annotation, flags); + const annotation = getParserStringAnnotation(node); + if (flags & PrintExpressionFlags.ForwardDeclarations && annotation) { + return printExpression(annotation, flags); } else { return node.d.strings .map((str) => { @@ -709,8 +721,11 @@ export function getEnclosingFunction(node: ParseNode): FunctionNode | undefined // is within the scope. That means if the node is within a class decorator // (for example), it will be considered part of its parent node rather than // the class node. -export function getEnclosingFunctionEvaluationScope(node: ParseNode): FunctionNode | undefined { - let curNode = getEvaluationScopeNode(node).node; +export function getEnclosingFunctionEvaluationScope( + node: ParseNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): FunctionNode | undefined { + let curNode = getEvaluationScopeNode(node, nodeInfo).node; while (curNode) { if (curNode.nodeType === ParseNodeType.Function) { @@ -721,7 +736,7 @@ export function getEnclosingFunctionEvaluationScope(node: ParseNode): FunctionNo return undefined; } - curNode = getEvaluationScopeNode(curNode.parent).node; + curNode = getEvaluationScopeNode(curNode.parent, nodeInfo).node; } return undefined; @@ -813,13 +828,14 @@ export function getEnclosingSuiteOrModule( } export function getEvaluationNodeForAssignmentExpression( - node: AssignmentExpressionNode + node: AssignmentExpressionNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader ): LambdaNode | FunctionNode | ModuleNode | ClassNode | undefined { // PEP 572 indicates that the evaluation node for an assignment expression // target within a list comprehension is contained within a lambda, // function or module, but not a class. let sawComprehension = false; - let curNode: ParseNode | undefined = getEvaluationScopeNode(node).node; + let curNode: ParseNode | undefined = getEvaluationScopeNode(node, nodeInfo).node; while (curNode !== undefined) { switch (curNode.nodeType) { @@ -833,7 +849,7 @@ export function getEvaluationNodeForAssignmentExpression( case ParseNodeType.Comprehension: sawComprehension = true; - curNode = getEvaluationScopeNode(curNode.parent!).node; + curNode = getEvaluationScopeNode(curNode.parent!, nodeInfo).node; break; default: @@ -846,7 +862,10 @@ export function getEvaluationNodeForAssignmentExpression( // Returns the parse node corresponding to the scope that is used to evaluate // a symbol referenced in the specified node. -export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { +export function getEvaluationScopeNode( + node: ParseNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): EvaluationScopeInfo { let prevNode: ParseNode | undefined; let prevPrevNode: ParseNode | undefined; let curNode: ParseNode | undefined = node; @@ -895,14 +914,14 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { } if (isParamNameNode) { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { return { node: curNode }; } } } if (prevNode === curNode.d.suite) { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { return { node: curNode, useChainedModuleLevelScopes: true }; } } @@ -912,7 +931,7 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { // they are evaluated within the function's parent scope. if (curNode.d.typeParams) { const scopeNode = curNode.d.typeParams; - if (getScope(scopeNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(scopeNode, nodeInfo) !== undefined) { return { node: scopeNode, useProxyScope: true, useChainedModuleLevelScopes }; } } @@ -922,12 +941,12 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { case ParseNodeType.Lambda: { if (curNode.d.params.some((param) => param === prevNode)) { if (isParamNameNode) { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { return { node: curNode }; } } } else if (!prevNode || prevNode === curNode.d.expr) { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { return { node: curNode, useChainedModuleLevelScopes: true }; } } @@ -945,7 +964,7 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { } if (prevNode === curNode.d.suite) { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { return { node: curNode }; } } @@ -960,7 +979,7 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { // they are evaluated within the class' parent scope. if (curNode.d.typeParams) { const scopeNode = curNode.d.typeParams; - if (getScope(scopeNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(scopeNode, nodeInfo) !== undefined) { return { node: scopeNode, useProxyScope: true, useChainedModuleLevelScopes: true }; } } @@ -968,7 +987,7 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { } case ParseNodeType.Comprehension: { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { // The iterable expression of the first subnode of a list comprehension // is evaluated within the scope of its parent. const isFirstIterableExpr = @@ -993,7 +1012,7 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { case ParseNodeType.TypeAlias: { if (prevNode === curNode.d.expr && curNode.d.typeParams) { const scopeNode = curNode.d.typeParams; - if (getScope(scopeNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(scopeNode, nodeInfo) !== undefined) { return { node: scopeNode }; } } @@ -1001,7 +1020,7 @@ export function getEvaluationScopeNode(node: ParseNode): EvaluationScopeInfo { } case ParseNodeType.Module: { - if (getScope(curNode) !== undefined) { + if (AnalyzerNodeInfo.getScope(curNode, nodeInfo) !== undefined) { return { node: curNode, useChainedModuleLevelScopes }; } break; @@ -1053,8 +1072,11 @@ export function getTypeVarScopeNode(node: ParseNode): TypeParameterScopeNode | u // Returns the parse node corresponding to the scope that is used // for executing the code referenced in the specified node. -export function getExecutionScopeNode(node: ParseNode): ExecutionScopeNode { - let evaluationScope = getEvaluationScopeNode(node).node; +export function getExecutionScopeNode( + node: ParseNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): ExecutionScopeNode { + let evaluationScope = getEvaluationScopeNode(node, nodeInfo).node; // Classes are not considered execution scope because they are executed // within the context of their containing module or function. Likewise, @@ -1066,7 +1088,7 @@ export function getExecutionScopeNode(node: ParseNode): ExecutionScopeNode { evaluationScope.nodeType === ParseNodeType.Class || evaluationScope.nodeType === ParseNodeType.Comprehension ) { - evaluationScope = getEvaluationScopeNode(evaluationScope.parent!).node; + evaluationScope = getEvaluationScopeNode(evaluationScope.parent!, nodeInfo).node; } return evaluationScope; @@ -1419,7 +1441,11 @@ export function isWithinDefaultParamInitializer(node: ParseNode) { return false; } -export function isWithinTypeAnnotation(node: ParseNode, requireQuotedAnnotation: boolean) { +export function isWithinTypeAnnotation( + node: ParseNode, + requireQuotedAnnotation: boolean, + nodeInfo?: AnalyzerNodeInfo.AnalyzerNodeInfoReader +) { let curNode: ParseNode | undefined = node; let prevNode: ParseNode | undefined; let isQuoted = false; @@ -1452,7 +1478,13 @@ export function isWithinTypeAnnotation(node: ParseNode, requireQuotedAnnotation: return true; } - if (curNode.nodeType === ParseNodeType.StringList && prevNode === curNode.d.annotation) { + const stringAnnotation = + curNode.nodeType === ParseNodeType.StringList + ? nodeInfo + ? AnalyzerNodeInfo.getStringAnnotation(curNode, nodeInfo) + : getParserStringAnnotation(curNode) + : undefined; + if (stringAnnotation && prevNode === stringAnnotation) { isQuoted = true; } @@ -2088,9 +2120,9 @@ export function getModuleNode(node: ParseNode) { return current; } -export function getFileInfoFromNode(node: ParseNode) { +export function getFileInfoFromNode(node: ParseNode, reader: AnalyzerNodeInfo.AnalyzerNodeInfoReader) { const current = getModuleNode(node); - return current ? AnalyzerNodeInfo.getFileInfo(current) : undefined; + return current ? AnalyzerNodeInfo.getFileInfo(current, reader) : undefined; } export function isFunctionSuiteEmpty(node: FunctionNode) { @@ -2301,6 +2333,25 @@ export function getFirstNameOfDottedName(node: MemberAccessNode | NameNode): Nam return undefined; } +// Returns the MemberAccessNode at or directly enclosing the given node: the node +// itself when it is a member access, otherwise its parent when that is a member +// access. Used by code actions that operate on `a.b` style access. +export function getEnclosingMemberAccessNode(node: ParseNode | undefined): MemberAccessNode | undefined { + if (!node) { + return undefined; + } + + if (node.nodeType === ParseNodeType.MemberAccess) { + return node; + } + + if (node.parent?.nodeType === ParseNodeType.MemberAccess) { + return node.parent; + } + + return undefined; +} + export function isFirstNameOfDottedName(node: NameNode): boolean { // ex) [A] or [A].B.C.D if (node.parent?.nodeType !== ParseNodeType.MemberAccess) { @@ -2656,7 +2707,7 @@ export function getVariableDocStringNode(node: ExpressionNode): StringListNode | // Creates an ID that identifies this parse node in a way that will // not change each time the file is parsed (unless, of course, the // file contents change). -export function getScopeIdForNode(node: ParseNode): string { +export function getScopeIdForNode(node: ParseNode, nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader): string { let name = ''; if (node.nodeType === ParseNodeType.Class) { name = node.d.name.d.value; @@ -2664,13 +2715,16 @@ export function getScopeIdForNode(node: ParseNode): string { name = node.d.name.d.value; } - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = AnalyzerNodeInfo.getFileInfo(node, nodeInfo); return `${fileInfo.fileId}.${node.start.toString()}-${name}`; } // Walks up the parse tree and finds all scopes that can provide // a context for a TypeVar and returns the scope ID for each. -export function getTypeVarScopesForNode(node: ParseNode): TypeVarScopeId[] { +export function getTypeVarScopesForNode( + node: ParseNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): TypeVarScopeId[] { const scopeIds: TypeVarScopeId[] = []; let curNode: ParseNode | undefined = node; @@ -2680,7 +2734,7 @@ export function getTypeVarScopesForNode(node: ParseNode): TypeVarScopeId[] { break; } - scopeIds.push(getScopeIdForNode(curNode)); + scopeIds.push(getScopeIdForNode(curNode, nodeInfo)); curNode = curNode.parent; } diff --git a/packages/pyright-internal/src/analyzer/parseTreeWalker.ts b/packages/pyright-internal/src/analyzer/parseTreeWalker.ts index f5a83ed0888e..c345091a5fa9 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeWalker.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeWalker.ts @@ -37,6 +37,7 @@ import { FormatStringNode, FunctionAnnotationNode, FunctionNode, + getParserStringAnnotation, GlobalNode, IfNode, ImportAsNode, @@ -91,256 +92,10 @@ import { YieldFromNode, YieldNode, } from '../parser/parseNodes'; +import { getChildNodes } from '../parser/parseTreeUtils'; +import * as AnalyzerNodeInfo from './analyzerNodeInfo'; -// Get child nodes of the given node. -export function getChildNodes(node: ParseNode): (ParseNode | undefined)[] { - switch (node.nodeType) { - case ParseNodeType.Error: - return [node.d.child, ...(node.d.decorators ?? [])]; - - case ParseNodeType.Argument: - return [node.d.name, node.d.valueExpr]; - - case ParseNodeType.Assert: - return [node.d.testExpr, node.d.exceptionExpr]; - - case ParseNodeType.AssignmentExpression: - return [node.d.name, node.d.rightExpr]; - - case ParseNodeType.Assignment: - return [node.d.leftExpr, node.d.rightExpr, node.d.annotationComment]; - - case ParseNodeType.AugmentedAssignment: - return [node.d.leftExpr, node.d.rightExpr]; - - case ParseNodeType.Await: - return [node.d.expr]; - - case ParseNodeType.BinaryOperation: - return [node.d.leftExpr, node.d.rightExpr]; - - case ParseNodeType.Break: - return []; - - case ParseNodeType.Call: - return [node.d.leftExpr, ...node.d.args]; - - case ParseNodeType.Case: - return [node.d.pattern, node.d.guardExpr, node.d.suite]; - - case ParseNodeType.Class: - return [...node.d.decorators, node.d.name, node.d.typeParams, ...node.d.arguments, node.d.suite]; - - case ParseNodeType.Comprehension: - return [node.d.expr, ...node.d.forIfNodes]; - - case ParseNodeType.ComprehensionFor: - return [node.d.targetExpr, node.d.iterableExpr]; - - case ParseNodeType.ComprehensionIf: - return [node.d.testExpr]; - - case ParseNodeType.Constant: - return []; - - case ParseNodeType.Continue: - return []; - - case ParseNodeType.Decorator: - return [node.d.expr]; - - case ParseNodeType.Del: - return node.d.targets; - - case ParseNodeType.Dictionary: - return node.d.items; - - case ParseNodeType.DictionaryExpandEntry: - return [node.d.expr]; - - case ParseNodeType.DictionaryKeyEntry: - return [node.d.keyExpr, node.d.valueExpr]; - - case ParseNodeType.Ellipsis: - return []; - - case ParseNodeType.If: - return [node.d.testExpr, node.d.ifSuite, node.d.elseSuite]; - - case ParseNodeType.Import: - return node.d.list; - - case ParseNodeType.ImportAs: - return [node.d.module, node.d.alias]; - - case ParseNodeType.ImportFrom: - return [node.d.module, ...node.d.imports]; - - case ParseNodeType.ImportFromAs: - return [node.d.name, node.d.alias]; - - case ParseNodeType.Index: - return [node.d.leftExpr, ...node.d.items]; - - case ParseNodeType.Except: - return [node.d.typeExpr, node.d.name, node.d.exceptSuite]; - - case ParseNodeType.For: - return [node.d.targetExpr, node.d.iterableExpr, node.d.forSuite, node.d.elseSuite]; - - case ParseNodeType.FormatString: - return [...node.d.fieldExprs, ...(node.d.formatExprs ?? [])]; - - case ParseNodeType.Function: - return [ - ...node.d.decorators, - node.d.name, - node.d.typeParams, - ...node.d.params, - node.d.returnAnnotation, - node.d.funcAnnotationComment, - node.d.suite, - ]; - - case ParseNodeType.FunctionAnnotation: - return [...node.d.paramAnnotations, node.d.returnAnnotation]; - - case ParseNodeType.Global: - return node.d.targets; - - case ParseNodeType.Lambda: - return [...node.d.params, node.d.expr]; - - case ParseNodeType.List: - return node.d.items; - - case ParseNodeType.Match: - return [node.d.expr, ...node.d.cases]; - - case ParseNodeType.MemberAccess: - return [node.d.leftExpr, node.d.member]; - - case ParseNodeType.ModuleName: - return node.d.nameParts; - - case ParseNodeType.Module: - return [...node.d.statements]; - - case ParseNodeType.Name: - return []; - - case ParseNodeType.Nonlocal: - return node.d.targets; - - case ParseNodeType.Number: - return []; - - case ParseNodeType.Parameter: - return [node.d.name, node.d.annotation, node.d.annotationComment, node.d.defaultValue]; - - case ParseNodeType.Pass: - return []; - - case ParseNodeType.PatternAs: - return [...node.d.orPatterns, node.d.target]; - - case ParseNodeType.PatternClass: - return [node.d.className, ...node.d.args]; - - case ParseNodeType.PatternClassArgument: - return [node.d.name, node.d.pattern]; - - case ParseNodeType.PatternCapture: - return [node.d.target]; - - case ParseNodeType.PatternLiteral: - return [node.d.expr]; - - case ParseNodeType.PatternMappingExpandEntry: - return [node.d.target]; - - case ParseNodeType.PatternMappingKeyEntry: - return [node.d.keyPattern, node.d.valuePattern]; - - case ParseNodeType.PatternMapping: - return [...node.d.entries]; - - case ParseNodeType.PatternSequence: - return [...node.d.entries]; - - case ParseNodeType.PatternValue: - return [node.d.expr]; - - case ParseNodeType.Raise: - return [node.d.expr, node.d.fromExpr]; - - case ParseNodeType.Return: - return [node.d.expr]; - - case ParseNodeType.Set: - return node.d.items; - - case ParseNodeType.Slice: - return [node.d.startValue, node.d.endValue, node.d.stepValue]; - - case ParseNodeType.StatementList: - return node.d.statements; - - case ParseNodeType.StringList: - return [node.d.annotation, ...node.d.strings]; - - case ParseNodeType.String: - return []; - - case ParseNodeType.Suite: - return [...node.d.statements]; - - case ParseNodeType.Ternary: - return [node.d.ifExpr, node.d.testExpr, node.d.elseExpr]; - - case ParseNodeType.Tuple: - return node.d.items; - - case ParseNodeType.Try: - return [node.d.trySuite, ...node.d.exceptClauses, node.d.elseSuite, node.d.finallySuite]; - - case ParseNodeType.TypeAlias: - return [node.d.name, node.d.typeParams, node.d.expr]; - - case ParseNodeType.TypeAnnotation: - return [node.d.valueExpr, node.d.annotation]; - - case ParseNodeType.TypeParameter: - return [node.d.name, node.d.boundExpr, node.d.defaultExpr]; - - case ParseNodeType.TypeParameterList: - return [...node.d.params]; - - case ParseNodeType.UnaryOperation: - return [node.d.expr]; - - case ParseNodeType.Unpack: - return [node.d.expr]; - - case ParseNodeType.While: - return [node.d.testExpr, node.d.whileSuite, node.d.elseSuite]; - - case ParseNodeType.With: - return [...node.d.withItems, node.d.suite]; - - case ParseNodeType.WithItem: - return [node.d.expr, node.d.target]; - - case ParseNodeType.Yield: - return [node.d.expr]; - - case ParseNodeType.YieldFrom: - return [node.d.expr]; - - default: - debug.assertNever(node, `Unknown node type ${node}`); - } -} +export { getChildNodes }; // To use this class, create a subclass and override the // visitXXX methods that you want to handle. @@ -907,8 +662,14 @@ export class ParseTreeVisitor { // To use this class, create a subclass and override the // visitXXX methods that you want to handle. export class ParseTreeWalker extends ParseTreeVisitor { - constructor() { + // Bound once per walker so `visitNode` does not allocate a fresh closure for every visited + // node (binder + checker walk every node of every file). `getChildNodes` invokes this only + // for `StringListNode`s to decide tier-1/tier-2 annotation descent. + private readonly _getStringAnnotation: (node: StringListNode) => ReturnType; + + constructor(private readonly _annotationNodeInfo?: AnalyzerNodeInfo.AnalyzerNodeInfoReader) { super(/* default */ true); + this._getStringAnnotation = (node) => this.getStringAnnotation(node); } walk(node: ParseNode): void { @@ -930,6 +691,27 @@ export class ParseTreeWalker extends ParseTreeVisitor { // If the method returns false, we assume that the handler has already handled the // child nodes, so an empty list is returned. visitNode(node: ParseNode): ParseNodeArray { - return this.visit(node) ? getChildNodes(node) : []; + return this.visit(node) ? getChildNodes(node, this._getStringAnnotation) : []; + } + + // Resolves the effective string annotation used to expand child nodes during traversal. + // + // When an `AnalyzerNodeInfoReader` was supplied (Program-aware walkers that must observe + // evaluator-discovered annotations, such as the checker and the semantic-token/rename/ + // references walkers), the combined accessor is used so both tier-1 parser annotations and + // tier-2 evaluator-discovered annotations (e.g. `cast("Data", v)`) are visited. When no reader + // was supplied, the walker is deliberately syntax-only and sees tier-1 parser annotations + // exclusively. The binder intentionally stays syntax-only: tier-2 annotations do not exist yet + // at bind time, so tier-1 descent is both sufficient and correct there. + // + // Footgun: this default is safe (tier-1 only) but silent. A future Program-aware walker that + // forgets to forward a reader would quietly miss tier-2 annotations rather than fail loudly. + // Any walker that must observe evaluator-discovered annotations MUST pass the reader through + // its constructor. See parseTreeBindingKey.test.ts for the cross-owner coverage that locks + // in the reader-forwarding contract. + protected getStringAnnotation(node: StringListNode) { + return this._annotationNodeInfo + ? AnalyzerNodeInfo.getStringAnnotation(node, this._annotationNodeInfo) + : getParserStringAnnotation(node); } } diff --git a/packages/pyright-internal/src/analyzer/patternMatching.ts b/packages/pyright-internal/src/analyzer/patternMatching.ts index 1751b51ab75a..9346cc5d16d3 100644 --- a/packages/pyright-internal/src/analyzer/patternMatching.ts +++ b/packages/pyright-internal/src/analyzer/patternMatching.ts @@ -28,6 +28,7 @@ import { PatternSequenceNode, PatternValueNode, } from '../parser/parseNodes'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { CodeFlowReferenceExpressionNode } from './codeFlowTypes'; import { addConstraintsForExpectedType } from './constraintSolver'; import { ConstraintTracker } from './constraintTracker'; @@ -140,11 +141,12 @@ export function narrowTypeBasedOnPattern( evaluator: TypeEvaluator, type: Type, pattern: PatternAtomNode, - isPositiveTest: boolean + isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { switch (pattern.nodeType) { case ParseNodeType.PatternSequence: { - return narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTest); + return narrowTypeBasedOnSequencePattern(evaluator, type, pattern, isPositiveTest, nodeInfo); } case ParseNodeType.PatternLiteral: { @@ -152,15 +154,15 @@ export function narrowTypeBasedOnPattern( } case ParseNodeType.PatternClass: { - return narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest); + return narrowTypeBasedOnClassPattern(evaluator, type, pattern, isPositiveTest, nodeInfo); } case ParseNodeType.PatternAs: { - return narrowTypeBasedOnAsPattern(evaluator, type, pattern, isPositiveTest); + return narrowTypeBasedOnAsPattern(evaluator, type, pattern, isPositiveTest, nodeInfo); } case ParseNodeType.PatternMapping: { - return narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTest); + return narrowTypeBasedOnMappingPattern(evaluator, type, pattern, isPositiveTest, nodeInfo); } case ParseNodeType.PatternValue: { @@ -180,7 +182,12 @@ export function narrowTypeBasedOnPattern( // Determines whether this pattern (or part of the pattern) in // this case statement will never be matched. -export function checkForUnusedPattern(evaluator: TypeEvaluator, pattern: PatternAtomNode, subjectType: Type): void { +export function checkForUnusedPattern( + evaluator: TypeEvaluator, + pattern: PatternAtomNode, + subjectType: Type, + nodeInfo: AnalyzerNodeInfoAccessor +): void { if (isNever(subjectType)) { reportUnnecessaryPattern(evaluator, pattern, subjectType); } else if (pattern.nodeType === ParseNodeType.PatternAs && pattern.d.orPatterns.length > 1) { @@ -190,17 +197,30 @@ export function checkForUnusedPattern(evaluator: TypeEvaluator, pattern: Pattern evaluator, subjectType, orPattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); if (isNever(subjectTypeMatch)) { reportUnnecessaryPattern(evaluator, orPattern, subjectType); } - subjectType = narrowTypeBasedOnPattern(evaluator, subjectType, orPattern, /* isPositiveTest */ false); + subjectType = narrowTypeBasedOnPattern( + evaluator, + subjectType, + orPattern, + /* isPositiveTest */ false, + nodeInfo + ); }); } else { - const subjectTypeMatch = narrowTypeBasedOnPattern(evaluator, subjectType, pattern, /* isPositiveTest */ true); + const subjectTypeMatch = narrowTypeBasedOnPattern( + evaluator, + subjectType, + pattern, + /* isPositiveTest */ true, + nodeInfo + ); if (isNever(subjectTypeMatch)) { reportUnnecessaryPattern(evaluator, pattern, subjectType); @@ -212,11 +232,12 @@ function narrowTypeBasedOnSequencePattern( evaluator: TypeEvaluator, type: Type, pattern: PatternSequenceNode, - isPositiveTest: boolean + isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { let usingTupleExpansion = false; type = transformPossibleRecursiveTypeAlias(type); - let sequenceInfo = getSequencePatternInfo(evaluator, pattern, type); + let sequenceInfo = getSequencePatternInfo(evaluator, pattern, type, nodeInfo); // Further narrow based on pattern entry types. sequenceInfo = sequenceInfo.filter((entry) => { @@ -278,7 +299,13 @@ function narrowTypeBasedOnSequencePattern( ); unnarrowedEntryTypes.push(entryType); - const narrowedEntryType = narrowTypeBasedOnPattern(evaluator, entryType, sequenceEntry, isPositiveTest); + const narrowedEntryType = narrowTypeBasedOnPattern( + evaluator, + entryType, + sequenceEntry, + isPositiveTest, + nodeInfo + ); if (isPositiveTest) { if (index === pattern.d.starEntryIndex) { @@ -427,13 +454,20 @@ function narrowTypeBasedOnAsPattern( evaluator: TypeEvaluator, type: Type, pattern: PatternAsNode, - isPositiveTest: boolean + isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { let remainingType = type; if (!isPositiveTest) { pattern.d.orPatterns.forEach((subpattern) => { - remainingType = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern, /* isPositiveTest */ false); + remainingType = narrowTypeBasedOnPattern( + evaluator, + remainingType, + subpattern, + /* isPositiveTest */ false, + nodeInfo + ); }); return remainingType; } @@ -443,9 +477,16 @@ function narrowTypeBasedOnAsPattern( evaluator, remainingType, subpattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo + ); + remainingType = narrowTypeBasedOnPattern( + evaluator, + remainingType, + subpattern, + /* isPositiveTest */ false, + nodeInfo ); - remainingType = narrowTypeBasedOnPattern(evaluator, remainingType, subpattern, /* isPositiveTest */ false); return narrowedSubtype; }); return combineTypes(narrowedTypes); @@ -455,7 +496,8 @@ function narrowTypeBasedOnMappingPattern( evaluator: TypeEvaluator, type: Type, pattern: PatternMappingNode, - isPositiveTest: boolean + isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { type = transformPossibleRecursiveTypeAlias(type); @@ -545,7 +587,8 @@ function narrowTypeBasedOnMappingPattern( evaluator, evaluator.getBuiltInObject(pattern, 'str'), mappingEntry.d.keyPattern, - isPositiveTest + isPositiveTest, + nodeInfo ); if (isNever(narrowedKeyType)) { @@ -569,7 +612,8 @@ function narrowTypeBasedOnMappingPattern( evaluator, valueEntry.valueType, mappingEntry.d.valuePattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); if (!isNever(narrowedValueType)) { // If this is a "NotRequired" entry that has not yet been demonstrated @@ -617,13 +661,15 @@ function narrowTypeBasedOnMappingPattern( evaluator, mappingSubtypeInfo.dictTypeArgs.key, mappingEntry.d.keyPattern, - isPositiveTest + isPositiveTest, + nodeInfo ); const narrowedValueType = narrowTypeBasedOnPattern( evaluator, mappingSubtypeInfo.dictTypeArgs.value, mappingEntry.d.valuePattern, - isPositiveTest + isPositiveTest, + nodeInfo ); if (isNever(narrowedKeyType) || isNever(narrowedValueType)) { isPlausibleMatch = false; @@ -791,7 +837,8 @@ function narrowTypeBasedOnClassPattern( evaluator: TypeEvaluator, type: Type, pattern: PatternClassNode, - isPositiveTest: boolean + isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { let exprType = evaluator.getTypeOfExpression(pattern.d.className, EvalFlags.CallBaseDefaults).type; @@ -905,7 +952,8 @@ function narrowTypeBasedOnClassPattern( index, positionalArgNames, subjectSubtypeExpanded, - isPositiveTest + isPositiveTest, + nodeInfo ); if (!isNever(narrowedArgType)) { @@ -1110,7 +1158,8 @@ function narrowTypeBasedOnClassPattern( index, positionalArgNames, resultType, - isPositiveTest + isPositiveTest, + nodeInfo ); if (isNever(narrowedArgType)) { @@ -1162,7 +1211,8 @@ function narrowTypeOfClassPatternArg( argIndex: number, positionalArgNames: string[], matchType: Type, - isPositiveTest: boolean + isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ) { let argName: string | undefined; @@ -1233,7 +1283,7 @@ function narrowTypeOfClassPatternArg( } } - return narrowTypeBasedOnPattern(evaluator, argType, arg.d.pattern, isPositiveTest); + return narrowTypeBasedOnPattern(evaluator, argType, arg.d.pattern, isPositiveTest, nodeInfo); } function narrowTypeBasedOnValuePattern( @@ -1425,7 +1475,8 @@ function getMappingPatternInfo(evaluator: TypeEvaluator, type: Type, node: Patte function getSequencePatternInfo( evaluator: TypeEvaluator, pattern: PatternSequenceNode, - type: Type + type: Type, + nodeInfo: AnalyzerNodeInfoAccessor ): SequencePatternInfo[] { const patternEntryCount = pattern.d.entries.length; const patternStarEntryIndex = pattern.d.starEntryIndex; @@ -1573,7 +1624,8 @@ function getSequencePatternInfo( evaluator, typeArg, subPattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); if (isNever(narrowedType)) { @@ -1626,7 +1678,8 @@ function getSequencePatternInfo( evaluator, typeArg, subPattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); if (isNever(narrowedType)) { @@ -1695,7 +1748,7 @@ function getSequencePatternInfo( ClassType.cloneAsInstance(sequenceType), subtype, sequenceConstraints, - getTypeVarScopesForNode(pattern), + getTypeVarScopesForNode(pattern, nodeInfo), pattern.start ) ) { @@ -1809,14 +1862,15 @@ export function assignTypeToPatternTargets( evaluator: TypeEvaluator, type: Type, isTypeIncomplete: boolean, - pattern: PatternAtomNode + pattern: PatternAtomNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { // Further narrow the type based on this pattern. - const narrowedType = narrowTypeBasedOnPattern(evaluator, type, pattern, /* positiveTest */ true); + const narrowedType = narrowTypeBasedOnPattern(evaluator, type, pattern, /* positiveTest */ true, nodeInfo); switch (pattern.nodeType) { case ParseNodeType.PatternSequence: { - const sequenceInfo = getSequencePatternInfo(evaluator, pattern, narrowedType).filter( + const sequenceInfo = getSequencePatternInfo(evaluator, pattern, narrowedType, nodeInfo).filter( (seqInfo) => !seqInfo.isDefiniteNoMatch ); @@ -1835,7 +1889,7 @@ export function assignTypeToPatternTargets( ) ); - assignTypeToPatternTargets(evaluator, entryType, isTypeIncomplete, entry); + assignTypeToPatternTargets(evaluator, entryType, isTypeIncomplete, entry, nodeInfo); }); break; } @@ -1851,7 +1905,7 @@ export function assignTypeToPatternTargets( let runningNarrowedType = narrowedType; pattern.d.orPatterns.forEach((orPattern) => { - assignTypeToPatternTargets(evaluator, runningNarrowedType, isTypeIncomplete, orPattern); + assignTypeToPatternTargets(evaluator, runningNarrowedType, isTypeIncomplete, orPattern, nodeInfo); // OR patterns are evaluated left to right, so we can narrow // the type as we go. @@ -1859,7 +1913,8 @@ export function assignTypeToPatternTargets( evaluator, runningNarrowedType, orPattern, - /* positiveTest */ false + /* positiveTest */ false, + nodeInfo ); }); break; @@ -1913,7 +1968,8 @@ export function assignTypeToPatternTargets( evaluator, evaluator.getBuiltInObject(pattern, 'str'), mappingEntry.d.keyPattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); keyTypes.push(keyType); @@ -1943,7 +1999,8 @@ export function assignTypeToPatternTargets( evaluator, mappingSubtypeInfo.dictTypeArgs.key, mappingEntry.d.keyPattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); keyTypes.push(keyType); valueTypes.push( @@ -1951,7 +2008,8 @@ export function assignTypeToPatternTargets( evaluator, mappingSubtypeInfo.dictTypeArgs.value, mappingEntry.d.valuePattern, - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ) ); } else if (mappingEntry.nodeType === ParseNodeType.PatternMappingExpandEntry) { @@ -1965,8 +2023,20 @@ export function assignTypeToPatternTargets( const valueType = combineTypes(valueTypes); if (mappingEntry.nodeType === ParseNodeType.PatternMappingKeyEntry) { - assignTypeToPatternTargets(evaluator, keyType, isTypeIncomplete, mappingEntry.d.keyPattern); - assignTypeToPatternTargets(evaluator, valueType, isTypeIncomplete, mappingEntry.d.valuePattern); + assignTypeToPatternTargets( + evaluator, + keyType, + isTypeIncomplete, + mappingEntry.d.keyPattern, + nodeInfo + ); + assignTypeToPatternTargets( + evaluator, + valueType, + isTypeIncomplete, + mappingEntry.d.valuePattern, + nodeInfo + ); } else if (mappingEntry.nodeType === ParseNodeType.PatternMappingExpandEntry) { const dictClass = evaluator.getBuiltInType(pattern, 'dict'); const strType = evaluator.getBuiltInObject(pattern, 'str'); @@ -2014,7 +2084,8 @@ export function assignTypeToPatternTargets( index, positionalArgNames, ClassType.cloneAsInstantiable(expandedSubtype), - /* isPositiveTest */ true + /* isPositiveTest */ true, + nodeInfo ); argTypes[index].push(narrowedArgType); }); @@ -2030,7 +2101,13 @@ export function assignTypeToPatternTargets( }); pattern.d.args.forEach((arg, index) => { - assignTypeToPatternTargets(evaluator, combineTypes(argTypes[index]), isTypeIncomplete, arg.d.pattern); + assignTypeToPatternTargets( + evaluator, + combineTypes(argTypes[index]), + isTypeIncomplete, + arg.d.pattern, + nodeInfo + ); }); break; } diff --git a/packages/pyright-internal/src/analyzer/program.ts b/packages/pyright-internal/src/analyzer/program.ts index a39446302118..76aa39131e24 100644 --- a/packages/pyright-internal/src/analyzer/program.ts +++ b/packages/pyright-internal/src/analyzer/program.ts @@ -29,6 +29,7 @@ import '../common/serviceProviderExtensions'; import { Range, TextRange, doRangesIntersect } from '../common/textRange'; import { Duration, timingStats } from '../common/timing'; import { Uri } from '../common/uri/uri'; +import { tryRealpath } from '../common/uri/uriUtils'; import { ParseFileResults, ParserOutput } from '../parser/parser'; import { RequiringAnalysisCount } from './analysis'; import { AbsoluteModuleDescriptor, ImportLookupResult, LookupImportOptions } from './analyzerFileInfo'; @@ -63,7 +64,6 @@ function isTaggedHintDiagnostic(diag: Diagnostic): boolean { diag.category === DiagnosticCategory.Deprecated ); } - export interface MaxAnalysisTime { // Maximum number of ms to analyze when there are open files // that require analysis. This number is usually kept relatively @@ -138,6 +138,17 @@ export class Program { private readonly _console: ConsoleInterface; private readonly _sourceFileList: SourceFileInfo[] = []; private readonly _sourceFileMap = new Map(); + + // A filesystem symlink and its target are tracked as separate SourceFileInfo + // entries (the source-file map is keyed by uri.key with no realpath dedup). + // These indexes let invalidation bridge such aliases so a change routed to one + // alias also re-checks consumers of the other. + // _realpathAliasMap groups uri.keys that share a realpath (only populated for + // symlink-involved groups); _realpathByUriKey caches each user file's realpath + // key so removal/lookup don't recompute it. + private readonly _realpathAliasMap = new Map>(); + private readonly _realpathByUriKey = new Map(); + private readonly _analyzerNodeInfoContext = new AnalyzerNodeInfo.AnalyzerNodeInfoContextImpl(); private readonly _cellChainIndex = new CellChainIndex( () => this._sourceFileList, (uri) => this.getSourceFileInfo(uri) @@ -219,15 +230,25 @@ export class Program { return this._cellChainIndex; } + get analyzerNodeInfoContext(): AnalyzerNodeInfo.AnalyzerNodeInfoContext { + return this._analyzerNodeInfoContext; + } + + get analyzerNodeInfoReader(): AnalyzerNodeInfo.AnalyzerNodeInfoReader { + return this._analyzerNodeInfoContext; + } + dispose() { this.disposeInternal(this._disposed); + this._analyzerNodeInfoContext.dispose(); this._cacheManager.unregisterCacheOwner(this); this._disposed = true; } enterEditMode() { this._editModeTracker.enable(); + this._analyzerNodeInfoContext.enterOverlay(); } exitEditMode() { @@ -280,6 +301,15 @@ export class Program { this._createNewEvaluator(); } + // Keep overlay-produced bindings only for parse trees that survived source-file restoration. + for (const info of this._sourceFileList) { + const parseTree = info.sourceFile.getParserOutput()?.parseTree; + if (parseTree) { + this._analyzerNodeInfoContext.promoteToPreviousLayer(parseTree); + } + } + + this._analyzerNodeInfoContext.discardOverlay(); return edits; } @@ -365,6 +395,11 @@ export class Program { // search paths. Clear any cached module name so it is recomputed. sourceFileInfo.sourceFile.clearCachedModuleName(); sourceFileInfo.isTracked = true; + + // The file may have first been added as an untracked referenced import + // (skipped by the user-code-only realpath alias index). Now that it is + // tracked, (re-)index it so symlink-twin co-invalidation applies. + this._indexRealpathAlias(sourceFileInfo); return sourceFileInfo.sourceFile; } @@ -500,9 +535,23 @@ export class Program { // We need to mark the file dirty so we can re-analyze next time. // This won't matter much for OpenFileOnly users, but it will matter for // people who use diagnosticMode Workspace. + const markDirtySet = new Set(); if (sourceFileInfo.sourceFile.didContentsChangeOnDisk()) { sourceFileInfo.sourceFile.markDirty(); - this._markFileDirtyRecursive(sourceFileInfo, new Set()); + this._markFileDirtyRecursive(sourceFileInfo, markDirtySet); + } + + // Co-invalidate symlink twins so consumers that imported the other + // alias get re-checked as well. + this._markRealpathAliasesDirty(sourceFileInfo, markDirtySet); + + // If anything was marked dirty (the closed file's own dependency + // subtree or a symlink twin's), recreate the evaluator so the + // re-checked consumers re-resolve against fresh types instead of the + // stale type cache. This mirrors markFilesDirty's markDirtySet.size + // check so the close path cannot silently diverge from it. + if (markDirtySet.size > 0) { + this._createNewEvaluator(); } } @@ -546,16 +595,21 @@ export class Program { // If !evenIfContentsAreSame, see if the on-disk contents have // changed. If the file is open, the on-disk contents don't matter // because we'll receive updates directly from the client. - if ( - evenIfContentsAreSame || - (!sourceFileInfo.isOpenByClient && sourceFileInfo.sourceFile.didContentsChangeOnDisk()) - ) { + if (this._shouldContentInvalidate(sourceFileInfo, evenIfContentsAreSame)) { sourceFileInfo.sourceFile.markDirty(); // Mark any files that depend on this file as dirty // also. This will retrigger analysis of these other files. this._markFileDirtyRecursive(sourceFileInfo, markDirtySet); } + + // A filesystem symlink and its target are tracked as separate + // SourceFileInfo entries. A change routed to one alias (e.g. the fs + // watcher fires for the real target path) must also re-parse the + // other alias(es) sharing the same realpath and re-check their + // dependents; otherwise stale diagnostics persist on consumers + // that imported the twin. + this._markRealpathAliasesDirty(sourceFileInfo, markDirtySet); } }); @@ -1145,7 +1199,7 @@ export class Program { // It does not discard cached index results or diagnostics for files. private _discardCachedParseResults() { for (const sourceFileInfo of this._sourceFileList) { - sourceFileInfo.sourceFile.dropParseAndBindInfo(); + this._dropParseAndBindInfo(sourceFileInfo.sourceFile); } } @@ -1326,6 +1380,7 @@ export class Program { this._importResolver, execEnv, this._evaluator!, + this._analyzerNodeInfoContext, (stubFileUri: Uri, implFileUri: Uri) => this.bindShadowFile(stubFileUri, implFileUri), (f) => { let fileInfo = this.getBoundSourceFileInfo(f); @@ -1633,10 +1688,23 @@ export class Program { } private _removeSourceFileFromListAndMap(fileUri: Uri, indexToRemove: number) { + const sourceFileInfo = this._sourceFileMap.get(fileUri.key); + if (sourceFileInfo) { + this._dropParseAndBindInfo(sourceFileInfo.sourceFile); + } + + this._unindexRealpathAlias(fileUri); this._sourceFileMap.delete(fileUri.key); this._sourceFileList.splice(indexToRemove, 1); } + private _dropParseAndBindInfo(sourceFile: SourceFile) { + const parseTree = sourceFile.dropParseAndBindInfo(); + if (parseTree) { + this._analyzerNodeInfoContext.remove(parseTree); + } + } + private _addToSourceFileListAndMap(fileInfo: SourceFileInfo) { const fileUri = fileInfo.uri; @@ -1648,6 +1716,137 @@ export class Program { this._sourceFileList.push(fileInfo); this._sourceFileMap.set(fileUri.key, fileInfo); + this._indexRealpathAlias(fileInfo); + } + + // Record the file's realpath so symlink twins can co-invalidate each other. + // Only user-code files participate: library/typeshed files are resolved to + // their real paths during import resolution and are not diagnostic-checked, + // so indexing them would only add realpath syscalls without benefit. + private _indexRealpathAlias(fileInfo: SourceFileInfo) { + if (!isUserCode(fileInfo)) { + return; + } + + const fileUri = fileInfo.uri; + + // Cache hit: this URI's realpath is already indexed, so skip the + // filesystem syscall and redundant group bookkeeping. This matters + // because `addTrackedFile` re-indexes already-tracked files (e.g. the + // untracked -> tracked flip). Watcher-driven changes remove the file + // first (clearing this cache via `_unindexRealpathAlias`) before + // re-adding, so a genuinely retargeted symlink is recomputed on re-add. + if (this._realpathByUriKey.has(fileUri.key)) { + return; + } + + const realpathUri = tryRealpath(this.fileSystem, fileUri) ?? fileUri; + const realpathKey = realpathUri.key; + this._realpathByUriKey.set(fileUri.key, realpathKey); + + // Add this file to its realpath group when it is either reached through a + // symlink (its realpath differs from its own URI) or a realpath target + // that already has aliases pointing at it. The latter lets a re-add of + // only the realpath target rebuild the group instead of orphaning the + // aliases that still reference it. + const existingGroup = this._realpathAliasMap.get(realpathKey); + if (realpathKey !== fileUri.key || existingGroup) { + let aliasKeys = existingGroup; + if (!aliasKeys) { + aliasKeys = new Set(); + this._realpathAliasMap.set(realpathKey, aliasKeys); + } + aliasKeys.add(fileUri.key); + aliasKeys.add(realpathKey); + } + } + + private _unindexRealpathAlias(fileUri: Uri) { + const realpathKey = this._realpathByUriKey.get(fileUri.key); + if (realpathKey === undefined) { + return; + } + + this._realpathByUriKey.delete(fileUri.key); + + const aliasKeys = this._realpathAliasMap.get(realpathKey); + if (!aliasKeys) { + return; + } + + aliasKeys.delete(fileUri.key); + + // Retain the group only while at least one member is still indexed + // (present in _realpathByUriKey). Keeping a lingering group that still + // holds an indexed member lets a later re-add of the realpath target + // (or another alias) rebuild the twin relationship instead of orphaning + // it. But when the only keys left are unindexed seeds — e.g. a realpath + // target that was never added because it resolves outside the workspace + // — drop the group so such single-entry remnants can't accumulate over a + // long session that churns those links. + let hasIndexedMember = false; + for (const key of aliasKeys) { + if (this._realpathByUriKey.has(key)) { + hasIndexedMember = true; + break; + } + } + if (!hasIndexedMember) { + this._realpathAliasMap.delete(realpathKey); + } + } + + // Predicate used by the primary `markFilesDirty`/`markAllFilesDirty` loops + // (and, with evenIfContentsAreSame fixed to false, by twin invalidation). + // When !evenIfContentsAreSame, only invalidate a file whose on-disk contents + // actually changed and that isn't open by the client (open docs receive their + // content directly from the client via the normal update path). When + // evenIfContentsAreSame is set, always invalidate. + private _shouldContentInvalidate(fileInfo: SourceFileInfo, evenIfContentsAreSame: boolean): boolean { + return evenIfContentsAreSame || (!fileInfo.isOpenByClient && fileInfo.sourceFile.didContentsChangeOnDisk()); + } + + // Content-invalidate the realpath twin(s) of the given file and re-check their + // dependents. The twin must be marked dirty at the CONTENT level (markDirty), + // not merely re-check-required, so its symbol table is re-parsed from the + // updated backing file before consumers re-resolve against it. + // + // Twin fan-out ALWAYS uses the disk-change predicate (never the primary's + // evenIfContentsAreSame flag): a twin only needs re-parsing when its own + // backing file actually changed on disk. In particular, an in-memory edit to + // one open alias (updateOpenFileContents -> markFilesDirty(evenIfContentsAreSame=true)) + // must NOT force the twin and its importer subtree to be re-checked on every + // keystroke, since the twin's on-disk contents are unchanged. + private _markRealpathAliasesDirty(sourceFileInfo: SourceFileInfo, markDirtySet: Set) { + const realpathKey = this._realpathByUriKey.get(sourceFileInfo.uri.key); + if (realpathKey === undefined) { + return; + } + + const aliasKeys = this._realpathAliasMap.get(realpathKey); + if (!aliasKeys || aliasKeys.size <= 1) { + return; + } + + aliasKeys.forEach((aliasKey) => { + if (aliasKey === sourceFileInfo.uri.key || markDirtySet.has(aliasKey)) { + return; + } + + const aliasInfo = this._sourceFileMap.get(aliasKey); + if (!aliasInfo) { + return; + } + + // Only invalidate the twin when its own backing file changed on disk + // (and it isn't open by the client). This deliberately ignores the + // primary file's evenIfContentsAreSame flag so unsaved edits to one + // alias don't repeatedly re-check the other alias's dependents. + if (this._shouldContentInvalidate(aliasInfo, /* evenIfContentsAreSame */ false)) { + aliasInfo.sourceFile.markDirty(); + this._markFileDirtyRecursive(aliasInfo, markDirtySet); + } + }); } private _getModuleName(fileUri: Uri): string { @@ -1735,13 +1934,15 @@ export class Program { minimumLoggingThreshold: this._configOptions.typeEvaluationTimeThreshold, evaluateUnknownImportsAsAny: !!this._configOptions.evaluateUnknownImportsAsAny, verifyTypeCacheEvaluatorFlags: !!this._configOptions.internalTestMode, + nodeInfoReader: this._analyzerNodeInfoContext, }, this._logTracker, this._configOptions.logTypeEvaluationTime ? createTracePrinter( this._importResolver.getImportRoots( this._configOptions.findExecEnvironment(this._configOptions.projectRoot) - ) + ), + this._analyzerNodeInfoContext ) : undefined ); @@ -1858,7 +2059,7 @@ export class Program { } // File should already be bound because of the chained file binding above. - const scope = AnalyzerNodeInfo.getScope(parseResults.parseTree); + const scope = AnalyzerNodeInfo.getScope(parseResults.parseTree, this._analyzerNodeInfoContext); return scope; }; @@ -1892,14 +2093,14 @@ export class Program { } fileToBind.effectiveFutureImports = futureImports.size > 0 ? futureImports : undefined; - fileToBind.sourceFile.bind( + return fileToBind.sourceFile.bind( this._configOptions, this._lookUpImport, builtinsScope, futureImports, - fileToBind.ipythonMode === IPythonMode.CellDocs ? this._cellChainIndex : undefined + fileToBind.ipythonMode === IPythonMode.CellDocs ? this._cellChainIndex : undefined, + this._analyzerNodeInfoContext ); - return true; } private _getEffectiveFutureImports(futureImports: Set, chainedSourceFile: SourceFileInfo): Set { @@ -1984,9 +2185,9 @@ export class Program { const parseResults = sourceFileInfo.sourceFile.getParserOutput(); const moduleNode = parseResults!.parseTree; - const fileInfo = AnalyzerNodeInfo.getFileInfo(moduleNode); + const fileInfo = AnalyzerNodeInfo.getFileInfo(moduleNode, this._analyzerNodeInfoContext); - const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(parseResults!.parseTree); + const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(parseResults!.parseTree, this._analyzerNodeInfoContext); return { symbolTable, @@ -2070,7 +2271,8 @@ export class Program { this._lookUpImport, this._importResolver, this._evaluator!, - dependentFiles + dependentFiles, + this._analyzerNodeInfoContext ); } } @@ -2158,7 +2360,7 @@ export class Program { continue; } - const fileInfo = AnalyzerNodeInfo.getFileInfo(parseResults.parseTree); + const fileInfo = AnalyzerNodeInfo.getFileInfo(parseResults.parseTree, this._analyzerNodeInfoContext); if (fileInfo.accessedSymbolSet) { dependentFiles.push(parseResults); } @@ -2294,7 +2496,7 @@ export class Program { return; } - sourceFileInfo.sourceFile.markReanalysisRequired(forceRebinding); + sourceFileInfo.sourceFile.markReanalysisRequired(forceRebinding, this._analyzerNodeInfoContext); markSet.add(fileUri.key); sourceFileInfo.importedBy.forEach((dep) => { @@ -2318,7 +2520,8 @@ export class Program { reevaluationRequired = true; chainedSourceFile.sourceFile.markReanalysisRequired( - /* forceRebinding */ sourceFileInfo.ipythonMode === IPythonMode.CellDocs + /* forceRebinding */ sourceFileInfo.ipythonMode === IPythonMode.CellDocs, + this._analyzerNodeInfoContext ); chainedSourceFile = chainedSourceFile.chainedSourceFile; } diff --git a/packages/pyright-internal/src/analyzer/properties.ts b/packages/pyright-internal/src/analyzer/properties.ts index 1a0d05657172..6cc1c828b956 100644 --- a/packages/pyright-internal/src/analyzer/properties.ts +++ b/packages/pyright-internal/src/analyzer/properties.ts @@ -11,7 +11,7 @@ import { DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { LocAddendum, LocMessage } from '../localization/localize'; import { DecoratorNode, FunctionNode, ParamCategory, ParseNode } from '../parser/parseNodes'; -import { getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { ConstraintSolution } from './constraintSolution'; import { ConstraintTracker } from './constraintTracker'; import { getClassFullName, getTypeAnnotationForParam, getTypeSourceId } from './parseTreeUtils'; @@ -50,9 +50,10 @@ export function createProperty( evaluator: TypeEvaluator, decoratorNode: DecoratorNode, decoratorType: ClassType, - fget: FunctionType + fget: FunctionType, + nodeInfo: AnalyzerNodeInfoAccessor ): ClassType { - const fileInfo = getFileInfo(decoratorNode); + const fileInfo = nodeInfo.getFileInfo(decoratorNode); const typeMetaclass = evaluator.getBuiltInType(decoratorNode, 'type'); const typeSourceId = ClassType.isBuiltIn(decoratorType, 'property') ? getTypeSourceId(decoratorNode) @@ -116,7 +117,8 @@ export function clonePropertyWithSetter( evaluator: TypeEvaluator, prop: Type, fset: FunctionType, - errorNode: FunctionNode + errorNode: FunctionNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { if (!isProperty(prop)) { return prop; @@ -129,7 +131,7 @@ export function clonePropertyWithSetter( // Verify parameters for fset. // We'll skip this test if the diagnostic rule is disabled because it // can be somewhat expensive, especially in code that is not annotated. - const fileInfo = getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); if (errorNode.d.params.length >= 2) { const typeAnnotation = getTypeAnnotationForParam(errorNode, 1); if (typeAnnotation) { @@ -163,7 +165,7 @@ export function clonePropertyWithSetter( classType.shared.name, classType.shared.fullName, classType.shared.moduleName, - getFileInfo(errorNode).fileUri, + nodeInfo.getFileInfo(errorNode).fileUri, flagsToClone, classType.shared.typeSourceId, classType.shared.declaredMetaclass, @@ -211,7 +213,8 @@ export function clonePropertyWithDeleter( evaluator: TypeEvaluator, prop: Type, fdel: FunctionType, - errorNode: FunctionNode + errorNode: FunctionNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { if (!isProperty(prop)) { return prop; @@ -222,7 +225,7 @@ export function clonePropertyWithDeleter( classType.shared.name, classType.shared.fullName, classType.shared.moduleName, - getFileInfo(errorNode).fileUri, + nodeInfo.getFileInfo(errorNode).fileUri, classType.shared.flags, classType.shared.typeSourceId, classType.shared.declaredMetaclass, diff --git a/packages/pyright-internal/src/analyzer/scopeUtils.ts b/packages/pyright-internal/src/analyzer/scopeUtils.ts index 666d924e4073..6631cb36e712 100644 --- a/packages/pyright-internal/src/analyzer/scopeUtils.ts +++ b/packages/pyright-internal/src/analyzer/scopeUtils.ts @@ -9,7 +9,7 @@ */ import { EvaluationScopeNode, ParseNode } from '../parser/parseNodes'; -import { getScope } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoReader, getScope } from './analyzerNodeInfo'; import { getEvaluationScopeNode } from './parseTreeUtils'; import { Scope, ScopeType } from './scope'; @@ -26,21 +26,25 @@ export function getBuiltInScope(currentScope: Scope): Scope { } // Locates the evaluation scope associated with the specified parse node. -export function getScopeForNode(node: ParseNode): Scope | undefined { - const scopeNode = getEvaluationScopeNode(node).node; - return getScope(scopeNode); +export function getScopeForNode(node: ParseNode, nodeInfo: AnalyzerNodeInfoReader): Scope | undefined { + const scopeNode = getEvaluationScopeNode(node, nodeInfo).node; + return getScope(scopeNode, nodeInfo); } // Returns a list of scopes associated with the node and its ancestor nodes. // If stopScope is provided, the search will stop at that scope. // Returns undefined if stopScope is not found. -export function getScopeHierarchy(node: ParseNode, stopScope?: Scope): Scope[] | undefined { +export function getScopeHierarchy( + node: ParseNode, + stopScope: Scope | undefined, + nodeInfo: AnalyzerNodeInfoReader +): Scope[] | undefined { const scopeHierarchy: Scope[] = []; let curNode: ParseNode | undefined = node; while (curNode) { - const scopeNode: EvaluationScopeNode = getEvaluationScopeNode(curNode).node; - const curScope = getScope(scopeNode); + const scopeNode: EvaluationScopeNode = getEvaluationScopeNode(curNode, nodeInfo).node; + const curScope = getScope(scopeNode, nodeInfo); if (!curScope) { return undefined; @@ -62,13 +66,17 @@ export function getScopeHierarchy(node: ParseNode, stopScope?: Scope): Scope[] | // Walks up the parse tree from the specified node to find the top-most node // that is within specified scope. -export function findTopNodeInScope(node: ParseNode, scope: Scope): ParseNode | undefined { +export function findTopNodeInScope( + node: ParseNode, + scope: Scope, + nodeInfo: AnalyzerNodeInfoReader +): ParseNode | undefined { let curNode: ParseNode | undefined = node; let prevNode: ParseNode | undefined; let foundScope = false; while (curNode) { - if (getScope(curNode) === scope) { + if (getScope(curNode, nodeInfo) === scope) { foundScope = true; } else if (foundScope) { return prevNode; diff --git a/packages/pyright-internal/src/analyzer/sentinel.ts b/packages/pyright-internal/src/analyzer/sentinel.ts index c36e5bc68f4f..39f133a0afbd 100644 --- a/packages/pyright-internal/src/analyzer/sentinel.ts +++ b/packages/pyright-internal/src/analyzer/sentinel.ts @@ -10,7 +10,7 @@ import { DiagnosticRule } from '../common/diagnosticRules'; import { LocMessage } from '../localization/localize'; import { ArgCategory, ExpressionNode, ParseNodeType } from '../parser/parseNodes'; -import { getFileInfo } from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { getClassFullName, getTypeSourceId } from './parseTreeUtils'; import { Arg, TypeEvaluator } from './typeEvaluatorTypes'; import { ClassType, ClassTypeFlags, SentinelLiteral, Type, TypeBase } from './types'; @@ -19,7 +19,8 @@ import { computeMroLinearization } from './typeUtils'; export function createSentinelType( evaluator: TypeEvaluator, errorNode: ExpressionNode, - argList: Arg[] + argList: Arg[], + nodeInfo: AnalyzerNodeInfoAccessor ): Type | undefined { let className = ''; @@ -59,7 +60,7 @@ export function createSentinelType( return undefined; } - const fileInfo = getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); const fullClassName = getClassFullName(errorNode, fileInfo.moduleName, className); let classType = ClassType.createInstantiable( className, diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index f10823b32d71..3de0457923ea 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -27,7 +27,7 @@ import { EditableProgram, ProgramView } from '../common/extensibility'; import { FileSystem } from '../common/fileSystem'; import { FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileWatcher'; import { Host, HostFactory, NoAccessHost } from '../common/host'; -import { configFileName, defaultStubsDirectory, pyprojectTomlName } from '../common/pathConsts'; +import { configFileName, defaultExcludes, defaultStubsDirectory, pyprojectTomlName } from '../common/pathConsts'; import { getFileName, isRootedDiskPath, normalizeSlashes } from '../common/pathUtils'; import { PythonVersion } from '../common/pythonVersion'; import { ServiceKeys } from '../common/serviceKeys'; @@ -911,7 +911,8 @@ export class AnalyzerService { configOptions.setupExecutionEnvironments( config.configFileJsonObj, config.configFileDirUri, - this.serviceProvider.console() + this.serviceProvider.console(), + this.fs ); } } @@ -926,8 +927,6 @@ export class AnalyzerService { executionRoot: Uri, commandLineOptions: CommandLineOptions ) { - const defaultExcludes = ['**/node_modules', '**/__pycache__', '**/.*']; - // If no include paths were provided, assume that all files within // the project should be included. if (configOptions.include.length === 0) { @@ -935,19 +934,40 @@ export class AnalyzerService { configOptions.include.push(getFileSpec(projectRoot, '.')); } - // If there was no explicit set of excludes, add a few common ones to - // avoid long scan times. - if (configOptions.exclude.length === 0) { + // Record whether the user explicitly provided any excludes before we (optionally) add + // the default excludes below. Consumers (e.g. Pylance's workspace routing) use this to + // distinguish files orphaned only by implicit defaults from files the user explicitly + // excluded. + configOptions.userSpecifiedExcludes = configOptions.exclude.length > 0; + + // Add the built-in default excludes unless the user turned them off via the + // `useDefaultExcludes` setting (defaults to on). When enabled, these defaults are applied + // additively on top of any user-specified excludes and, like any other exclude, take + // precedence over `include` — a directory auto-detected as a virtual environment stays + // excluded even when it is explicitly included. When disabled, no default excludes are + // added and virtual-environment auto-detection is left off, so nothing is auto-excluded. + const useDefaultExcludes = commandLineOptions.configSettings.useDefaultExcludes ?? true; + if (useDefaultExcludes) { + // Deduplicate against patterns the user already listed (by compiled regex source) so + // specifying a custom exclude never silently drops — or duplicates — the defaults. + const existingExcludeRegExps = new Set(configOptions.exclude.map((spec) => spec.regExp.source)); defaultExcludes.forEach((exclude) => { + const fileSpec = getFileSpec(projectRoot, exclude); + if (existingExcludeRegExps.has(fileSpec.regExp.source)) { + return; + } + this._console.info(`Auto-excluding ${exclude}`); - configOptions.exclude.push(getFileSpec(projectRoot, exclude)); + existingExcludeRegExps.add(fileSpec.regExp.source); + configOptions.exclude.push(fileSpec); }); - - if (configOptions.autoExcludeVenv === undefined) { - configOptions.autoExcludeVenv = true; - } } + // Virtual-environment auto-detection is part of the default-exclude set, so it follows the + // same `useDefaultExcludes` gate. Assigning it unconditionally (rather than behind an + // `=== undefined` guard) is idempotent because this method is its single writer. + configOptions.autoExcludeVenv = useDefaultExcludes; + if (!configOptions.defaultExtraPaths) { configOptions.ensureDefaultExtraPaths( this.fs, diff --git a/packages/pyright-internal/src/analyzer/sourceEnumerator.ts b/packages/pyright-internal/src/analyzer/sourceEnumerator.ts index 5c76a6c92e29..6f469ffcb274 100644 --- a/packages/pyright-internal/src/analyzer/sourceEnumerator.ts +++ b/packages/pyright-internal/src/analyzer/sourceEnumerator.ts @@ -20,6 +20,20 @@ export interface SourceEnumerateResult { const envMarkers = [['bin', 'activate'], ['Scripts', 'activate'], ['pyvenv.cfg'], ['conda-meta']]; +// Thresholds that define a "slow" enumeration. Kept at module scope so both the +// long-operation console warning and the `wasSlowEnumeration` getter derive +// "slow" from the same condition rather than from whether the warning was logged. +const longOperationLimitInMs = 10000; +const nFilesToSuggestSubfolder = 50; + +// Configuration file names that mark a directory as a candidate "nearest +// configuration" root. These are collected during the normal source-file walk +// (see `getDiscoveredConfigFiles`) so Pylance can create virtual workspaces +// without performing a second traversal. Whether a `pyproject.toml` actually +// qualifies (i.e. has a `[tool.pyright]` section) is decided by the caller. +const pyrightConfigFileName = 'pyrightconfig.json'; +const pyprojectTomlFileName = 'pyproject.toml'; + interface DirToExplore { uri: Uri; includeRegExp: RegExp; @@ -36,10 +50,21 @@ export class SourceEnumerator { private _numFilesVisited = 0; private _loggedLongOperationError = false; private _seenDirs = new Set(); + // Real (symlink-resolved) paths of the include roots. A symlink that resolves + // outside every include root (e.g. a link to filesystem root "/" or "C:\") is + // not a cycle, so `_seenDirs` won't catch it; without this bound the whole + // filesystem would be enumerated and Pylance would hang. See issue #6006. + private readonly _includeRoots: Uri[]; // This tracks symlinked directory roots across the entire enumeration cycle, // potentially spanning multiple include roots, so Pylance can later filter // workspace indexing against the full discovered set. private readonly _symlinkedDirectoryRoots = new Map(); + // Candidate "nearest configuration" files (pyrightconfig.json / pyproject.toml) + // encountered during the walk, keyed by file uri. Surfaced to Pylance so it can + // create virtual workspaces without re-walking the tree. Directories that are + // auto-excluded (venvs) or excluded by config are never read, so configs under + // them are naturally skipped. + private readonly _discoveredConfigFiles = new Map(); constructor( include: FileSpec[], @@ -50,13 +75,34 @@ export class SourceEnumerator { ) { this._includesToExplore = include.slice(0).reverse(); + // Resolve include roots to their real paths up front (an include root may + // itself be a symlink) so we can bound enumeration to directories that + // physically live under one of the workspace's include roots. + this._includeRoots = include.map((spec) => tryRealpath(_fs, spec.wildcardRoot) ?? spec.wildcardRoot); + this._console.log(`Searching for source files`); } + get wasSlowEnumeration(): boolean { + // Derived from the elapsed-time / file-count threshold rather than from + // `_loggedLongOperationError` so "slow" stays independent of whether the + // console warning was logged. Sibling changes that alter the logging + // behavior (e.g. suppressing repeats) then can't silently disable this. + return this._isSlowEnumeration(); + } + getSymlinkedDirectoryRoots(): Uri[] { return Array.from(this._symlinkedDirectoryRoots.values()); } + // Returns the configuration files (pyrightconfig.json / pyproject.toml) + // discovered during enumeration. The caller decides which ones actually + // qualify as a configuration root (e.g. a pyproject.toml must contain a + // [tool.pyright] section). + getDiscoveredConfigFiles(): Uri[] { + return Array.from(this._discoveredConfigFiles.values()); + } + // Enumerates as many files as possible within the specified // time limit and returns all matching files. enumerate(timeLimitInMs: number): SourceEnumerateResult { @@ -78,12 +124,9 @@ export class SourceEnumerator { this._elapsedTimeInMs += Date.now() - startTime; if (!this._loggedLongOperationError) { - const longOperationLimitInMs = 10000; - const nFilesToSuggestSubfolder = 50; - // If this is taking a long time, log an error to help the user // diagnose and mitigate the problem. - if (this._elapsedTimeInMs >= longOperationLimitInMs && this._numFilesVisited >= nFilesToSuggestSubfolder) { + if (this._isSlowEnumeration()) { this._console.error( `Enumeration of workspace source files is taking longer than ${ longOperationLimitInMs * 0.001 @@ -110,6 +153,10 @@ export class SourceEnumerator { }; } + private _isSlowEnumeration(): boolean { + return this._elapsedTimeInMs >= longOperationLimitInMs && this._numFilesVisited >= nFilesToSuggestSubfolder; + } + private _recordSymlinkedDirectoryRoot(root: Uri): void { for (const existingRoot of this._symlinkedDirectoryRoots.values()) { if (root.isChild(existingRoot)) { @@ -160,6 +207,15 @@ export class SourceEnumerator { } this._seenDirs.add(realDirPath.key); + // A symlink that resolves outside every include root is not a recursive + // cycle (so `_seenDirs` won't catch it), but following it would pull in + // directories that don't belong to the workspace -- in the worst case a + // link to filesystem root "/" would enumerate the entire disk (issue #6006). + // Skip silently: external symlinks are legitimate and shouldn't be noisy. + if (this._includeRoots.length > 0 && !this._includeRoots.some((root) => realDirPath.startsWith(root))) { + return; + } + if (this._autoExcludeVenv) { if (envMarkers.some((f) => this._fs.existsSync(dir.uri.resolvePaths(...f)))) { this._autoExcludeDirs.push(dir.uri); @@ -182,6 +238,18 @@ export class SourceEnumerator { this._numFilesVisited++; this._matches.set(file.key, file); } + + // Collect candidate configuration files. They are not `.py`/`.pyi`, so they + // never match include specs, but we still honor `exclude` specs: skip any + // config file explicitly excluded by the user (directory-level excludes and + // venv auto-exclusion already prevent us from reading excluded directories). + const fileName = file.fileName; + if ( + (fileName === pyrightConfigFileName || fileName === pyprojectTomlFileName) && + !FileSpec.isInPath(file, this._excludes) + ) { + this._discoveredConfigFiles.set(file.key, file); + } } for (const subDir of directories.slice().reverse()) { diff --git a/packages/pyright-internal/src/analyzer/sourceFile.ts b/packages/pyright-internal/src/analyzer/sourceFile.ts index 01f08a797b1b..f1962695b89c 100644 --- a/packages/pyright-internal/src/analyzer/sourceFile.ts +++ b/packages/pyright-internal/src/analyzer/sourceFile.ts @@ -35,7 +35,7 @@ import { TextRangeCollection } from '../common/textRangeCollection'; import { Duration, timingStats } from '../common/timing'; import { Uri } from '../common/uri/uri'; import { LocMessage } from '../localization/localize'; -import { ModuleNode } from '../parser/parseNodes'; +import { getParserStringAnnotationInfo, ModuleNode, ParseNode } from '../parser/parseNodes'; import { ModuleImport, ParseFileResults, ParseOptions, Parser, ParserOutput } from '../parser/parser'; import { IgnoreComment, Tokenizer, TokenizerOutput } from '../parser/tokenizer'; import { Token } from '../parser/tokenizerTypes'; @@ -48,7 +48,6 @@ import { CircularDependency } from './circularDependency'; import * as CommentUtils from './commentUtils'; import { ImportResolver } from './importResolver'; import { ImportResult } from './importResult'; -import { ParseTreeCleanerWalker } from './parseTreeCleaner'; import { Scope } from './scope'; import { SymbolTable } from './symbol'; import { TestWalker } from './testWalker'; @@ -64,6 +63,12 @@ export const maxSourceFileSize = 50 * 1024 * 1024; interface ResolveImportResult { imports: ImportResult[]; builtinsImportResult?: ImportResult | undefined; + importInfo: ImportInfoRecord[]; +} + +interface ImportInfoRecord { + node: ParseNode; + importResult: ImportResult; } // Indicates whether IPython syntax is supported and if so, what @@ -104,10 +109,6 @@ class WriteableData { // Version of file contents that have been analyzed. analyzedFileContentsVersion = -1; - // Do we need to walk the parse tree and clean - // the binder information hanging from it? - parseTreeNeedsCleaning = false; - parsedFileContents: string | undefined; tokenizerLines: TextRangeCollection | undefined; tokenizerOutput: TokenizerOutput | undefined; @@ -154,6 +155,7 @@ class WriteableData { // Information about implicit and explicit imports from this file. imports: ImportResult[] | undefined; builtinsImport: ImportResult | undefined; + importInfo: ImportInfoRecord[] = []; // True if the file appears to have been deleted. isFileDeleted = false; @@ -173,7 +175,6 @@ class WriteableData { isCheckingNeeded=${this.isCheckingNeeded}, isFileDeleted=${this.isFileDeleted}, hitMaxImportDepth=${this.hitMaxImportDepth}, - parseTreeNeedsCleaning=${this.parseTreeNeedsCleaning}, fileContentsVersion=${this.fileContentsVersion}, analyzedFileContentsVersion=${this.analyzedFileContentsVersion}, clientDocumentVersion=${this.clientDocumentVersion}, @@ -466,15 +467,16 @@ export class SourceFile { // Drop parse and binding info to save memory. It is used // in cases where memory is low. When info is needed, the file // will be re-parsed and rebound. - dropParseAndBindInfo(): void { + dropParseAndBindInfo(): ModuleNode | undefined { // If we are actively binding or checking this file, we can't // safely drop parse and binding info. if (this._writableData.isBindingInProgress || this._writableData.isCheckingInProgress) { - return; + return undefined; } this._fireFileDirtyEvent(); + const parseTree = this._writableData.parserOutput?.parseTree; this._writableData.parserOutput = undefined; this._writableData.tokenizerLines = undefined; this._writableData.tokenizerOutput = undefined; @@ -482,6 +484,7 @@ export class SourceFile { this._writableData.moduleSymbolTable = undefined; this._writableData.isBindingNeeded = true; this._writableData.imports = []; + return parseTree; } markDirty(): void { @@ -496,7 +499,7 @@ export class SourceFile { this._fireFileDirtyEvent(); } - markReanalysisRequired(forceRebinding: boolean): void { + markReanalysisRequired(forceRebinding: boolean, nodeInfoReader: AnalyzerNodeInfo.AnalyzerNodeInfoReader): void { // Keep the parse info, but reset the analysis to the beginning. this._writableData.semanticVersion++; this._writableData.isCheckingNeeded = true; @@ -507,13 +510,13 @@ export class SourceFile { if (this._writableData.parserOutput) { if ( this._writableData.parserOutput.containsWildcardImport || - AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parserOutput.parseTree) !== undefined || + AnalyzerNodeInfo.getDunderAllInfo(this._writableData.parserOutput.parseTree, nodeInfoReader) !== + undefined || forceRebinding ) { // We don't need to rebuild index data since wildcard // won't affect user file indices. User file indices // don't contain import alias info. - this._writableData.parseTreeNeedsCleaning = true; this._writableData.isBindingNeeded = true; this._writableData.moduleSymbolTable = undefined; } @@ -774,6 +777,7 @@ export class SourceFile { this._writableData.imports = importResult.imports; this._writableData.builtinsImport = importResult.builtinsImportResult; + this._writableData.importInfo = importResult.importInfo; this._writableData.parseDiagnostics = diagSink.fetchAndClear(); @@ -826,8 +830,10 @@ export class SourceFile { this._writableData.parsedFileContents = ''; this._writableData.tokenizerLines = new TextRangeCollection([]); + const parseTree = ModuleNode.create({ start: 0, length: 0 }); this._writableData.parserOutput = { - parseTree: ModuleNode.create({ start: 0, length: 0 }), + parseTree, + stringAnnotations: getParserStringAnnotationInfo(parseTree), importedModules: [], futureImports: new Set(), containsWildcardImport: false, @@ -850,6 +856,7 @@ export class SourceFile { this._writableData.imports = undefined; this._writableData.builtinsImport = undefined; + this._writableData.importInfo = []; const diagSink = this.createDiagnosticSink(); diagSink.addError( @@ -869,7 +876,6 @@ export class SourceFile { this._writableData.analyzedFileContentsVersion = this._writableData.fileContentsVersion; this._writableData.isBindingNeeded = true; this._writableData.isCheckingNeeded = true; - this._writableData.parseTreeNeedsCleaning = false; this._writableData.hitMaxImportDepth = undefined; this._recomputeDiagnostics(configOptions); @@ -883,7 +889,8 @@ export class SourceFile { importLookup: ImportLookup, builtinsScope: Scope | undefined, futureImports: Set, - cellChainIndex: CellChainIndexProvider | undefined + cellChainIndex: CellChainIndexProvider | undefined, + nodeInfoContext: AnalyzerNodeInfo.AnalyzerNodeInfoContext ) { assert(!this.isParseRequired(), 'Bind called before parsing'); assert(this.isBindingRequired(), 'Bind called unnecessarily'); @@ -891,17 +898,31 @@ export class SourceFile { assert(this._writableData.parserOutput !== undefined, 'Parse results not available'); return this._logTracker.log(`binding: ${this._getPathForLogging(this._uri)}`, () => { + let bound = false; try { // Perform name binding. timingStats.bindTime.timeOperation(() => { - this._cleanParseTreeIfRequired(); + const parseTree = this._writableData.parserOutput!.parseTree; + const bindingSession = nodeInfoContext.beginWrite(parseTree); + const nodeInfo = AnalyzerNodeInfo.createAnalyzerNodeInfoAccessor(bindingSession, bindingSession); + this._writableData.importInfo.forEach((record) => + nodeInfo.setImportInfo(record.node, record.importResult) + ); const fileInfo = this._buildFileInfo(configOptions, importLookup, builtinsScope, futureImports); - AnalyzerNodeInfo.setFileInfo(this._writableData.parserOutput!.parseTree, fileInfo); + nodeInfo.setFileInfo(parseTree, fileInfo); - const binder = new Binder(fileInfo, configOptions.indexGenerationMode, cellChainIndex); + const binder = new Binder(fileInfo, configOptions.indexGenerationMode, cellChainIndex, nodeInfo); this._writableData.isBindingInProgress = true; - binder.bindModule(this._writableData.parserOutput!.parseTree); + binder.bindModule(parseTree); + + const bindDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); + const moduleScope = nodeInfo.getScope(parseTree); + assert(moduleScope !== undefined, 'Module scope not returned by binder'); + + nodeInfoContext.publish(bindingSession); + this._writableData.moduleSymbolTable = moduleScope.symbolTable; + this._writableData.bindDiagnostics = bindDiagnostics; // If we're in "test mode" (used for unit testing), run an additional // "test walker" over the parse tree to validate its internal consistency. @@ -909,12 +930,8 @@ export class SourceFile { const testWalker = new TestWalker(); testWalker.walk(this._writableData.parserOutput!.parseTree); } - - this._writableData.bindDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); - const moduleScope = AnalyzerNodeInfo.getScope(this._writableData.parserOutput!.parseTree); - assert(moduleScope !== undefined, 'Module scope not returned by binder'); - this._writableData.moduleSymbolTable = moduleScope!.symbolTable; }); + bound = true; } catch (e: any) { const message: string = (e.stack ? e.stack.toString() : undefined) || @@ -944,10 +961,11 @@ export class SourceFile { } // Prepare for the next stage of the analysis. - this._writableData.isCheckingNeeded = true; + this._writableData.isCheckingNeeded = bound; this._writableData.isBindingNeeded = false; this._recomputeDiagnostics(configOptions); + return bound; }); } @@ -956,7 +974,8 @@ export class SourceFile { importLookup: ImportLookup, importResolver: ImportResolver, evaluator: TypeEvaluator, - dependentFiles?: ParserOutput[] + dependentFiles: ParserOutput[] | undefined, + nodeInfoReader: AnalyzerNodeInfo.AnalyzerNodeInfoReader ) { assert(!this.isParseRequired(), `Check called before parsing: state=${this._writableData.debugPrint()}`); assert(!this.isBindingRequired(), `Check called before binding: state=${this._writableData.debugPrint()}`); @@ -969,17 +988,19 @@ export class SourceFile { try { timingStats.typeCheckerTime.timeOperation(() => { const checkDuration = new Duration(); + const nodeInfo = AnalyzerNodeInfo.createAnalyzerNodeInfoAccessor(nodeInfoReader); const checker = new Checker( importResolver, evaluator, this._writableData.parserOutput!, - dependentFiles + dependentFiles, + nodeInfo ); this._writableData.isCheckingInProgress = true; checker.check(); this._writableData.isCheckingNeeded = false; - const fileInfo = AnalyzerNodeInfo.getFileInfo(this._writableData.parserOutput!.parseTree)!; + const fileInfo = nodeInfo.getFileInfo(this._writableData.parserOutput!.parseTree)!; this._writableData.checkerDiagnostics = fileInfo.diagnosticSink.fetchAndClear(); this._writableData.checkTime = checkDuration.getDurationInMilliseconds(); }); @@ -1457,22 +1478,13 @@ export class SourceFile { return fileInfo; } - private _cleanParseTreeIfRequired() { - if (this._writableData.parserOutput) { - if (this._writableData.parseTreeNeedsCleaning) { - const cleanerWalker = new ParseTreeCleanerWalker(this._writableData.parserOutput.parseTree); - cleanerWalker.clean(); - this._writableData.parseTreeNeedsCleaning = false; - } - } - } - private _resolveImports( importResolver: ImportResolver, moduleImports: ModuleImport[], execEnv: ExecutionEnvironment ): ResolveImportResult { const imports: ImportResult[] = []; + const importInfo: ImportInfoRecord[] = []; const resolveAndAddIfNotSelf = (nameParts: string[], skipMissingImport = false) => { const importResult = importResolver.resolveImport(this._uri, execEnv, { @@ -1522,7 +1534,7 @@ export class SourceFile { // name node in the parse tree so we can access it later // (for hover and definition support). if (moduleImport.nameParts.length === moduleImport.nameNode.d.nameParts.length) { - AnalyzerNodeInfo.setImportInfo(moduleImport.nameNode, importResult); + importInfo.push({ node: moduleImport.nameNode, importResult }); } else { // For implicit imports of higher-level modules within a multi-part // module name, the moduleImport.nameParts will refer to the subset @@ -1530,16 +1542,17 @@ export class SourceFile { // case, store the import info on the name part node. assert(moduleImport.nameParts.length > 0); assert(moduleImport.nameParts.length - 1 < moduleImport.nameNode.d.nameParts.length); - AnalyzerNodeInfo.setImportInfo( - moduleImport.nameNode.d.nameParts[moduleImport.nameParts.length - 1], - importResult - ); + importInfo.push({ + node: moduleImport.nameNode.d.nameParts[moduleImport.nameParts.length - 1], + importResult, + }); } } return { imports, builtinsImportResult, + importInfo, }; } diff --git a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts index bb7440a97e75..ff9306fee4cb 100644 --- a/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts +++ b/packages/pyright-internal/src/analyzer/sourceFileInfoUtils.ts @@ -15,6 +15,14 @@ export function isUserCode(fileInfo: SourceFileInfo | undefined) { return !!fileInfo && fileInfo.isTracked && !fileInfo.isThirdPartyImport && !fileInfo.isTypeshedFile; } +// A file counts as a candidate for user-facing scans when it is user code or currently open in the +// editor. Over an external type server an open user file can report `isTracked === false` (so +// `isUserCode` is false); including `isOpenByClient` keeps those files in scope for candidate-file +// enumeration. +export function isUserCodeOrOpenByClient(fileInfo: SourceFileInfo | undefined) { + return isUserCode(fileInfo) || !!fileInfo?.isOpenByClient; +} + export function collectImportedByCells(program: ProgramView, fileInfo: T): Set { // The ImportedBy only works when files are parsed. Due to the lazy-loading nature of our system, // we can't ensure that all files within the program are parsed, which might lead to an incomplete dependency graph. diff --git a/packages/pyright-internal/src/analyzer/sourceMapper.ts b/packages/pyright-internal/src/analyzer/sourceMapper.ts index 99bf61f09d1b..a4d1159ebe1c 100644 --- a/packages/pyright-internal/src/analyzer/sourceMapper.ts +++ b/packages/pyright-internal/src/analyzer/sourceMapper.ts @@ -64,6 +64,7 @@ export class SourceMapper { private _importResolver: ImportResolver, private _execEnv: ExecutionEnvironment, private _evaluator: TypeEvaluator, + private _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader, private _fileBinder: ShadowFileBinder, private _boundSourceGetter: BoundSourceGetter, private _mapCompiled: boolean, @@ -72,6 +73,10 @@ export class SourceMapper { private _cancelToken: CancellationToken ) {} + get analyzerNodeInfo(): AnalyzerNodeInfo.AnalyzerNodeInfoReader { + return this._nodeInfo; + } + findModules(stubFileUri: Uri): ModuleNode[] { const sourceFiles = this._isStubThatShouldBeMappedToImplementation(stubFileUri) ? this._getBoundSourceFilesFromStubFile(stubFileUri) @@ -739,7 +744,7 @@ export class SourceMapper { } const moduleNode = ParseTreeUtils.getEnclosingModule(aliasOriginExpression); - let currentSymbol = AnalyzerNodeInfo.getScope(moduleNode)?.lookUpSymbol(symbolParts[0]); + let currentSymbol = AnalyzerNodeInfo.getScope(moduleNode, this._nodeInfo)?.lookUpSymbol(symbolParts[0]); if (!currentSymbol) { return false; } @@ -797,7 +802,9 @@ export class SourceMapper { private _lookUpModuleSymbol(fileUri: Uri, symbolName: string): Symbol | undefined { for (const sourceFile of this._getSourceFiles(fileUri)) { const moduleNode = sourceFile.getParserOutput()?.parseTree; - const symbol = moduleNode ? AnalyzerNodeInfo.getScope(moduleNode)?.lookUpSymbol(symbolName) : undefined; + const symbol = moduleNode + ? AnalyzerNodeInfo.getScope(moduleNode, this._nodeInfo)?.lookUpSymbol(symbolName) + : undefined; if (symbol) { return symbol; } @@ -848,7 +855,7 @@ export class SourceMapper { return decl; } - const fileInfo = ParseTreeUtils.getFileInfoFromNode(decl.node); + const fileInfo = ParseTreeUtils.getFileInfoFromNode(decl.node, this._nodeInfo); if (!fileInfo) { return decl; } @@ -933,7 +940,7 @@ export class SourceMapper { ) { // Symbol exists in a stub doesn't exist in a python file. Use some heuristic // to find one from sources. - const table = AnalyzerNodeInfo.getScope(moduleNode)?.symbolTable; + const table = AnalyzerNodeInfo.getScope(moduleNode, this._nodeInfo)?.symbolTable; if (!table) { return; } @@ -1012,7 +1019,7 @@ export class SourceMapper { // If the implementation module explicitly imports the symbol under a different // local name (e.g. `from ._private import Foo as _Foo`), map the stub name to // the resolved import target. - const fileInfo = ParseTreeUtils.getFileInfoFromNode(moduleNode); + const fileInfo = ParseTreeUtils.getFileInfoFromNode(moduleNode, this._nodeInfo); const uniqueId = `@${fileInfo?.fileUri.key ?? ''}/importAliases/${symbolName}`; if (recursiveDeclCache.has(uniqueId)) { return; @@ -1020,7 +1027,7 @@ export class SourceMapper { recursiveDeclCache.add(uniqueId); - const table = AnalyzerNodeInfo.getScope(moduleNode)?.symbolTable; + const table = AnalyzerNodeInfo.getScope(moduleNode, this._nodeInfo)?.symbolTable; if (!table) { recursiveDeclCache.delete(uniqueId); return; @@ -1068,7 +1075,7 @@ export class SourceMapper { return []; } - const containingScope = AnalyzerNodeInfo.getScope(node); + const containingScope = AnalyzerNodeInfo.getScope(node, this._nodeInfo); const symbol = containingScope?.lookUpSymbol(symbolName); const decls = symbol?.getDeclarations(); diff --git a/packages/pyright-internal/src/analyzer/testWalker.ts b/packages/pyright-internal/src/analyzer/testWalker.ts index b9689f26f27e..09ba59f53f68 100644 --- a/packages/pyright-internal/src/analyzer/testWalker.ts +++ b/packages/pyright-internal/src/analyzer/testWalker.ts @@ -10,7 +10,7 @@ import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { assertNever, fail } from '../common/debug'; import { TextRange } from '../common/textRange'; -import { NameNode, ParseNode, ParseNodeArray, ParseNodeType } from '../parser/parseNodes'; +import { getParserStringAnnotation, NameNode, ParseNode, ParseNodeArray, ParseNodeType } from '../parser/parseNodes'; import { isCompliantWithNodeRangeRules } from './parseTreeUtils'; import { TypeEvaluator } from './typeEvaluatorTypes'; @@ -69,7 +69,7 @@ export class TestWalker extends ParseTreeWalker { break; case ParseNodeType.StringList: - if (child === node.d.annotation) { + if (child === getParserStringAnnotation(node)) { skipCheck = true; } break; diff --git a/packages/pyright-internal/src/analyzer/tracePrinter.ts b/packages/pyright-internal/src/analyzer/tracePrinter.ts index 5d7985a56b55..a0df80cfd0d9 100644 --- a/packages/pyright-internal/src/analyzer/tracePrinter.ts +++ b/packages/pyright-internal/src/analyzer/tracePrinter.ts @@ -28,7 +28,11 @@ export interface TracePrinter { printFileOrModuleName(fileUriOrModule: Uri | AbsoluteModuleDescriptor): string; } -export function createTracePrinter(roots: Uri[], includeRoots: boolean = false): TracePrinter { +export function createTracePrinter( + roots: Uri[], + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader, + includeRoots: boolean = false +): TracePrinter { function wrap(value: string | undefined, ch = "'") { return value ? `${ch}${value}${ch}` : ''; } @@ -160,7 +164,7 @@ export function createTracePrinter(roots: Uri[], includeRoots: boolean = false): node = node.parent; } - return node.nodeType === ParseNodeType.Module ? AnalyzerNodeInfo.getFileInfo(node) : undefined; + return node.nodeType === ParseNodeType.Module ? AnalyzerNodeInfo.getFileInfo(node, nodeInfo) : undefined; } function getText(value: string, max = 30) { diff --git a/packages/pyright-internal/src/analyzer/tuples.ts b/packages/pyright-internal/src/analyzer/tuples.ts index 34060b858dd2..d57874e47892 100644 --- a/packages/pyright-internal/src/analyzer/tuples.ts +++ b/packages/pyright-internal/src/analyzer/tuples.ts @@ -11,6 +11,7 @@ import { DiagnosticAddendum } from '../common/diagnostic'; import { DiagnosticRule } from '../common/diagnosticRules'; import { LocAddendum, LocMessage } from '../localization/localize'; import { ExpressionNode, ParseNodeType, SliceNode, TupleNode } from '../parser/parseNodes'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { addConstraintsForExpectedType } from './constraintSolver'; import { ConstraintTracker } from './constraintTracker'; import { getTypeVarScopesForNode } from './parseTreeUtils'; @@ -65,7 +66,8 @@ export function getTypeOfTuple( evaluator: TypeEvaluator, node: TupleNode, flags: EvalFlags, - inferenceContext?: InferenceContext | undefined + inferenceContext: InferenceContext | undefined, + nodeInfo: AnalyzerNodeInfoAccessor ): TypeResult { if ((flags & EvalFlags.TypeExpression) !== 0 && node.parent?.nodeType !== ParseNodeType.Argument) { // This is allowed inside of an index trailer, specifically @@ -105,7 +107,13 @@ export function getTypeOfTuple( if (!matchingSubtype) { const subtypeResult = evaluator.useSpeculativeMode(node, () => { - return getTypeOfTupleWithContext(evaluator, node, flags, makeInferenceContext(subtype)); + return getTypeOfTupleWithContext( + evaluator, + node, + flags, + makeInferenceContext(subtype), + nodeInfo + ); }); if (subtypeResult && evaluator.assignType(subtype, subtypeResult.type)) { @@ -121,7 +129,7 @@ export function getTypeOfTuple( let expectedTypeDiagAddendum: DiagnosticAddendum | undefined; if (expectedType) { - const result = getTypeOfTupleWithContext(evaluator, node, flags, makeInferenceContext(expectedType)); + const result = getTypeOfTupleWithContext(evaluator, node, flags, makeInferenceContext(expectedType), nodeInfo); if (result && !result.typeErrors) { return result; @@ -145,7 +153,8 @@ export function getTypeOfTupleWithContext( evaluator: TypeEvaluator, node: TupleNode, flags: EvalFlags, - inferenceContext: InferenceContext + inferenceContext: InferenceContext, + nodeInfo: AnalyzerNodeInfoAccessor ): TypeResult | undefined { inferenceContext.expectedType = transformPossibleRecursiveTypeAlias(inferenceContext.expectedType); if (!isClassInstance(inferenceContext.expectedType)) { @@ -182,7 +191,7 @@ export function getTypeOfTupleWithContext( ClassType.cloneAsInstance(tupleClass), inferenceContext.expectedType, tupleConstraints, - getTypeVarScopesForNode(node), + getTypeVarScopesForNode(node, nodeInfo), node.start ) ) { diff --git a/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts b/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts index 6c63a7a4ab33..1765508a6c26 100644 --- a/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeDocStringUtils.ts @@ -37,13 +37,7 @@ import { addIfNotNull, appendArray } from '../common/collectionUtils'; import { Uri } from '../common/uri/uri'; import { ModuleNode, ParseNodeType } from '../parser/parseNodes'; import { TypeEvaluator } from './typeEvaluatorTypes'; -import { - ClassIteratorFlags, - getClassIterator, - getClassMemberIterator, - isMaybeDescriptorInstance, - MemberAccessFlags, -} from './typeUtils'; +import { ClassIteratorFlags, getClassIterator, isMaybeDescriptorInstance, MemberAccessFlags } from './typeUtils'; export const DefaultClassIteratorFlagsForFunctions = MemberAccessFlags.SkipObjectBaseClass | @@ -70,112 +64,266 @@ export function isInheritedFromBuiltin(type: FunctionType | OverloadedType, clas ); } -export function getFunctionDocStringInherited( - type: FunctionType, - resolvedDecl: Declaration | undefined, - sourceMapper: SourceMapper, - classType?: ClassType -) { - return getFunctionDocStringInheritedInfo(type, resolvedDecl, sourceMapper, classType)?.docString; -} +// =========================================================================== +// Unified spec-ordered docstring resolution (component core). +// +// These implement the docstring-resolution-order spec and are the single source +// of ordering for every callable docstring surface (functions, methods, overloads, +// constructors). They operate on the FULL member symbol plus the call-matched +// overload(s) so that Rule A (matched overload -> implementation -> other overloads) +// applies uniformly, and they walk the MRO (derived-first, excluding builtin bases +// but always considering the class itself) for inheritance. Stub->source fallback +// is centralized in _functionDocInfo via _getFunctionDocStringFromDeclarationInfo. +// =========================================================================== + +// Rule A within one class's member: matched overload -> implementation -> other +// overloads (declaration order). Returns the first candidate that has a docstring. +function _selectMemberDocInfo( + memberType: Type, + matchedOverloads: FunctionType[] | undefined, + sourceMapper: SourceMapper +): FunctionDocStringInfo | undefined { + if (isFunction(memberType)) { + return _functionDocInfo(memberType, sourceMapper); + } -interface FunctionDocStringInfo { - docString: string; - forceLiteral?: boolean; - sourceDecl?: FunctionDeclaration; -} + if (!isOverloaded(memberType)) { + return undefined; + } -export function getFunctionDocStringInheritedInfo( - type: FunctionType, - resolvedDecl: Declaration | undefined, - sourceMapper: SourceMapper, - classType?: ClassType -) { - let docInfo: FunctionDocStringInfo | undefined; - - // Don't allow docs to be inherited from the builtins to other classes; - // they typically not helpful (and object's __init__ doc causes issues - // with our current docstring traversal). - if (!isInheritedFromBuiltin(type, classType) && resolvedDecl && isFunctionDeclaration(resolvedDecl)) { - docInfo = _getFunctionDocStringInfo(type, resolvedDecl, sourceMapper); - } - - // Search mro - if (!docInfo?.docString && classType) { - const funcName = type.shared.name; - const memberIterator = getClassMemberIterator(classType, funcName, DefaultClassIteratorFlagsForFunctions); - - for (const classMember of memberIterator) { - const decls = classMember.symbol.getDeclarations(); - if (decls.length > 0) { - const inheritedDecl = classMember.symbol.getDeclarations().slice(-1)[0]; - if (isFunctionDeclaration(inheritedDecl)) { - docInfo = _getFunctionDocStringFromDeclarationInfo(inheritedDecl, sourceMapper); - if (docInfo?.docString) { - break; - } + const overloads = OverloadedType.getOverloads(memberType); + const impl = OverloadedType.getImplementation(memberType); + + // Tier 1: the call-matched overload(s). First read the matched overload's OWN docstring + // directly; this is robust to declaration-cleared specializations (e.g. a ParamSpec/Callable + // transform via applyParamSpecValue clones the overload with shared.docString copied but its + // declaration dropped, so identity/declaration matching against the re-fetched symbol would + // miss it). Then fall back to the corresponding original overload from the full symbol. + if (matchedOverloads && matchedOverloads.length > 0) { + // matchedOverloads is a hint forwarded from the caller (e.g. resolveConstructorDocInfo + // forwards the same hint to both __init__ and __new__). Only trust a matched overload that + // actually belongs to this member; otherwise another member's matched overload could + // short-circuit Rule B here. Name is preserved across binding/specialization, so filtering + // by name is a safe scope check. + const memberName = overloads.length > 0 ? overloads[0].shared.name : undefined; + for (const matched of matchedOverloads) { + if (memberName !== undefined && matched.shared.name !== memberName) { + continue; + } + const info = _functionDocInfo(matched, sourceMapper); + if (info) { + return info; + } + } + for (const overload of overloads) { + if (_isMatchedOverload(overload, matchedOverloads)) { + const info = _functionDocInfo(overload, sourceMapper); + if (info) { + return info; } } } } - if (docInfo?.docString) { - return docInfo; + // Tier 2: the implementation. + if (impl && isFunction(impl)) { + const info = _functionDocInfo(impl, sourceMapper); + if (info) { + return info; + } } - if (!type.shared.docString) { - return undefined; + // Tier 3: the remaining overloads, in declaration order. + for (const overload of overloads) { + const info = _functionDocInfo(overload, sourceMapper); + if (info) { + return info; + } } - return { - docString: type.shared.docString, - sourceDecl: - type.shared.declaration && isFunctionDeclaration(type.shared.declaration) - ? type.shared.declaration - : undefined, - }; + return undefined; +} + +function _isMatchedOverload(overload: FunctionType, matchedOverloads: FunctionType[]): boolean { + // Match by object identity first, then by shared declaration. The latter keeps the + // matched-overload tier robust to binding/specialization (e.g. a generic `Box[int]()` + // whose matched overload is a specialized clone); `shared.declaration` is preserved + // across those transforms. If it ever were not, this falls through to the impl/other tiers. + return matchedOverloads.some( + (m) => m === overload || (!!m.shared.declaration && m.shared.declaration === overload.shared.declaration) + ); } -export function getOverloadedDocStringsInherited( - type: OverloadedType, - resolvedDecls: Declaration[], +function _functionDocInfo(type: FunctionType, sourceMapper: SourceMapper): FunctionDocStringInfo | undefined { + if (type.shared.docString) { + // Leave forceLiteral undefined so downstream formatting can apply its built-in-module + // literal heuristic (matching the legacy getFunctionDocStringInheritedInfo behavior). + return { + docString: type.shared.docString, + sourceDecl: + type.shared.declaration && isFunctionDeclaration(type.shared.declaration) + ? type.shared.declaration + : undefined, + }; + } + + if (type.shared.declaration) { + return _getFunctionDocStringFromDeclarationInfo(type.shared.declaration, sourceMapper); + } + + return undefined; +} + +// Resolve ONLY the passed function's own docstring (with stub->source fallback), without borrowing +// from sibling overloads, the implementation, the class, or the MRO. Used where each overload must +// show its own docstring (e.g. signature-help enumeration) rather than a symbol-level resolved one. +export function getFunctionOwnDocString(type: FunctionType, sourceMapper: SourceMapper): string | undefined { + return _functionDocInfo(type, sourceMapper)?.docString; +} + +// Resolve a function/method docstring per spec. For a class member, resolve the class's OWN +// member first (the full, unnarrowed overload set) via Rule A, then walk base classes +// (excluding builtin bases) for inheritance. For a free function, resolve the passed type. +// The builtin-inheritance guard and the trailing type.shared.docString fallback mirror the +// legacy getFunctionDocStringInheritedInfo behavior so builtin docs don't leak into user classes. +export function resolveMethodDocInfo( + type: FunctionType | OverloadedType, + classType: ClassType | undefined, + matchedOverloads: FunctionType[] | undefined, sourceMapper: SourceMapper, - evaluator: TypeEvaluator, - classType?: ClassType -) { - let docStrings: string[] | undefined; + evaluator: TypeEvaluator +): FunctionDocStringInfo | undefined { + const memberName = _memberNameOfType(type); - // Don't allow docs to be inherited from the builtins to other classes; - // they typically not helpful (and object's __init__ doc causes issues - // with our current docstring traversal). + // Step 1: the member's own docstring (Rule A over the full overload set on its class), unless + // the member is inherited from a builtin (its generic doc should not surface on a user class). if (!isInheritedFromBuiltin(type, classType)) { - for (const resolvedDecl of resolvedDecls) { - docStrings = getOverloadedDocStrings(type, resolvedDecl, sourceMapper); - if (docStrings && docStrings.length > 0) { - return docStrings; + let ownType: Type = type; + if (classType && memberName) { + const symbol = ClassType.getSymbolTable(classType).get(memberName); + if (symbol) { + ownType = evaluator.getEffectiveTypeOfSymbol(symbol); + } + } else if (!classType && memberName) { + // Free/module-level function: re-fetch the full (unnarrowed) overloaded symbol so + // sibling overloads are visible when the passed type was narrowed to the matched + // overload. Only adopt the re-fetched type when it is overloaded; otherwise keep the + // passed type so a decorator / functools.wraps-synthesized function (whose docstring + // is not on the raw declared symbol) is not discarded. + const primary = isOverloaded(type) ? OverloadedType.getOverloads(type)[0] : type; + const declNode = primary?.shared.declaration?.node; + if (declNode) { + const symbolWithScope = evaluator.lookUpSymbolRecursive( + declNode, + memberName, + /* honorCodeFlow */ false + ); + if (symbolWithScope) { + const refetched = evaluator.getEffectiveTypeOfSymbol(symbolWithScope.symbol); + if (isOverloaded(refetched)) { + ownType = refetched; + } + } } } + + const own = _selectMemberDocInfo(ownType, matchedOverloads, sourceMapper); + if (own?.docString) { + return own; + } } - // Search mro - const overloads = OverloadedType.getOverloads(type); - if (classType && overloads.length > 0) { - const funcName = overloads[0].shared.name; - const memberIterator = getClassMemberIterator(classType, funcName, DefaultClassIteratorFlagsForFunctions); + // Step 2: inheritance — walk base classes (exclude builtin bases; the original class was + // handled in step 1), applying Rule A per class. + if (classType && memberName) { + for (const [mroClass] of getClassIterator(classType, ClassIteratorFlags.Default)) { + if (!isInstantiableClass(mroClass)) { + continue; + } + if (ClassType.isSameGenericClass(mroClass, classType)) { + continue; + } + if (ClassType.isBuiltIn(mroClass)) { + continue; + } - for (const classMember of memberIterator) { - const inheritedDecl = classMember.symbol.getDeclarations().slice(-1)[0]; - const declType = evaluator.getTypeForDeclaration(inheritedDecl)?.type; - if (declType) { - docStrings = getOverloadedDocStrings(declType, inheritedDecl, sourceMapper); - if (docStrings && docStrings.length > 0) { - break; - } + const symbol = ClassType.getSymbolTable(mroClass).get(memberName); + if (!symbol) { + continue; } + + const info = _selectMemberDocInfo(evaluator.getEffectiveTypeOfSymbol(symbol), undefined, sourceMapper); + if (info?.docString) { + return info; + } + } + } + + // Step 3: the passed type's own docstring (last resort, mirrors legacy behavior). + if (isFunction(type) && type.shared.docString) { + return { + docString: type.shared.docString, + sourceDecl: + type.shared.declaration && isFunctionDeclaration(type.shared.declaration) + ? type.shared.declaration + : undefined, + }; + } + + return undefined; +} + +function _memberNameOfType(type: FunctionType | OverloadedType): string | undefined { + if (isOverloaded(type)) { + const overloads = OverloadedType.getOverloads(type); + return overloads.length > 0 ? overloads[0].shared.name : undefined; + } + return type.shared.name; +} + +// Resolve a constructor-method docstring per spec (Phase 1). Walk the MRO and, for each +// class, resolve its own `__init__` then `__new__` via Rule A. Returns undefined so the +// caller can fall back to the class docstring (Phase 2). +export function resolveConstructorDocInfo( + classType: ClassType, + matchedOverloads: FunctionType[] | undefined, + sourceMapper: SourceMapper, + evaluator: TypeEvaluator +): FunctionDocStringInfo | undefined { + for (const [mroClass] of getClassIterator(classType, ClassIteratorFlags.Default)) { + if (!isInstantiableClass(mroClass)) { + continue; + } + if (!ClassType.isSameGenericClass(mroClass, classType) && ClassType.isBuiltIn(mroClass)) { + continue; + } + + const symbolTable = ClassType.getSymbolTable(mroClass); + + const initSymbol = symbolTable.get('__init__'); + const initInfo = initSymbol + ? _selectMemberDocInfo(evaluator.getEffectiveTypeOfSymbol(initSymbol), matchedOverloads, sourceMapper) + : undefined; + if (initInfo?.docString) { + return initInfo; + } + + const newSymbol = symbolTable.get('__new__'); + const newInfo = newSymbol + ? _selectMemberDocInfo(evaluator.getEffectiveTypeOfSymbol(newSymbol), matchedOverloads, sourceMapper) + : undefined; + if (newInfo?.docString) { + return newInfo; } } - return docStrings ?? []; + return undefined; +} + +export interface FunctionDocStringInfo { + docString: string; + forceLiteral?: boolean; + sourceDecl?: FunctionDeclaration; } export function getPropertyDocStringInherited( @@ -291,6 +439,40 @@ export function getClassDocString( } } + // Fall back to inheriting a docstring from a base class (approximating + // Python's `inspect.getdoc`, but excluding builtin bases). Walk the MRO and + // use the nearest base's docstring. Skip builtin classes (e.g. `object`) so + // their generic docstrings don't leak, mirroring the method behavior in + // getFunctionDocStringInherited. Only inherit when the class truly has no + // docstring of its own. An explicit empty docstring (`""`) is recorded on + // `classType.shared.docString` and must block inheritance, matching Python + // `inspect.getdoc`. Note the empty string is discarded by the resolution + // above (helpers use truthy checks), so we consult the class's own docstring + // directly rather than the resolved local. + // + // Known limitation: unlike the class's own docstring (which resolves through + // `sourceMapper` to recover `.py` docs behind a `.pyi` stub), this inherited + // branch reads `mroClass.shared.docString` directly. So an inherited docstring + // surfaces only when the base doesn't ship a doc-less stub. This keeps the + // Pyright diff surgical; the async path mirrors the same decision. + if (docString === undefined && classType.shared.docString === undefined) { + for (const [mroClass] of getClassIterator(classType, ClassIteratorFlags.Default)) { + if (!isInstantiableClass(mroClass)) { + continue; + } + if (ClassType.isSameGenericClass(mroClass, classType)) { + continue; + } + if (ClassType.isBuiltIn(mroClass)) { + continue; + } + if (mroClass.shared.docString) { + docString = mroClass.shared.docString; + break; + } + } + } + return docString; } @@ -313,64 +495,6 @@ export function getVariableDocString( } } -export function getOverloadedDocStrings(type: Type, resolvedDecl: Declaration | undefined, sourceMapper: SourceMapper) { - if (!isOverloaded(type)) { - return undefined; - } - - const docStrings: string[] = []; - const overloads = OverloadedType.getOverloads(type); - const impl = OverloadedType.getImplementation(type); - - if (overloads.some((o) => o.shared.docString)) { - overloads.forEach((overload) => { - if (overload.shared.docString) { - docStrings.push(overload.shared.docString); - } - }); - } - - if (impl && isFunction(impl) && impl.shared.docString) { - docStrings.push(impl.shared.docString); - } - - // Fallback: try to extract docstrings from per-overload declarations. - // This handles cases where overloads are specialized (e.g. via a Callable[P, T] - // decorator) and shared.docString was not propagated to the specialized types. - if (docStrings.length === 0) { - for (const overload of overloads) { - if (overload.shared.declaration) { - const declDocString = _getFunctionDocStringFromDeclaration(overload.shared.declaration, sourceMapper); - if (declDocString) { - docStrings.push(declDocString); - } - } - } - - if (docStrings.length === 0 && impl && isFunction(impl) && impl.shared.declaration) { - const declDocString = _getFunctionDocStringFromDeclaration(impl.shared.declaration, sourceMapper); - if (declDocString) { - docStrings.push(declDocString); - } - } - } - - if ( - docStrings.length === 0 && - resolvedDecl && - isStubFile(resolvedDecl.uri) && - isFunctionDeclaration(resolvedDecl) - ) { - const implDecls = sourceMapper.findFunctionDeclarations(resolvedDecl); - const docString = _getFunctionOrClassDeclsDocString(implDecls); - if (docString) { - docStrings.push(docString); - } - } - - return docStrings; -} - function _getPropertyDocStringInherited( decl: Declaration | undefined, sourceMapper: SourceMapper, @@ -430,39 +554,6 @@ export function getFunctionDocStringFromDeclarationInfo( return _getFunctionDocStringFromDeclarationInfo(resolvedDecl, sourceMapper); } -function _getFunctionDocStringInfo( - type: Type, - resolvedDecl: FunctionDeclaration | undefined, - sourceMapper: SourceMapper -): FunctionDocStringInfo | undefined { - if (!isFunction(type)) { - return undefined; - } - - if (type.shared.docString) { - return { - docString: type.shared.docString, - sourceDecl: - type.shared.declaration && isFunctionDeclaration(type.shared.declaration) - ? type.shared.declaration - : resolvedDecl, - }; - } - - if (resolvedDecl) { - const docInfo = _getFunctionDocStringFromDeclarationInfo(resolvedDecl, sourceMapper); - if (docInfo) { - return docInfo; - } - } - - if (type.shared.declaration) { - return _getFunctionDocStringFromDeclarationInfo(type.shared.declaration, sourceMapper); - } - - return undefined; -} - function _getFunctionDocStringFromDeclarationInfo( resolvedDecl: FunctionDeclaration, sourceMapper: SourceMapper diff --git a/packages/pyright-internal/src/analyzer/typeEvaluator.ts b/packages/pyright-internal/src/analyzer/typeEvaluator.ts index 4f1ac194b20e..751cf58eabaa 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluator.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluator.ts @@ -608,6 +608,7 @@ export interface EvaluatorOptions { minimumLoggingThreshold: number; evaluateUnknownImportsAsAny: boolean; verifyTypeCacheEvaluatorFlags: boolean; + nodeInfoReader: AnalyzerNodeInfo.AnalyzerNodeInfoReader; } // Describes a "deferred class completion" that is run when a class type is @@ -651,6 +652,7 @@ export function createTypeEvaluator( evaluatorOptions: EvaluatorOptions, wrapWithLogger: LogWrapper ): TypeEvaluator { + const nodeInfo = AnalyzerNodeInfo.createAnalyzerNodeInfoAccessor(evaluatorOptions.nodeInfoReader); const symbolResolutionStack: SymbolResolutionStackEntry[] = []; const speculativeTypeTracker = new SpeculativeTypeTracker(); const suppressedNodeStack: SuppressedNodeStackEntry[] = []; @@ -671,6 +673,26 @@ export function createTypeEvaluator( const signatureTrackerStack: SignatureTrackerStackEntry[] = []; let prefetched: Partial | undefined; + function getScopeForNode(node: ParseNode) { + return ScopeUtils.getScopeForNode(node, nodeInfo); + } + + function getScopeHierarchy(node: ParseNode, stopScope?: Scope) { + return ScopeUtils.getScopeHierarchy(node, stopScope, nodeInfo); + } + + function findTopNodeInScope(node: ParseNode, scope: Scope) { + return ScopeUtils.findTopNodeInScope(node, scope, nodeInfo); + } + + function getScopeIdForNode(node: ParseNode) { + return ParseTreeUtils.getScopeIdForNode(node, nodeInfo); + } + + function getTypeVarScopesForNode(node: ParseNode) { + return ParseTreeUtils.getTypeVarScopesForNode(node, nodeInfo); + } + function runWithCancellationToken(token: CancellationToken, callback: () => T): T; function runWithCancellationToken(token: CancellationToken, callback: () => Promise): Promise; function runWithCancellationToken(token: CancellationToken, callback: () => T | Promise): T | Promise { @@ -750,7 +772,7 @@ export function createTypeEvaluator( const expectedFlags = cacheEntry.flags; if (expectedFlags !== undefined && flags !== expectedFlags) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const position = convertOffsetToPosition(node.start, fileInfo.lines); const message = @@ -1051,7 +1073,7 @@ export function createTypeEvaluator( // so don't re-enter this block once we start executing it. prefetched = {}; - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); prefetched.objectClass = getBuiltInType(node, 'object'); prefetched.typeClass = getBuiltInType(node, 'type'); @@ -1197,7 +1219,7 @@ export function createTypeEvaluator( !typeResult.type.priv.includeSubclasses && ClassType.isBuiltIn(typeResult.type, 'bytes') ) { - if (AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.disableBytesTypePromotions) { + if (nodeInfo.getFileInfo(node).diagnosticRuleSet.disableBytesTypePromotions) { typeResult = { ...typeResult, type: ClassType.cloneRemoveTypePromotions(typeResult.type), @@ -1296,7 +1318,7 @@ export function createTypeEvaluator( } case ParseNodeType.Tuple: { - typeResult = getTypeOfTuple(evaluatorInterface, node, flags, inferenceContext); + typeResult = getTypeOfTuple(evaluatorInterface, node, flags, inferenceContext, nodeInfo); break; } @@ -1340,7 +1362,13 @@ export function createTypeEvaluator( effectiveFlags &= ~EvalFlags.InstantiableType; } - typeResult = getTypeOfBinaryOperation(evaluatorInterface, node, effectiveFlags, inferenceContext); + typeResult = getTypeOfBinaryOperation( + evaluatorInterface, + node, + effectiveFlags, + inferenceContext, + nodeInfo + ); break; } @@ -1366,7 +1394,7 @@ export function createTypeEvaluator( } case ParseNodeType.Ternary: { - typeResult = getTypeOfTernaryOperation(evaluatorInterface, node, flags, inferenceContext); + typeResult = getTypeOfTernaryOperation(evaluatorInterface, node, flags, inferenceContext, nodeInfo); break; } @@ -1494,7 +1522,7 @@ export function createTypeEvaluator( } if (isTypeCheckingOnly) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if (!fileInfo.isStubFile) { addDiagnostic( @@ -1801,8 +1829,9 @@ export function createTypeEvaluator( updatedFlags &= ~EvalFlags.TypeFormArg; - if (node.d.annotation && (flags & EvalFlags.TypeExpression) !== 0) { - return getTypeOfExpression(node.d.annotation, updatedFlags); + const annotation = nodeInfo.getStringAnnotation(node); + if (annotation && (flags & EvalFlags.TypeExpression) !== 0) { + return getTypeOfExpression(annotation, updatedFlags); } if (node.d.strings.length === 1) { @@ -1970,7 +1999,7 @@ export function createTypeEvaluator( } function getTypeOfAnnotation(node: ExpressionNode, options?: ExpectedTypeOptions): Type { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // Special-case the typing.pyi file, which contains some special // types that the type analyzer needs to interpret differently. @@ -3440,7 +3469,7 @@ export function createTypeEvaluator( } function getTypeOfModule(node: ParseNode, symbolName: string, nameParts: string[]) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const lookupResult = importLookup({ nameParts, importingFileUri: fileInfo.fileUri }); if (!lookupResult) { @@ -3456,8 +3485,9 @@ export function createTypeEvaluator( } function checkCodeFlowTooComplex(node: ParseNode): boolean { - const scopeNode = node.nodeType === ParseNodeType.Function ? node : ParseTreeUtils.getExecutionScopeNode(node); - const codeComplexity = AnalyzerNodeInfo.getCodeFlowComplexity(scopeNode); + const scopeNode = + node.nodeType === ParseNodeType.Function ? node : ParseTreeUtils.getExecutionScopeNode(node, nodeInfo); + const codeComplexity = nodeInfo.getCodeFlowComplexity(scopeNode); if (codeComplexity > maxCodeComplexity) { let errorRange: TextRange = scopeNode; @@ -3467,7 +3497,7 @@ export function createTypeEvaluator( errorRange = { start: 0, length: 0 }; } - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); addDiagnosticForTextRange( fileInfo, DiagnosticRule.reportGeneralTypeIssues, @@ -3494,7 +3524,7 @@ export function createTypeEvaluator( return Reachability.Reachable; } - const flowNode = AnalyzerNodeInfo.getFlowNode(node); + const flowNode = nodeInfo.getFlowNode(node); if (!flowNode) { if (node.parent) { return getNodeReachability(node.parent, sourceNode); @@ -3502,13 +3532,13 @@ export function createTypeEvaluator( return Reachability.UnreachableStructural; } - const sourceFlowNode = sourceNode ? AnalyzerNodeInfo.getFlowNode(sourceNode) : undefined; + const sourceFlowNode = sourceNode ? nodeInfo.getFlowNode(sourceNode) : undefined; return codeFlowEngine.getFlowNodeReachability(flowNode, sourceFlowNode); } function getAfterNodeReachability(node: ParseNode): Reachability { - const returnFlowNode = AnalyzerNodeInfo.getAfterFlowNode(node); + const returnFlowNode = nodeInfo.getAfterFlowNode(node); if (!returnFlowNode) { return Reachability.UnreachableStructural; } @@ -3522,7 +3552,7 @@ export function createTypeEvaluator( return reachability; } - const executionScopeNode = ParseTreeUtils.getExecutionScopeNode(node); + const executionScopeNode = ParseTreeUtils.getExecutionScopeNode(node, nodeInfo); if (!isFlowNodeReachableUsingNeverNarrowing(executionScopeNode, returnFlowNode)) { return Reachability.UnreachableByAnalysis; } @@ -3552,8 +3582,8 @@ export function createTypeEvaluator( return true; } - const sourceFlowNode = AnalyzerNodeInfo.getFlowNode(sourceNode); - const sinkFlowNode = AnalyzerNodeInfo.getFlowNode(sinkNode); + const sourceFlowNode = nodeInfo.getFlowNode(sourceNode); + const sinkFlowNode = nodeInfo.getFlowNode(sinkNode); if (!sourceFlowNode || !sinkFlowNode) { return false; } @@ -3577,7 +3607,7 @@ export function createTypeEvaluator( } if (!isDiagnosticSuppressedForNode(node)) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const reportTypeReachability = fileInfo.diagnosticRuleSet.enableReachabilityAnalysis; if ( @@ -3599,7 +3629,7 @@ export function createTypeEvaluator( function addDeprecated(message: string, node: ParseNode) { if (!isDiagnosticSuppressedForNode(node)) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); fileInfo.diagnosticSink.addDeprecatedWithTextRange(message, node); } } @@ -3623,7 +3653,7 @@ export function createTypeEvaluator( } if (isNodeReachable(node)) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); return fileInfo.diagnosticSink.addDiagnosticWithTextRange(diagLevel, message, range ?? node); } @@ -3660,7 +3690,7 @@ export function createTypeEvaluator( } function addDiagnostic(rule: DiagnosticRule, message: string, node: ParseNode, range?: TextRange) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const diagLevel = fileInfo.diagnosticRuleSet[rule] as DiagnosticLevel; if (diagLevel === 'none') { @@ -3671,7 +3701,7 @@ export function createTypeEvaluator( if (containingFunction) { // Should we suppress this diagnostic because it's within an unannotated function? - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if (!fileInfo.diagnosticRuleSet.analyzeUnannotatedFunctions) { // Is the target node within the body of the function? If so, suppress the diagnostic. if ( @@ -3687,7 +3717,8 @@ export function createTypeEvaluator( const functionInfo = getFunctionInfoFromDecorators( evaluatorInterface, containingFunction, - !!containingClassNode + !!containingClassNode, + nodeInfo ); if ((functionInfo.flags & FunctionTypeFlags.NoTypeCheck) !== 0) { @@ -3742,7 +3773,7 @@ export function createTypeEvaluator( const declarations = symbolWithScope.symbol.getDeclarations(); let declaredType = getDeclaredTypeOfSymbol(symbolWithScope.symbol)?.type; - const fileInfo = AnalyzerNodeInfo.getFileInfo(nameNode); + const fileInfo = nodeInfo.getFileInfo(nameNode); // If this is a class scope and there is no type declared for this class variable, // see if a parent class has a type declared. @@ -3771,7 +3802,7 @@ export function createTypeEvaluator( if (declaredType && !isTypeAlias) { let diagAddendum = new DiagnosticAddendum(); - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(nameNode); + const liveScopeIds = getTypeVarScopesForNode(nameNode); const boundDeclaredType = makeTypeVarsBound(declaredType, liveScopeIds); const srcType = makeTypeVarsBound(typeResult.type, liveScopeIds); @@ -3803,7 +3834,7 @@ export function createTypeEvaluator( // appears to be a constant, use the strict source type. If it's a member // variable that can be overridden by a child class, use the more general // version by stripping off the literal and TypeForm. - const scope = ScopeUtils.getScopeForNode(nameNode); + const scope = getScopeForNode(nameNode); if (scope?.type === ScopeType.Class) { if ( TypeBase.isInstance(destType) && @@ -3960,7 +3991,7 @@ export function createTypeEvaluator( srcExprNode?: ExpressionNode ) { const memberName = node.d.member.d.value; - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const classDef = ParseTreeUtils.getEnclosingClass(node); if (!classDef) { @@ -4549,8 +4580,8 @@ export function createTypeEvaluator( } function markNamesAccessed(node: ParseNode, names: string[]) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); - const scope = ScopeUtils.getScopeForNode(node); + const fileInfo = nodeInfo.getFileInfo(node); + const scope = getScopeForNode(node); if (scope) { names.forEach((symbolName) => { @@ -4878,7 +4909,7 @@ export function createTypeEvaluator( } function getTypeOfName(node: NameNode, flags: EvalFlags): TypeResult { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const name = node.d.value; let symbol: Symbol | undefined; let type: Type | undefined; @@ -5091,7 +5122,7 @@ export function createTypeEvaluator( if (isTypeVar(type) && type.priv.scopeId && !type.shared.isSynthesized) { if (!isTypeVarTuple(type) || !type.priv.isInUnion) { - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopeIds = getTypeVarScopesForNode(node); type = TypeBase.cloneWithTypeForm(type, convertToInstance(makeTypeVarsBound(type, liveScopeIds))); } } else if (isInstantiableClass(type) && !type.priv.includeSubclasses && !ClassType.isSpecialBuiltIn(type)) { @@ -5149,7 +5180,7 @@ export function createTypeEvaluator( } // Disable for assignments in the typings.pyi file, since it defines special forms. - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if (fileInfo.isTypingStubFile) { return type; } @@ -5237,9 +5268,7 @@ export function createTypeEvaluator( // for code flow analysis. if ( !decls.every( - (decl) => - decl.type === DeclarationType.Param || - ScopeUtils.getScopeForNode(decl.node) === symbolWithScope.scope + (decl) => decl.type === DeclarationType.Param || getScopeForNode(decl.node) === symbolWithScope.scope ) ) { return undefined; @@ -5252,7 +5281,7 @@ export function createTypeEvaluator( (decl) => decl.type !== DeclarationType.Variable || decl.isFinal || - ScopeUtils.getScopeForNode(decl.node)?.type !== ScopeType.Module + getScopeForNode(decl.node)?.type !== ScopeType.Module ) ) { return undefined; @@ -5260,18 +5289,18 @@ export function createTypeEvaluator( // If the symbol is a variable captured by an inner function // or lambda, see if we can infer the type from the outer scope. - const scopeHierarchy = ScopeUtils.getScopeHierarchy(node, symbolWithScope.scope); + const scopeHierarchy = getScopeHierarchy(node, symbolWithScope.scope); if (scopeHierarchy && scopeHierarchy.length >= 2) { // Find the parse node associated with the scope that is just inside of the // scope that declares the captured variable. - const innerScopeNode = ScopeUtils.findTopNodeInScope(node, scopeHierarchy[scopeHierarchy.length - 2]); + const innerScopeNode = findTopNodeInScope(node, scopeHierarchy[scopeHierarchy.length - 2]); if ( innerScopeNode?.nodeType === ParseNodeType.Function || innerScopeNode?.nodeType === ParseNodeType.Lambda || innerScopeNode?.nodeType === ParseNodeType.Class ) { - const innerScopeCodeFlowNode = AnalyzerNodeInfo.getFlowNode(innerScopeNode); + const innerScopeCodeFlowNode = nodeInfo.getFlowNode(innerScopeNode); if (innerScopeCodeFlowNode) { // See if any of the assignments of the symbol are reachable // from this node. If so, we cannot apply any narrowing because @@ -5284,7 +5313,7 @@ export function createTypeEvaluator( return true; } - const declCodeFlowNode = AnalyzerNodeInfo.getFlowNode(decl.node); + const declCodeFlowNode = nodeInfo.getFlowNode(decl.node); if (!declCodeFlowNode) { return false; } @@ -5455,7 +5484,7 @@ export function createTypeEvaluator( ); } - const scopeIdToAssign = ParseTreeUtils.getScopeIdForNode(enclosingScope); + const scopeIdToAssign = getScopeIdForNode(enclosingScope); return TypeVarType.cloneForScopeId( type, @@ -5491,7 +5520,7 @@ export function createTypeEvaluator( const enclosingClass = ParseTreeUtils.getEnclosingClass(node); if (enclosingClass) { - const liveTypeVarScopeIds = ParseTreeUtils.getTypeVarScopesForNode(enclosingClass); + const liveTypeVarScopeIds = getTypeVarScopesForNode(enclosingClass); if (!liveTypeVarScopeIds.includes(scopeId)) { addDiagnostic( DiagnosticRule.reportGeneralTypeIssues, @@ -5787,7 +5816,7 @@ export function createTypeEvaluator( if (!skipPartialUnknownCheck) { reportPossibleUnknownAssignment( - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportUnknownMemberType, + nodeInfo.getFileInfo(node).diagnosticRuleSet.reportUnknownMemberType, DiagnosticRule.reportUnknownMemberType, node.d.member, typeResult.type, @@ -5811,7 +5840,7 @@ export function createTypeEvaluator( let baseType = transformPossibleRecursiveTypeAlias(baseTypeResult.type); const memberName = node.d.member.d.value; let diag = new DiagnosticAddendum(); - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); let type: Type | undefined; let narrowedTypeForSet: Type | undefined; let typeErrors = false; @@ -5942,7 +5971,8 @@ export function createTypeEvaluator( node, baseType, memberName, - isIncomplete + isIncomplete, + nodeInfo ); if (enumMemberResult) { @@ -6432,7 +6462,7 @@ export function createTypeEvaluator( isAccessedThroughObject ? ClassType.cloneAsInstantiable(classType) : classType ) ) { - setSymbolAccessed(AnalyzerNodeInfo.getFileInfo(errorNode), memberInfo.symbol, errorNode); + setSymbolAccessed(nodeInfo.getFileInfo(errorNode), memberInfo.symbol, errorNode); } // Special-case `__init_subclass` and `__class_getitem__` because @@ -7128,14 +7158,14 @@ export function createTypeEvaluator( // they don't result in runtime exceptions when used in this manner. let skipSubscriptCheck = (flags & EvalFlags.VarTypeAnnotation) !== 0; if (skipSubscriptCheck) { - const scopeNode = ParseTreeUtils.getExecutionScopeNode(node); + const scopeNode = ParseTreeUtils.getExecutionScopeNode(node, nodeInfo); if (scopeNode?.nodeType === ParseNodeType.Module) { skipSubscriptCheck = false; } } if (!skipSubscriptCheck) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if ( isInstantiableClass(baseTypeResult.type) && ClassType.isBuiltIn(baseTypeResult.type) && @@ -7912,7 +7942,7 @@ export function createTypeEvaluator( // This feature is currently experimental. const supportsTypedDictTypeArg = - AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.enableExperimentalFeatures && + nodeInfo.getFileInfo(node).diagnosticRuleSet.enableExperimentalFeatures && ClassType.isBuiltIn(concreteSubtype, 'TypedDict'); let typeArgs = getTypeArgs(node, flags, { @@ -8444,7 +8474,7 @@ export function createTypeEvaluator( // treated as a type. The others can be regular (non-type) objects. adjFlags = EvalFlags.NoParamSpec | EvalFlags.NoTypeVarTuple | EvalFlags.NoSpecialize | EvalFlags.NoClassVar; - if (isAnnotationEvaluationPostponed(AnalyzerNodeInfo.getFileInfo(node))) { + if (isAnnotationEvaluationPostponed(nodeInfo.getFileInfo(node))) { adjFlags |= EvalFlags.ForwardRefs; } @@ -8565,7 +8595,7 @@ export function createTypeEvaluator( let adjustedFlags = flags | EvalFlags.InstantiableType | EvalFlags.ConvertEllipsisToAny | EvalFlags.StrLiteralAsType; - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if (fileInfo.isStubFile) { adjustedFlags |= EvalFlags.ForwardRefs; } @@ -8584,7 +8614,7 @@ export function createTypeEvaluator( } else if (node.nodeType === ParseNodeType.Dictionary && supportsDictExpression) { const inlinedTypeDict = prefetched?.typedDictClass && isInstantiableClass(prefetched.typedDictClass) - ? createTypedDictTypeInlined(evaluatorInterface, node, prefetched.typedDictClass) + ? createTypedDictTypeInlined(evaluatorInterface, node, prefetched.typedDictClass, nodeInfo) : undefined; const keyTypeFallback = prefetched?.strClass && isInstantiableClass(prefetched.strClass) @@ -8787,7 +8817,7 @@ export function createTypeEvaluator( const isCyclicalTypeVarCall = isInstantiableClass(baseTypeResult.type) && ClassType.isBuiltIn(baseTypeResult.type, 'TypeVar') && - AnalyzerNodeInfo.getFileInfo(node).isTypingStubFile; + nodeInfo.getFileInfo(node).isTypingStubFile; if (!isCyclicalTypeVarCall) { argList.forEach((arg) => { @@ -9046,7 +9076,7 @@ export function createTypeEvaluator( let scope: Scope | undefined; while (curNode) { - scope = ScopeUtils.getScopeForNode(curNode); + scope = getScopeForNode(curNode); // Stop when we get a valid scope that's not a list comprehension // scope. That includes lambdas, functions, classes, and modules. @@ -9087,7 +9117,7 @@ export function createTypeEvaluator( addDiagnostic(DiagnosticRule.reportCallIssue, LocMessage.superCallArgCount(), node.d.args[2]); } - const enclosingFunction = ParseTreeUtils.getEnclosingFunctionEvaluationScope(node); + const enclosingFunction = ParseTreeUtils.getEnclosingFunctionEvaluationScope(node, nodeInfo); const enclosingClass = enclosingFunction ? ParseTreeUtils.getEnclosingClass(enclosingFunction) : undefined; const enclosingClassType = enclosingClass ? getTypeOfClass(enclosingClass)?.classType : undefined; @@ -9119,7 +9149,8 @@ export function createTypeEvaluator( const functionInfo = getFunctionInfoFromDecorators( evaluatorInterface, enclosingFunction, - /* isInClass */ true + /* isInClass */ true, + nodeInfo ); if ((functionInfo?.flags & FunctionTypeFlags.StaticMethod) !== 0) { @@ -9218,7 +9249,7 @@ export function createTypeEvaluator( FunctionParam.isTypeDeclared(methodType.shared.parameters[0]) ) { let paramType = FunctionType.getParamType(methodType, 0); - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopeIds = getTypeVarScopesForNode(node); paramType = makeTypeVarsBound(paramType, liveScopeIds); implicitBindToType = makeTopLevelTypeVarsConcrete(paramType); } @@ -10282,7 +10313,13 @@ export function createTypeEvaluator( addDiagnostic(DiagnosticRule.reportUntypedNamedTuple, LocMessage.namedTupleNoTypes(), errorNode); const result: CallResult = { - returnType: createNamedTupleType(evaluatorInterface, errorNode, argList, /* includesTypes */ false), + returnType: createNamedTupleType( + evaluatorInterface, + errorNode, + argList, + /* includesTypes */ false, + nodeInfo + ), }; validateArgs(errorNode, argList, { type: type }, constraints, skipUnknownArgCheck, inferenceContext); @@ -10379,12 +10416,17 @@ export function createTypeEvaluator( } let isAbstract = false; - const lastFunctionInfo = getFunctionInfoFromDecorators(evaluatorInterface, lastDecl.node, /* isInClass */ true); + const lastFunctionInfo = getFunctionInfoFromDecorators( + evaluatorInterface, + lastDecl.node, + /* isInClass */ true, + nodeInfo + ); if ((lastFunctionInfo.flags & FunctionTypeFlags.AbstractMethod) !== 0) { isAbstract = true; } - const isStubFile = AnalyzerNodeInfo.getFileInfo(lastDecl.node).isStubFile; + const isStubFile = nodeInfo.getFileInfo(lastDecl.node).isStubFile; // In an overloaded method, the first overload can also be marked abstract. // In stub files, there is no implementation, so this is the only way to mark @@ -10393,7 +10435,12 @@ export function createTypeEvaluator( let firstFunctionInfo: FunctionDecoratorInfo | undefined; if (firstDecl !== lastDecl && firstDecl.type === DeclarationType.Function) { - firstFunctionInfo = getFunctionInfoFromDecorators(evaluatorInterface, firstDecl.node, /* isInClass */ true); + firstFunctionInfo = getFunctionInfoFromDecorators( + evaluatorInterface, + firstDecl.node, + /* isInClass */ true, + nodeInfo + ); if ((firstFunctionInfo.flags & FunctionTypeFlags.AbstractMethod) !== 0) { isAbstract = true; } @@ -10612,7 +10659,13 @@ export function createTypeEvaluator( if (className === 'NamedTuple') { const result: CallResult = { - returnType: createNamedTupleType(evaluatorInterface, errorNode, argList, /* includesTypes */ true), + returnType: createNamedTupleType( + evaluatorInterface, + errorNode, + argList, + /* includesTypes */ true, + nodeInfo + ), }; const initTypeResult = getBoundInitMethod( @@ -10647,7 +10700,7 @@ export function createTypeEvaluator( expandedCallType.shared.fullName === 'typing_extensions.sentinel' || expandedCallType.shared.fullName === 'typing_extensions.Sentinel' ) { - return { returnType: createSentinelType(evaluatorInterface, errorNode, argList) }; + return { returnType: createSentinelType(evaluatorInterface, errorNode, argList, nodeInfo) }; } if (ClassType.isSpecialFormClass(expandedCallType)) { @@ -10661,7 +10714,9 @@ export function createTypeEvaluator( } if (className === 'TypedDict') { - return { returnType: createTypedDictType(evaluatorInterface, errorNode, expandedCallType, argList) }; + return { + returnType: createTypedDictType(evaluatorInterface, errorNode, expandedCallType, argList, nodeInfo), + }; } if (className === 'auto' && argList.length === 0) { @@ -10675,11 +10730,11 @@ export function createTypeEvaluator( expandedCallType.shared.effectiveMetaclass && isClass(expandedCallType.shared.effectiveMetaclass) && isEnumMetaclass(expandedCallType.shared.effectiveMetaclass) && - !isEnumClassWithMembers(evaluatorInterface, expandedCallType) + !isEnumClassWithMembers(evaluatorInterface, expandedCallType, nodeInfo) ) { return { returnType: - createEnumType(evaluatorInterface, errorNode, expandedCallType, argList) ?? + createEnumType(evaluatorInterface, errorNode, expandedCallType, argList, nodeInfo) ?? convertToInstance(unexpandedCallType), }; } @@ -10798,7 +10853,7 @@ export function createTypeEvaluator( newClassName, '', '', - AnalyzerNodeInfo.getFileInfo(errorNode).fileUri, + nodeInfo.getFileInfo(errorNode).fileUri, ClassTypeFlags.None, ParseTreeUtils.getTypeSourceId(errorNode), ClassType.cloneAsInstantiable(returnType), @@ -10892,7 +10947,7 @@ export function createTypeEvaluator( // Verify that the cast is necessary. let castToType = getTypeOfArgExpectingType(argList[0], { typeExpression: true }).type; - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(errorNode); + const liveScopeIds = getTypeVarScopesForNode(errorNode); castToType = makeTypeVarsBound(castToType, liveScopeIds); let castFromType = getTypeOfArg(argList[1], /* inferenceContext */ undefined).type; @@ -12145,7 +12200,7 @@ export function createTypeEvaluator( expectedType: Type, returnType: Type ): CallResult { - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); + const liveTypeVarScopes = getTypeVarScopesForNode(errorNode); let assignFlags = AssignTypeFlags.PopulateExpectedType; if (containsLiteralType(expectedType, /* includeTypeArgs */ true)) { assignFlags |= AssignTypeFlags.RetainLiteralsForTypeVar; @@ -12456,7 +12511,7 @@ export function createTypeEvaluator( specializedReturnType = ClassType.cloneForPacked(specializedReturnType); } - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(errorNode); + const liveTypeVarScopes = getTypeVarScopesForNode(errorNode); specializedReturnType = adjustCallableReturnType(errorNode, specializedReturnType, liveTypeVarScopes); if (specializedInitSelfType) { @@ -12543,7 +12598,7 @@ export function createTypeEvaluator( // Create a new scope ID based on the caller's position. This // will guarantee uniqueness. If another caller uses the same // call and arguments, the type vars will not conflict. - const newScopeId = ParseTreeUtils.getScopeIdForNode(callNode); + const newScopeId = getScopeIdForNode(callNode); const solution = new ConstraintSolution(); const newTypeParams = typeParams.map((typeVar) => { @@ -12950,7 +13005,7 @@ export function createTypeEvaluator( if (!options?.skipReportError) { // Mismatching parameter types are common in untyped code; don't bother spending time // printing types if the diagnostic is disabled. - const fileInfo = AnalyzerNodeInfo.getFileInfo(argParam.errorNode); + const fileInfo = nodeInfo.getFileInfo(argParam.errorNode); if ( fileInfo.diagnosticRuleSet.reportArgumentType !== 'none' && !canSkipDiagnosticForNode(argParam.errorNode) && @@ -13011,7 +13066,7 @@ export function createTypeEvaluator( if (!options.skipUnknownArgCheck) { const simplifiedType = makeTopLevelTypeVarsConcrete(removeUnbound(argType)); - const fileInfo = AnalyzerNodeInfo.getFileInfo(argParam.errorNode); + const fileInfo = nodeInfo.getFileInfo(argParam.errorNode); function getDiagAddendum() { const diagAddendum = new DiagnosticAddendum(); @@ -13190,7 +13245,7 @@ export function createTypeEvaluator( typeVar.shared.defaultType = convertToInstance(argType); typeVar.shared.isDefaultExplicit = true; - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); if ( !fileInfo.isStubFile && PythonVersion.isLessThan(fileInfo.executionEnvironment.pythonVersion, pythonVersion3_13) && @@ -13351,7 +13406,7 @@ export function createTypeEvaluator( } } - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); if ( !fileInfo.isStubFile && PythonVersion.isLessThan(fileInfo.executionEnvironment.pythonVersion, pythonVersion3_13) && @@ -13441,7 +13496,7 @@ export function createTypeEvaluator( } } - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); if ( !fileInfo.isStubFile && PythonVersion.isLessThan(fileInfo.executionEnvironment.pythonVersion, pythonVersion3_13) && @@ -13558,7 +13613,7 @@ export function createTypeEvaluator( return undefined; } - const scope = ScopeUtils.getScopeForNode(errorNode); + const scope = getScopeForNode(errorNode); if (scope) { if (scope.type !== ScopeType.Class && scope.type !== ScopeType.Module && scope.type !== ScopeType.Builtin) { addDiagnostic( @@ -13643,7 +13698,7 @@ export function createTypeEvaluator( } else { entryType = TypeVarType.cloneForScopeId( entryType, - ParseTreeUtils.getScopeIdForNode(nameNode), + getScopeIdForNode(nameNode), nameNode.d.value, TypeVarScopeType.TypeAlias ); @@ -13710,7 +13765,7 @@ export function createTypeEvaluator( // in the Python specification: The static type checker will treat // the new type as if it were a subclass of the original type. function createNewType(errorNode: ExpressionNode, argList: Arg[]): ClassType | undefined { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); let className = ''; if (argList.length !== 2) { @@ -13853,7 +13908,7 @@ export function createTypeEvaluator( argList: Arg[], metaclass: ClassType ): ClassType | undefined { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); const arg0Type = getTypeOfArg(argList[0], /* inferenceContext */ undefined).type; if (!isClassInstance(arg0Type) || !ClassType.isBuiltIn(arg0Type, 'str')) { return undefined; @@ -14210,7 +14265,7 @@ export function createTypeEvaluator( builtInDict, inferenceContext.expectedType, dictConstraints, - ParseTreeUtils.getTypeVarScopesForNode(node), + getTypeVarScopesForNode(node), node.start ) ) { @@ -14323,7 +14378,7 @@ export function createTypeEvaluator( ); if (keyTypes.length > 0) { - if (AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.strictDictionaryInference || hasExpectedType) { + if (nodeInfo.getFileInfo(node).diagnosticRuleSet.strictDictionaryInference || hasExpectedType) { keyType = combineTypes(keyTypes); } else { keyType = areTypesSame(keyTypes, { ignorePseudoGeneric: true }) ? keyTypes[0] : fallbackType; @@ -14338,7 +14393,7 @@ export function createTypeEvaluator( // are the same type, we'll assume that all values in this dictionary should // be the same. if (valueTypes.length > 0) { - if (AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.strictDictionaryInference || hasExpectedType) { + if (nodeInfo.getFileInfo(node).diagnosticRuleSet.strictDictionaryInference || hasExpectedType) { valueType = combineTypes(valueTypes); } else { valueType = areTypesSame(valueTypes, { ignorePseudoGeneric: true }) ? valueTypes[0] : fallbackType; @@ -14436,7 +14491,7 @@ export function createTypeEvaluator( expectedTypedDictEntries.knownItems.get(keyType.priv.literalValue as string)?.valueType ?? expectedTypedDictEntries.extraItems?.valueType; if (effectiveValueType) { - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveTypeVarScopes = getTypeVarScopesForNode(node); effectiveValueType = transformExpectedType(effectiveValueType, liveTypeVarScopes, node.start); } entryInferenceContext = makeInferenceContext(effectiveValueType); @@ -14449,7 +14504,7 @@ export function createTypeEvaluator( let effectiveValueType = expectedValueType ?? (forceStrictInference ? NeverType.createNever() : undefined); if (effectiveValueType) { - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveTypeVarScopes = getTypeVarScopesForNode(node); effectiveValueType = transformExpectedType(effectiveValueType, liveTypeVarScopes, node.start); } entryInferenceContext = makeInferenceContext(effectiveValueType); @@ -14845,7 +14900,7 @@ export function createTypeEvaluator( ClassType.cloneAsInstance(expectedClassType), inferenceContext.expectedType, constraints, - ParseTreeUtils.getTypeVarScopesForNode(node), + getTypeVarScopesForNode(node), node.start ) ) { @@ -14907,7 +14962,7 @@ export function createTypeEvaluator( let inferredEntryType: Type = hasExpectedType ? AnyType.create() : UnknownType.create(); if (entryTypes.length > 0) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // If there was an expected type or we're using strict list inference, // combine the types into a union. if ( @@ -15031,7 +15086,7 @@ export function createTypeEvaluator( if (functionTypeInfo) { let returnType = FunctionType.getEffectiveReturnType(functionTypeInfo.functionType); if (returnType) { - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopeIds = getTypeVarScopesForNode(node); returnType = makeTypeVarsBound(returnType, liveScopeIds); expectedYieldType = getGeneratorYieldType(returnType, !!enclosingFunction.d.isAsync); @@ -15150,7 +15205,7 @@ export function createTypeEvaluator( let expectedParamDetails: ParamListDetails | undefined; if (expectedType) { - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveTypeVarScopes = getTypeVarScopesForNode(node); expectedType = transformExpectedType(expectedType, liveTypeVarScopes, node.start) as FunctionType; expectedParamDetails = getParamListDetails(expectedType); @@ -15158,7 +15213,7 @@ export function createTypeEvaluator( } let functionType = FunctionType.createInstance('', '', '', FunctionTypeFlags.PartiallyEvaluated); - functionType.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); + functionType.shared.typeVarScopeId = getScopeIdForNode(node); return invalidateTypeCacheIfCanceled(() => { // Pre-cache the incomplete function type in case the evaluation of the @@ -15652,7 +15707,7 @@ export function createTypeEvaluator( TypeBase.setSpecialForm(functionType, ClassType.cloneAsInstance(classType)); functionType.shared.declaredReturnType = UnknownType.create(); - functionType.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(errorNode); + functionType.shared.typeVarScopeId = getScopeIdForNode(errorNode); if (typeArgs && typeArgs.length > 0) { functionType.priv.isCallableWithTypeArgs = true; @@ -16157,7 +16212,8 @@ export function createTypeEvaluator( const functionInfo = getFunctionInfoFromDecorators( evaluatorInterface, enclosingFunction, - /* isInClass */ true + /* isInClass */ true, + nodeInfo ); const isInnerFunction = !!ParseTreeUtils.getEnclosingFunction(enclosingFunction); @@ -16640,7 +16696,7 @@ export function createTypeEvaluator( typeArgs: TypeResultWithNode[] | undefined, flags: EvalFlags ): Type { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); const types: Type[] = []; let allowSingleTypeArg = false; let isValidTypeForm = true; @@ -16895,7 +16951,7 @@ export function createTypeEvaluator( } function createSpecialBuiltInClass(node: ParseNode, assignedName: string, aliasMapEntry: AliasMapEntry): ClassType { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); let specialClassType = ClassType.createInstantiable( assignedName, ParseTreeUtils.getClassFullName(node, fileInfo.moduleName, assignedName), @@ -16921,7 +16977,7 @@ export function createTypeEvaluator( let typeParam = TypeVarType.createInstance('T'); typeParam = TypeVarType.cloneForScopeId( typeParam, - ParseTreeUtils.getScopeIdForNode(node), + getScopeIdForNode(node), assignedName, TypeVarScopeType.Class ); @@ -16929,8 +16985,8 @@ export function createTypeEvaluator( specialClassType.shared.typeParams.push(typeParam); } - const specialBuiltInClassDeclaration = (AnalyzerNodeInfo.getDeclaration(node) ?? - (node.parent ? AnalyzerNodeInfo.getDeclaration(node.parent) : undefined)) as + const specialBuiltInClassDeclaration = (nodeInfo.getDeclaration(node) ?? + (node.parent ? nodeInfo.getDeclaration(node.parent) : undefined)) as | SpecialBuiltInClassDeclaration | undefined; @@ -17134,7 +17190,7 @@ export function createTypeEvaluator( } function evaluateTypesForAssignmentStatement(node: AssignmentNode): void { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // If the entire statement has already been evaluated, don't // re-evaluate it. @@ -17235,7 +17291,7 @@ export function createTypeEvaluator( let declaredType = getDeclaredTypeForExpression(node.d.leftExpr, { method: 'set' }); if (declaredType) { - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveTypeVarScopes = getTypeVarScopesForNode(node); declaredType = makeTypeVarsBound(declaredType, liveTypeVarScopes); } @@ -17318,8 +17374,8 @@ export function createTypeEvaluator( function synthesizeTypeAliasPlaceholder(nameNode: NameNode, isTypeAliasType: boolean = false): TypeVarType { const placeholder = TypeVarType.createInstantiable(`__type_alias_${nameNode.d.value}`); placeholder.shared.isSynthesized = true; - const typeVarScopeId = ParseTreeUtils.getScopeIdForNode(nameNode); - const fileInfo = AnalyzerNodeInfo.getFileInfo(nameNode); + const typeVarScopeId = getScopeIdForNode(nameNode); + const fileInfo = nodeInfo.getFileInfo(nameNode); placeholder.shared.recursiveAlias = { name: nameNode.d.value, @@ -17378,9 +17434,9 @@ export function createTypeEvaluator( writeTypeCache(nameNode, { type: typeAliasTypeVar }, /* flags */ undefined); // Set a partial type to handle recursive (self-referential) type aliases. - const scope = ScopeUtils.getScopeForNode(declNode); + const scope = getScopeForNode(declNode); const typeAliasSymbol = scope?.lookUpSymbolRecursive(nameNode.d.value); - const typeAliasDecl = AnalyzerNodeInfo.getDeclaration(declNode); + const typeAliasDecl = nodeInfo.getDeclaration(declNode); if (typeAliasDecl && typeAliasSymbol) { setSymbolResolutionPartialType(typeAliasSymbol.symbol, typeAliasDecl, typeAliasTypeVar); } @@ -17473,7 +17529,7 @@ export function createTypeEvaluator( const className = ``; - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); // The effective metaclass of the intersection is the narrower of the two metaclasses. let effectiveMetaclass = type1.shared.effectiveMetaclass; @@ -17527,9 +17583,9 @@ export function createTypeEvaluator( } // The type wasn't cached, so we need to create a new one. - const scope = ScopeUtils.getScopeForNode(node); + const scope = getScopeForNode(node); - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); let classFlags = ClassTypeFlags.None; if ( scope?.type === ScopeType.Builtin || @@ -17569,7 +17625,7 @@ export function createTypeEvaluator( ParseTreeUtils.getDocString(node.d.suite.d.statements) ); - classType.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); + classType.shared.typeVarScopeId = getScopeIdForNode(node); // Is this a special type that supports type promotions according to PEP 484? if (typePromotions.has(classType.shared.fullName)) { @@ -17581,7 +17637,7 @@ export function createTypeEvaluator( // to allow these to be resolved. const classSymbol = scope?.lookUpSymbol(node.d.name.d.value); let classDecl: ClassDeclaration | undefined; - const decl = AnalyzerNodeInfo.getDeclaration(node); + const decl = nodeInfo.getDeclaration(node); if (decl) { classDecl = decl as ClassDeclaration; } @@ -18080,7 +18136,7 @@ export function createTypeEvaluator( } // The scope for this class becomes the "fields" for the corresponding type. - const innerScope = ScopeUtils.getScopeForNode(node.d.suite); + const innerScope = getScopeForNode(node.d.suite); classType.shared.fields = innerScope?.symbolTable ? new Map(innerScope.symbolTable) : new Map(); @@ -18145,11 +18201,11 @@ export function createTypeEvaluator( getPseudoGenericTypeVarName(param.d.name!.d.value) ); typeVar.shared.isSynthesized = true; - typeVar.priv.scopeId = ParseTreeUtils.getScopeIdForNode(initDeclNode); + typeVar.priv.scopeId = getScopeIdForNode(initDeclNode); typeVar.shared.boundType = UnknownType.create(); return TypeVarType.cloneForScopeId( typeVar, - ParseTreeUtils.getScopeIdForNode(node), + getScopeIdForNode(node), node.d.name.d.value, TypeVarScopeType.Class ); @@ -18223,7 +18279,7 @@ export function createTypeEvaluator( const decorator = node.d.decorators[i]; const newDecoratedType = useSignatureTracker(node.parent ?? node, () => - applyClassDecorator(evaluatorInterface, decoratedType, classType, decorator) + applyClassDecorator(evaluatorInterface, decoratedType, classType, decorator, nodeInfo) ); const unknownOrAny = containsAnyOrUnknown(newDecoratedType, /* recurse */ false); @@ -18269,7 +18325,8 @@ export function createTypeEvaluator( node.d.name, classType, initSubclassArgs, - dataClassBehaviors + dataClassBehaviors, + nodeInfo ); } @@ -18306,7 +18363,7 @@ export function createTypeEvaluator( ); } - synthesizeTypedDictClassMethods(evaluatorInterface, node, classType); + synthesizeTypedDictClassMethods(evaluatorInterface, node, classType, nodeInfo); } // Synthesize dataclass methods. @@ -18340,7 +18397,8 @@ export function createTypeEvaluator( isNamedTupleSubclass, skipSynthesizedInit, hasExistingInitMethod, - skipSynthesizeHash + skipSynthesizeHash, + nodeInfo ); // If this is a NamedTuple subclass, immediately synthesize dataclass methods @@ -18562,7 +18620,7 @@ export function createTypeEvaluator( function evaluateTypeParamList(node: TypeParameterListNode): TypeVarType[] { const paramTypes: TypeVarType[] = []; - const typeParamScope = AnalyzerNodeInfo.getScope(node); + const typeParamScope = nodeInfo.getScope(node); node.d.params.forEach((param) => { const paramSymbol = typeParamScope?.symbolTable.get(param.d.name.d.value); @@ -18946,7 +19004,14 @@ export function createTypeEvaluator( const newDecoratedType = useSignatureTracker(node.parent ?? node, () => { assert(decoratedType !== undefined); - return applyFunctionDecorator(evaluatorInterface, decoratedType, functionType, decorator, node); + return applyFunctionDecorator( + evaluatorInterface, + decoratedType, + functionType, + decorator, + node, + nodeInfo + ); }); const unknownOrAny = containsAnyOrUnknown(newDecoratedType, /* recurse */ false); @@ -18980,7 +19045,7 @@ export function createTypeEvaluator( } } - decoratedType = addOverloadsToFunctionType(evaluatorInterface, node, decoratedType); + decoratedType = addOverloadsToFunctionType(evaluatorInterface, node, decoratedType, nodeInfo); writeTypeCache(node, { type: decoratedType }, EvalFlags.None); @@ -18994,7 +19059,7 @@ export function createTypeEvaluator( // Evaluates the type of a "def" statement without applying an async // modifier or any decorators. function getTypeOfFunctionPredecorated(node: FunctionNode): FunctionType { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // Is this type already cached? const cachedFunctionType = readTypeCache(node.d.name, EvalFlags.None); @@ -19004,7 +19069,7 @@ export function createTypeEvaluator( } let functionDecl: FunctionDeclaration | undefined; - const decl = AnalyzerNodeInfo.getDeclaration(node); + const decl = nodeInfo.getDeclaration(node); if (decl) { functionDecl = decl as FunctionDeclaration; } @@ -19017,7 +19082,7 @@ export function createTypeEvaluator( containingClassType = getTypeOfClass(containingClassNode)?.classType; } - const functionInfo = getFunctionInfoFromDecorators(evaluatorInterface, node, !!containingClassNode); + const functionInfo = getFunctionInfoFromDecorators(evaluatorInterface, node, !!containingClassNode, nodeInfo); let functionFlags = functionInfo.flags; if (functionDecl?.isGenerator) { functionFlags |= FunctionTypeFlags.Generator; @@ -19041,13 +19106,13 @@ export function createTypeEvaluator( ParseTreeUtils.getDocString(node.d.suite.d.statements) ); - functionType.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); + functionType.shared.typeVarScopeId = getScopeIdForNode(node); functionType.shared.deprecatedMessage = functionInfo.deprecationMessage; functionType.shared.methodClass = containingClassType; if (node.d.name.d.value === '__init__' || node.d.name.d.value === '__new__') { if (containingClassNode) { - functionType.priv.constructorTypeVarScopeId = ParseTreeUtils.getScopeIdForNode(containingClassNode); + functionType.priv.constructorTypeVarScopeId = getScopeIdForNode(containingClassNode); } } @@ -19059,7 +19124,7 @@ export function createTypeEvaluator( functionType.shared.declaration = functionDecl; // Allow recursion by caching and registering the partially-constructed function type. - const scope = ScopeUtils.getScopeForNode(node); + const scope = getScopeForNode(node); const functionSymbol = scope?.lookUpSymbolRecursive(node.d.name.d.value); if (functionDecl && functionSymbol) { setSymbolResolutionPartialType(functionSymbol.symbol, functionDecl, functionType); @@ -19332,7 +19397,7 @@ export function createTypeEvaluator( } // Update the types for the nodes associated with the parameters. - const scopeIds = ParseTreeUtils.getTypeVarScopesForNode(node); + const scopeIds = getTypeVarScopesForNode(node); paramTypes.forEach((paramType, index) => { const paramNameNode = node.d.params[index].d.name; if (paramNameNode) { @@ -19445,7 +19510,7 @@ export function createTypeEvaluator( /* honorCodeFlow */ false ); if (symbolWithScope) { - setSymbolAccessed(AnalyzerNodeInfo.getFileInfo(param), symbolWithScope.symbol, param.d.name); + setSymbolAccessed(nodeInfo.getFileInfo(param), symbolWithScope.symbol, param.d.name); } } } @@ -19459,7 +19524,7 @@ export function createTypeEvaluator( param.d.defaultValue?.nodeType === ParseNodeType.Constant && param.d.defaultValue.d.constType === KeywordType.None && !isOptionalType(type) && - !AnalyzerNodeInfo.getFileInfo(param).diagnosticRuleSet.strictParameterNoneValue + !nodeInfo.getFileInfo(param).diagnosticRuleSet.strictParameterNoneValue ) { return combineTypes([type, getNoneType()]); } @@ -19524,7 +19589,7 @@ export function createTypeEvaluator( const scopeIds: TypeVarScopeId[] = getTypeVarScopeIds(baseClassMemberInfo.classType); const solution = buildSolutionFromSpecializedClass(baseClassMemberInfo.classType); - scopeIds.push(ParseTreeUtils.getScopeIdForNode(baseClassMethodNode)); + scopeIds.push(getScopeIdForNode(baseClassMethodNode)); // Replace any unsolved TypeVars with Unknown (including all function-scoped TypeVars). inferredParamType = applySolvedTypeVars(inferredParamType, solution, { @@ -19535,7 +19600,7 @@ export function createTypeEvaluator( }); } - const fileInfo = AnalyzerNodeInfo.getFileInfo(functionNode); + const fileInfo = nodeInfo.getFileInfo(functionNode); if (fileInfo.isInPyTypedPackage && !fileInfo.isStubFile) { inferredParamType = TypeBase.cloneForAmbiguousType(inferredParamType); } @@ -19601,7 +19666,7 @@ export function createTypeEvaluator( } if (inferredParamType) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(paramValueExpr); + const fileInfo = nodeInfo.getFileInfo(paramValueExpr); if (fileInfo.isInPyTypedPackage && !fileInfo.isStubFile) { inferredParamType = TypeBase.cloneForAmbiguousType(inferredParamType); } @@ -19778,7 +19843,7 @@ export function createTypeEvaluator( try { let functionDecl: FunctionDeclaration | undefined; - const decl = AnalyzerNodeInfo.getDeclaration(node); + const decl = nodeInfo.getDeclaration(node); if (decl) { functionDecl = decl as FunctionDeclaration; } @@ -19787,7 +19852,7 @@ export function createTypeEvaluator( const implicitlyReturnsNone = isAfterNodeReachable(node.d.suite); // Infer the return type based on all of the return statements in the function's body. - if (AnalyzerNodeInfo.getFileInfo(node).isStubFile) { + if (nodeInfo.getFileInfo(node).isStubFile) { // If a return type annotation is missing in a stub file, assume // it's an "unknown" type. In normal source files, we can infer the // type from the implementation. @@ -19959,7 +20024,7 @@ export function createTypeEvaluator( // cases, we can get very deep stacks when inferring return types // within untyped code. if ((err as any)?.message === 'Maximum call stack size exceeded') { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); console.error( `Overflowed stack when inferring return type for function: ${ node.d.name.d.value @@ -20290,7 +20355,7 @@ export function createTypeEvaluator( } const aliasNode = node.d.alias || node.d.name; - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // If this is a redundant form of an import, assume it is an intentional // export and mark the symbol as accessed. @@ -20316,7 +20381,7 @@ export function createTypeEvaluator( assert(parentNode && parentNode.nodeType === ParseNodeType.ImportFrom); assert(!parentNode.d.isWildcardImport); - const importInfo = AnalyzerNodeInfo.getImportInfo(parentNode.d.module); + const importInfo = nodeInfo.getImportInfo(parentNode.d.module); if (importInfo && importInfo.isImportFound && !importInfo.isNativeLib) { const resolvedPath = importInfo.resolvedUris[importInfo.resolvedUris.length - 1]; @@ -20384,7 +20449,8 @@ export function createTypeEvaluator( evaluatorInterface, subjectType, caseStatement.d.pattern, - /* isPositiveTest */ false + /* isPositiveTest */ false, + nodeInfo ); } } @@ -20402,7 +20468,7 @@ export function createTypeEvaluator( return; } - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const subjectTypeResult = getTypeOfExpression(node.parent.d.expr); let subjectType = subjectTypeResult.type; @@ -20412,7 +20478,7 @@ export function createTypeEvaluator( if (caseStatement === node) { if (fileInfo.diagnosticRuleSet.reportUnnecessaryComparison !== 'none') { if (!subjectTypeResult.isIncomplete) { - checkForUnusedPattern(evaluatorInterface, node.d.pattern, subjectType); + checkForUnusedPattern(evaluatorInterface, node.d.pattern, subjectType, nodeInfo); } } break; @@ -20423,7 +20489,8 @@ export function createTypeEvaluator( evaluatorInterface, subjectType, caseStatement.d.pattern, - /* isPositiveTest */ false + /* isPositiveTest */ false, + nodeInfo ); } } @@ -20432,7 +20499,8 @@ export function createTypeEvaluator( evaluatorInterface, subjectType, !!subjectTypeResult.isIncomplete, - node.d.pattern + node.d.pattern, + nodeInfo ); writeTypeCache( @@ -20451,7 +20519,7 @@ export function createTypeEvaluator( // Write back a dummy type so we don't evaluate this node again. writeTypeCache(node, { type: AnyType.create() }, EvalFlags.None); - const flowNode = AnalyzerNodeInfo.getFlowNode(node); + const flowNode = nodeInfo.getFlowNode(node); if (flowNode && (flowNode.flags & FlowFlags.WildcardImport) !== 0) { const wildcardFlowNode = flowNode as FlowWildcardImport; wildcardFlowNode.names.forEach((name) => { @@ -20561,7 +20629,7 @@ export function createTypeEvaluator( assert(aliasDecl.type === DeclarationType.Alias); - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // Try to resolve the alias while honoring external visibility. const resolvedAliasInfo = resolveAliasDeclarationWithInfo(aliasDecl, /* resolveLocalNames */ true, { @@ -20901,7 +20969,7 @@ export function createTypeEvaluator( ? getDeclaredReturnType(enclosingFunctionNode) : undefined; if (declaredReturnType) { - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveScopeIds = getTypeVarScopesForNode(node); declaredReturnType = makeTypeVarsBound(declaredReturnType, liveScopeIds); } getTypeOfExpression(parent.d.expr, EvalFlags.None, makeInferenceContext(declaredReturnType)); @@ -20960,7 +21028,7 @@ export function createTypeEvaluator( const param = functionNode.d.params[paramIndex]; let annotatedType = getTypeOfParamAnnotation(typeAnnotation, functionNode.d.params[paramIndex].d.category); - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(param); + const liveTypeVarScopes = getTypeVarScopesForNode(param); annotatedType = makeTypeVarsBound(annotatedType, liveTypeVarScopes); const adjType = transformVariadicParamType( @@ -20998,12 +21066,13 @@ export function createTypeEvaluator( const functionFlags = getFunctionInfoFromDecorators( evaluatorInterface, functionNode, - /* isInClass */ true + /* isInClass */ true, + nodeInfo ).flags; let inferredParamType = inferParamType(functionNode, functionFlags, paramIndex, classInfo?.classType) ?? UnknownType.create(); - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(node); + const liveTypeVarScopes = getTypeVarScopesForNode(node); inferredParamType = makeTypeVarsBound(inferredParamType, liveTypeVarScopes); writeTypeCache( @@ -21218,8 +21287,8 @@ export function createTypeEvaluator( ): FlowNodeTypeResult { // See if this execution scope requires code flow for this reference expression. const referenceKey = createKeyForReference(reference); - const executionNode = ParseTreeUtils.getExecutionScopeNode(startNode?.parent ?? reference); - const codeFlowExpressions = AnalyzerNodeInfo.getCodeFlowExpressions(executionNode); + const executionNode = ParseTreeUtils.getExecutionScopeNode(startNode?.parent ?? reference, nodeInfo); + const codeFlowExpressions = nodeInfo.getCodeFlowExpressions(executionNode); if ( !codeFlowExpressions || @@ -21250,7 +21319,7 @@ export function createTypeEvaluator( analyzer = getCodeFlowAnalyzerForNode(executionNode, options?.typeAtStart); } - const flowNode = AnalyzerNodeInfo.getFlowNode(startNode ?? reference); + const flowNode = nodeInfo.getFlowNode(startNode ?? reference); if (flowNode === undefined) { return FlowNodeTypeResult.create(/* type */ undefined, /* isIncomplete */ false); } @@ -21350,8 +21419,7 @@ export function createTypeEvaluator( case 'TypedDict': { if ((flags & (EvalFlags.NoNonTypeSpecialForms | EvalFlags.TypeExpression)) !== 0) { const isInlinedTypedDict = - AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures && - !!typeArgs; + nodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures && !!typeArgs; if (!isInlinedTypedDict) { addDiagnostic( @@ -21437,11 +21505,11 @@ export function createTypeEvaluator( } } - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); if ( fileInfo.isStubFile || PythonVersion.isGreaterOrEqualTo(fileInfo.executionEnvironment.pythonVersion, pythonVersion3_9) || - isAnnotationEvaluationPostponed(AnalyzerNodeInfo.getFileInfo(errorNode)) || + isAnnotationEvaluationPostponed(nodeInfo.getFileInfo(errorNode)) || (flags & EvalFlags.ForwardRefs) !== 0 ) { // Handle "type" specially, since it needs to act like "Type" @@ -21874,7 +21942,7 @@ export function createTypeEvaluator( flags |= EvalFlags.EnforceClassTypeVarScope; } - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); if ((isAnnotationEvaluationPostponed(fileInfo) || options?.forwardRefs) && !options?.runtimeTypeExpression) { flags |= EvalFlags.ForwardRefs; } else if (options?.parsesStringLiteral) { @@ -21943,7 +22011,7 @@ export function createTypeEvaluator( } function getBuiltInType(node: ParseNode, name: string): Type { - const scope = ScopeUtils.getScopeForNode(node); + const scope = getScopeForNode(node); if (scope) { const builtInScope = ScopeUtils.getBuiltInScope(scope); const nameType = builtInScope.lookUpSymbol(name); @@ -21975,8 +22043,8 @@ export function createTypeEvaluator( honorCodeFlow: boolean, preferGlobalScope = false ): SymbolWithScope | undefined { - const scopeNodeInfo = ParseTreeUtils.getEvaluationScopeNode(node); - const scope = AnalyzerNodeInfo.getScope(scopeNodeInfo.node); + const scopeNodeInfo = ParseTreeUtils.getEvaluationScopeNode(node, nodeInfo); + const scope = nodeInfo.getScope(scopeNodeInfo.node); let symbolWithScope = scope?.lookUpSymbolRecursive(name, { useProxyScope: !!scopeNodeInfo.useProxyScope, @@ -21999,22 +22067,22 @@ export function createTypeEvaluator( const reachableDecl = symbolWithScope.symbol.getDeclarations().find((decl) => { if (decl.type !== DeclarationType.Alias && decl.type !== DeclarationType.Intrinsic) { // Determine if the declaration is in the same execution scope as the "usageNode" node. - let usageScopeNode = ParseTreeUtils.getExecutionScopeNode(node); + let usageScopeNode = ParseTreeUtils.getExecutionScopeNode(node, nodeInfo); const declNode: ParseNode = decl.type === DeclarationType.Class || decl.type === DeclarationType.Function || decl.type === DeclarationType.TypeAlias ? decl.node.d.name : decl.node; - const declScopeNode = ParseTreeUtils.getExecutionScopeNode(declNode); + const declScopeNode = ParseTreeUtils.getExecutionScopeNode(declNode, nodeInfo); // If this is a type parameter scope, it will be a proxy for its // containing scope, so we need to use that instead. - const usageScope = AnalyzerNodeInfo.getScope(usageScopeNode); + const usageScope = nodeInfo.getScope(usageScopeNode); if (usageScope?.proxy) { - const typeParamScope = AnalyzerNodeInfo.getScope(usageScopeNode); + const typeParamScope = nodeInfo.getScope(usageScopeNode); if (!typeParamScope?.symbolTable.has(name) && usageScopeNode.parent) { - usageScopeNode = ParseTreeUtils.getExecutionScopeNode(usageScopeNode.parent); + usageScopeNode = ParseTreeUtils.getExecutionScopeNode(usageScopeNode.parent, nodeInfo); } } @@ -22023,7 +22091,7 @@ export function createTypeEvaluator( // If there was no control flow path from the usage back // to the source, see if the usage node is reachable by // any path. - const flowNode = AnalyzerNodeInfo.getFlowNode(node); + const flowNode = nodeInfo.getFlowNode(node); const isReachable = flowNode && codeFlowEngine.getFlowNodeReachability( @@ -22237,7 +22305,7 @@ export function createTypeEvaluator( const functionDecl = type.shared.declaration; if (functionDecl.type === DeclarationType.Function) { const functionNode = functionDecl.node; - const functionScope = AnalyzerNodeInfo.getScope(functionNode); + const functionScope = nodeInfo.getScope(functionNode); if (functionScope) { const paramSymbol = functionScope.lookUpSymbol(paramName)!; if (paramSymbol) { @@ -22264,6 +22332,60 @@ export function createTypeEvaluator( return undefined; } + // functools.partial(func, kw=value) forwards keyword arguments to the wrapped callable, but + // partial's own signature absorbs them through **kwargs, so they don't resolve to a declaration. + // Resolve the keyword against the wrapped callable (the first positional argument) instead so IDE + // features like go-to-definition and rename bind to the underlying parameter. Returns true when + // baseType is functools.partial, so the caller suppresses the default keyword-argument handling. + function _tryAddPartialKeywordParamDecls( + baseType: Type, + callNode: CallNode, + paramName: string, + decls: Declaration[] + ): boolean { + if (!isInstantiableClass(baseType) || baseType.shared.fullName !== 'functools.partial') { + return false; + } + + const wrappedArg = callNode.d.args.find((arg) => arg.d.argCategory === ArgCategory.Simple && !arg.d.name); + if (!wrappedArg) { + return true; + } + + const wrappedType = getType(wrappedArg.d.valueExpr); + if (!wrappedType) { + return true; + } + + if (isFunction(wrappedType)) { + const paramDecl = getDeclarationFromKeywordParam(wrappedType, paramName); + if (paramDecl) { + decls.push(paramDecl); + } + } else if (isOverloaded(wrappedType)) { + OverloadedType.getOverloads(wrappedType).forEach((f) => { + const paramDecl = getDeclarationFromKeywordParam(f, paramName); + if (paramDecl) { + decls.push(paramDecl); + } + }); + } else if (isInstantiableClass(wrappedType)) { + const initMethodType = getBoundInitMethod( + evaluatorInterface, + wrappedArg.d.valueExpr, + ClassType.cloneAsInstance(wrappedType) + )?.type; + if (initMethodType && isFunction(initMethodType)) { + const paramDecl = getDeclarationFromKeywordParam(initMethodType, paramName); + if (paramDecl) { + decls.push(paramDecl); + } + } + } + + return true; + } + function _shouldFallBackToClassEntryForKeywordArg(baseType: ClassType, paramName: string) { return ( ClassType.isDataClass(baseType) || @@ -22357,7 +22479,7 @@ export function createTypeEvaluator( } function getDeclInfoForNameNode(node: NameNode, skipUnreachableCode = true): SymbolDeclInfo | undefined { - if (skipUnreachableCode && AnalyzerNodeInfo.isCodeUnreachable(node)) { + if (skipUnreachableCode && nodeInfo.isCodeUnreachable(node)) { return undefined; } @@ -22369,7 +22491,7 @@ export function createTypeEvaluator( // since the non-aliased name is not in the symbol table. const alias = getAliasFromImport(node); if (alias) { - const scope = ScopeUtils.getScopeForNode(node); + const scope = getScopeForNode(node); if (scope) { // Look up the alias symbol. const symbolInScope = scope.lookUpSymbolRecursive(alias.d.value); @@ -22439,7 +22561,7 @@ export function createTypeEvaluator( } } else if (node.parent && node.parent.nodeType === ParseNodeType.ModuleName) { const namePartIndex = node.parent.d.nameParts.findIndex((part) => part === node); - const importInfo = AnalyzerNodeInfo.getImportInfo(node.parent); + const importInfo = nodeInfo.getImportInfo(node.parent); if ( namePartIndex >= 0 && importInfo && @@ -22464,7 +22586,9 @@ export function createTypeEvaluator( const baseType = getType(argNode.parent.d.leftExpr); if (baseType) { - if (isFunction(baseType) && baseType.shared.declaration) { + if (_tryAddPartialKeywordParamDecls(baseType, argNode.parent, paramName, decls)) { + // functools.partial keyword args are resolved against the wrapped callable. + } else if (isFunction(baseType) && baseType.shared.declaration) { const paramDecl = getDeclarationFromKeywordParam(baseType, paramName); if (paramDecl) { decls.push(paramDecl); @@ -22508,13 +22632,56 @@ export function createTypeEvaluator( validateInitSubclassArgs(argNode.parent, classTypeResult.classType); } } + } else if ( + node.parent && + node.parent.nodeType === ParseNodeType.PatternClassArgument && + node === node.parent.d.name && + node.parent.parent?.nodeType === ParseNodeType.PatternClass + ) { + // The target node is the keyword name in a class pattern argument + // (e.g. `case Foo(prop=...)`). Map it to the corresponding class member + // declaration so that find-all-references and rename bind to the attribute. + // Only the keyword (left of `=`) is handled here; the capture target on the + // right (e.g. the second `prop` in `case Foo(prop=prop)`) is a separate local + // binding that is resolved through the normal name-lookup path. + const memberName = node.d.value; + let classType = getType(node.parent.parent.d.className); + if (classType) { + classType = makeTopLevelTypeVarsConcrete(classType); + doForEachSubtype(classType, (subtype) => { + subtype = makeTopLevelTypeVarsConcrete(subtype); + + // The class name in a class pattern usually evaluates to an instantiable class, + // but analysis can still yield Unknown/Any (e.g. an unresolved class name), so + // the isInstantiableClass gate skips those subtypes rather than assuming + // every subtype is a class. + if (isInstantiableClass(subtype)) { + // Try to find a member that has a declared type. If so, that + // overrides any inferred types. + let member = lookUpClassMember(subtype, memberName, MemberAccessFlags.DeclaredTypesOnly); + if (!member) { + member = lookUpClassMember(subtype, memberName); + } + + if (member) { + _addSymbolDeclInfo( + member.symbol, + decls, + synthesizedTypes, + /* preferTypedDeclarations */ true + ); + } + } + }); + } } else { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); // Determine if this node is within a quoted type annotation. const isWithinTypeAnnotation = ParseTreeUtils.isWithinTypeAnnotation( node, - !isAnnotationEvaluationPostponed(AnalyzerNodeInfo.getFileInfo(node)) + !isAnnotationEvaluationPostponed(nodeInfo.getFileInfo(node)), + nodeInfo ); // Determine if this is part of a "type" statement. @@ -22632,7 +22799,7 @@ export function createTypeEvaluator( if (typeAnnotationNode) { let declaredType = getTypeOfParamAnnotation(typeAnnotationNode, declaration.node.d.category); - const liveTypeVarScopes = ParseTreeUtils.getTypeVarScopesForNode(declaration.node); + const liveTypeVarScopes = getTypeVarScopesForNode(declaration.node); declaredType = makeTypeVarsBound(declaredType, liveTypeVarScopes); return { @@ -22696,9 +22863,7 @@ export function createTypeEvaluator( const enclosingClass = ParseTreeUtils.getEnclosingClass(declaration.node); if (enclosingClass) { - declaredType = makeTypeVarsFree(declaredType, [ - ParseTreeUtils.getScopeIdForNode(enclosingClass), - ]); + declaredType = makeTypeVarsFree(declaredType, [getScopeIdForNode(enclosingClass)]); } } @@ -22873,9 +23038,7 @@ export function createTypeEvaluator( typeVar = TypeVarType.cloneForScopeId( typeVar, - ParseTreeUtils.getScopeIdForNode( - scopeNode.nodeType === ParseNodeType.TypeAlias ? scopeNode.d.name : scopeNode - ), + getScopeIdForNode(scopeNode.nodeType === ParseNodeType.TypeAlias ? scopeNode.d.name : scopeNode), scopeNode.d.name.d.value, scopeType ); @@ -22889,7 +23052,7 @@ export function createTypeEvaluator( function getInferredTypeOfDeclaration(symbol: Symbol, decl: Declaration): Type | undefined { const resolvedDecl = resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { - allowExternallyHiddenAccess: AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile, + allowExternallyHiddenAccess: nodeInfo.getFileInfo(decl.node).isStubFile, }); // We couldn't resolve the alias. Substitute an unknown @@ -22996,7 +23159,7 @@ export function createTypeEvaluator( // If this is part of a "py.typed" package, don't fall back on type inference // unless it's marked Final, is a constant, or is a declared type alias. - const fileInfo = AnalyzerNodeInfo.getFileInfo(resolvedDecl.node); + const fileInfo = nodeInfo.getFileInfo(resolvedDecl.node); let isUnambiguousType = !fileInfo.isInPyTypedPackage || fileInfo.isStubFile; // If this is a py.typed package, determine if this is a case where an unannotated @@ -23270,7 +23433,7 @@ export function createTypeEvaluator( if (decl.type === DeclarationType.Variable) { // Exempt typing.pyi and typingExtensions.pyi, which use variables to // define some special forms. - const fileInfo = AnalyzerNodeInfo.getFileInfo(decl.node); + const fileInfo = nodeInfo.getFileInfo(decl.node); if (!fileInfo.isTypingStubFile && !fileInfo.isTypingExtensionsStubFile) { return true; @@ -23350,7 +23513,7 @@ export function createTypeEvaluator( decls.forEach((decl, index) => { const resolvedDecl = resolveAliasDeclaration(decl, /* resolveLocalNames */ true, { - allowExternallyHiddenAccess: AnalyzerNodeInfo.getFileInfo(decl.node).isStubFile, + allowExternallyHiddenAccess: nodeInfo.getFileInfo(decl.node).isStubFile, }) ?? decl; if (!isPossibleTypeAliasDeclaration(resolvedDecl) && !isExplicitTypeAliasDeclaration(resolvedDecl)) { @@ -23389,8 +23552,8 @@ export function createTypeEvaluator( // Is the declaration in the same execution scope as the "usageNode" node? // If so, we can skip it because code flow analysis will allow us // to determine the type in this context. - const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode); - const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node); + const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode, nodeInfo); + const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node, nodeInfo); if (usageScope === declScope) { // Skip declarations that appear after the usage in the source. // Such declarations are typically only reached via loop back-edges, @@ -23611,8 +23774,8 @@ export function createTypeEvaluator( const filteredTypedDecls = typedDecls.filter((decl) => { if (decl.type !== DeclarationType.Alias) { // Is the declaration in the same execution scope as the "usageNode" node? - const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode); - const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node); + const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode, nodeInfo); + const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node, nodeInfo); if (usageScope === declScope) { // For typed declarations we use the precise flow-graph reachability @@ -23710,7 +23873,37 @@ export function createTypeEvaluator( function getEffectiveReturnTypeResult(type: FunctionType, options?: EffectiveReturnTypeOptions): TypeResult { const specializedReturnType = FunctionType.getEffectiveReturnType(type, /* includeInferred */ false); if (specializedReturnType && !isUnknown(specializedReturnType)) { - return { type: specializedReturnType }; + // A partially-unknown *inferred* return type (e.g. `Foo | Unknown`) can be + // cached on a specialized/bound copy of an unannotated function. Because + // `isUnknown` matches only a fully-unknown type, such a partial type would + // otherwise short-circuit here and prevent call-site return-type inference + // from ever running (e.g. an unannotated factory whose body narrows a + // parameter-derived local with `isinstance`). When a call site is available, + // fall through so the argument types can refine the inferred return type. + // + // NOTE: This gate intentionally mirrors a subset of the downstream call-site + // refinement guard in `_getInferredReturnTypeResult` (search `isPartlyUnknown(returnType)`), + // but tests the cached *specialized* return type here rather than the freshly-inferred + // one, and omits the `!isStubDefinition`/`!isPyTypedDefinition`/`!isIncomplete` + // conjuncts (not yet known at this point). Keep the two in sync if either is edited. + const canRefineWithCallSite = + options?.callSiteInfo !== undefined && + !type.shared.declaredReturnType && + FunctionType.hasUnannotatedParams(type) && + isPartlyUnknown(specializedReturnType); + if (!canRefineWithCallSite) { + return { type: specializedReturnType }; + } + + // Refine the cached partly-unknown return type using the call site. If the + // refinement comes back incomplete -- e.g. a self- or mutually-recursive + // factory whose base case returns the isinstance-narrowed local -- fall back + // to the already-cached specialized return type rather than propagating the + // incomplete result. The cached type is already correct in that case, and + // propagating `isIncomplete` would suppress caller-side diagnostics that only + // fire on a complete type (for example, `reveal_type`). + const refinedResult = getInferredReturnTypeResult(type, options?.callSiteInfo); + return refinedResult.isIncomplete ? { type: specializedReturnType } : refinedResult; } return getInferredReturnTypeResult(type, options?.callSiteInfo); @@ -23754,12 +23947,12 @@ export function createTypeEvaluator( } else if (type.shared.declaration) { const functionNode = type.shared.declaration.node; const skipUnannotatedFunction = - !AnalyzerNodeInfo.getFileInfo(functionNode).diagnosticRuleSet.analyzeUnannotatedFunctions && + !nodeInfo.getFileInfo(functionNode).diagnosticRuleSet.analyzeUnannotatedFunctions && ParseTreeUtils.isUnannotatedFunction(functionNode); // Skip return type inference if we are in "skip unannotated function" mode. if (!skipUnannotatedFunction && !checkCodeFlowTooComplex(functionNode.d.suite)) { - const codeFlowComplexity = AnalyzerNodeInfo.getCodeFlowComplexity(functionNode); + const codeFlowComplexity = nodeInfo.getCodeFlowComplexity(functionNode); // For very complex functions that have no annotated parameter types, // don't attempt to infer the return type because it can be extremely @@ -23839,7 +24032,7 @@ export function createTypeEvaluator( if (type.shared.declaration?.node) { // Externalize any TypeVars that appear in the type. - const liveScopeIds = ParseTreeUtils.getTypeVarScopesForNode(type.shared.declaration.node); + const liveScopeIds = getTypeVarScopesForNode(type.shared.declaration.node); returnType = makeTypeVarsFree(returnType, liveScopeIds); } } @@ -23857,7 +24050,7 @@ export function createTypeEvaluator( return undefined; } const functionNode = type.shared.declaration.node; - const codeFlowComplexity = AnalyzerNodeInfo.getCodeFlowComplexity(functionNode); + const codeFlowComplexity = nodeInfo.getCodeFlowComplexity(functionNode); if (codeFlowComplexity >= maxReturnCallSiteTypeInferenceCodeFlowComplexity) { return undefined; @@ -28794,7 +28987,7 @@ export function createTypeEvaluator( // expression tree because we don't want to mutate the latter; the // expression tree created by this function is therefore used only temporarily. function parseStringAsTypeAnnotation(node: StringListNode, reportErrors: boolean): ExpressionNode | undefined { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const parser = new Parser(); const textValue = node.d.strings[0].d.value; @@ -28822,7 +29015,8 @@ export function createTypeEvaluator( parseOptions, ParseTextMode.Expression, /* initialParenDepth */ undefined, - fileInfo.typingSymbolAliases + fileInfo.typingSymbolAliases, + node.a ); if (parseResults.parseTree) { @@ -28832,7 +29026,7 @@ export function createTypeEvaluator( return undefined; } - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); parseResults.diagnostics.forEach((diag) => { fileInfo.diagnosticSink.addDiagnosticWithTextRange('error', diag.message, node); }); @@ -28842,7 +29036,7 @@ export function createTypeEvaluator( // Optionally add the new subtree to the parse tree so it can // participate in language server operations like find and replace. if (reportErrors) { - node.d.annotation = parseResults.parseTree; + nodeInfo.setStringAnnotation(node, parseResults.parseTree, parseResults.stringAnnotations); } return parseResults.parseTree; @@ -28855,7 +29049,7 @@ export function createTypeEvaluator( // var can be "narrowed" to a single one of its constraints based on isinstance // checks within the code flow. function narrowConstrainedTypeVar(node: ParseNode, typeVar: TypeVarType): Type | undefined { - const flowNode = AnalyzerNodeInfo.getFlowNode(node); + const flowNode = nodeInfo.getFlowNode(node); if (!flowNode) { return undefined; @@ -28869,7 +29063,7 @@ export function createTypeEvaluator( } function getLineNum(node: ParseNode) { - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const fileInfo = nodeInfo.getFileInfo(node); const range = convertOffsetsToRange(node.start, node.start + node.length, fileInfo.lines); return (range.start.line + 1).toString(); } @@ -28888,6 +29082,7 @@ export function createTypeEvaluator( const evaluatorInterface: TypeEvaluator = { runWithCancellationToken, + getAnalyzerNodeInfoReader: () => nodeInfo, getType, getTypeResult, getTypeResultForDecorator, @@ -28999,7 +29194,7 @@ export function createTypeEvaluator( printControlFlowGraph, }; - const codeFlowEngine = getCodeFlowEngine(evaluatorInterface, speculativeTypeTracker); + const codeFlowEngine = getCodeFlowEngine(evaluatorInterface, speculativeTypeTracker, nodeInfo); return evaluatorInterface; } diff --git a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts index 55b2a234adf7..2733db66fe21 100644 --- a/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts +++ b/packages/pyright-internal/src/analyzer/typeEvaluatorTypes.ts @@ -30,6 +30,7 @@ import { StringNode, } from '../parser/parseNodes'; import { AnalyzerFileInfo } from './analyzerFileInfo'; +import { AnalyzerNodeInfoReader } from './analyzerNodeInfo'; import { CodeFlowReferenceExpressionNode, FlowNode } from './codeFlowTypes'; import { ConstraintTracker } from './constraintTracker'; import { Declaration } from './declaration'; @@ -654,6 +655,7 @@ export interface TypeEvaluator { runWithCancellationToken(token: CancellationToken, callback: () => T): T; runWithCancellationToken(token: CancellationToken, callback: () => Promise): Promise; + getAnalyzerNodeInfoReader: () => AnalyzerNodeInfoReader; getType: (node: ExpressionNode) => Type | undefined; getTypeResult: (node: ExpressionNode) => TypeResult | undefined; getTypeResultForDecorator: (node: DecoratorNode) => TypeResult | undefined; diff --git a/packages/pyright-internal/src/analyzer/typeGuards.ts b/packages/pyright-internal/src/analyzer/typeGuards.ts index 1dd3ae5bc1bb..05e409ddc9ec 100644 --- a/packages/pyright-internal/src/analyzer/typeGuards.ts +++ b/packages/pyright-internal/src/analyzer/typeGuards.ts @@ -21,7 +21,7 @@ import { ParseNodeType, } from '../parser/parseNodes'; import { KeywordType, OperatorType } from '../parser/tokenizerTypes'; -import { getFileInfo } from './analyzerNodeInfo'; +import { getInfoReader, AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { addConstraintsForExpectedType } from './constraintSolver'; import { ConstraintTracker } from './constraintTracker'; import { Declaration, DeclarationType } from './declaration'; @@ -119,6 +119,7 @@ export function getTypeNarrowingCallback( reference: ExpressionNode, testExpression: ExpressionNode, isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor, recursionCount = 0 ): TypeNarrowingCallback | undefined { if (recursionCount > maxTypeRecursionCount) { @@ -133,6 +134,7 @@ export function getTypeNarrowingCallback( reference, testExpression, isPositiveTest, + nodeInfo, recursionCount ); } @@ -700,7 +702,8 @@ export function getTypeNarrowingCallback( isInstanceCheck, /* isTypeIsCheck */ false, isPositiveTest, - testExpression + testExpression, + nodeInfo ), isIncomplete, }; @@ -802,7 +805,8 @@ export function getTypeNarrowingCallback( typeGuardType, isPositiveTest, isStrictTypeGuard, - testExpression + testExpression, + nodeInfo ), isIncomplete, }; @@ -833,6 +837,7 @@ export function getTypeNarrowingCallback( reference, testExpression, isPositiveTest, + nodeInfo, recursionCount ); if (narrowingCallback) { @@ -852,6 +857,7 @@ export function getTypeNarrowingCallback( reference, testExpression.d.expr, !isPositiveTest, + nodeInfo, recursionCount ); } @@ -865,6 +871,7 @@ function getTypeNarrowingCallbackForAliasedCondition( reference: ExpressionNode, testExpression: ExpressionNode, isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor, recursionCount: number ) { if ( @@ -923,7 +930,7 @@ function getTypeNarrowingCallbackForAliasedCondition( return undefined; } - return getTypeNarrowingCallback(evaluator, reference, initNode, isPositiveTest, recursionCount); + return getTypeNarrowingCallback(evaluator, reference, initNode, isPositiveTest, nodeInfo, recursionCount); } // Determines whether the symbol is a local variable or parameter within @@ -935,7 +942,8 @@ function getDeclsForLocalVar( reachableFrom: ParseNode, requireUnique: boolean ): Declaration[] | undefined { - const scope = getScopeForNode(name); + const nodeInfo = getInfoReader(evaluator); + const scope = getScopeForNode(name, nodeInfo); if (scope?.type !== ScopeType.Function && scope?.type !== ScopeType.Module) { return undefined; } @@ -963,7 +971,7 @@ function getDeclsForLocalVar( if ( decls.some((decl) => { const nodeToConsider = decl.type === DeclarationType.Param ? decl.node.d.name! : decl.node; - const declScopeNode = ParseTreeUtils.getExecutionScopeNode(nodeToConsider); + const declScopeNode = ParseTreeUtils.getExecutionScopeNode(nodeToConsider, nodeInfo); if (prevDeclScope && declScopeNode !== prevDeclScope) { return true; } @@ -984,11 +992,19 @@ function getTypeNarrowingCallbackForAssignmentExpression( reference: ExpressionNode, testExpression: AssignmentExpressionNode, isPositiveTest: boolean, + nodeInfo: AnalyzerNodeInfoAccessor, recursionCount: number ) { return ( - getTypeNarrowingCallback(evaluator, reference, testExpression.d.rightExpr, isPositiveTest, recursionCount) ?? - getTypeNarrowingCallback(evaluator, reference, testExpression.d.name, isPositiveTest, recursionCount) + getTypeNarrowingCallback( + evaluator, + reference, + testExpression.d.rightExpr, + isPositiveTest, + nodeInfo, + recursionCount + ) ?? + getTypeNarrowingCallback(evaluator, reference, testExpression.d.name, isPositiveTest, nodeInfo, recursionCount) ); } @@ -998,7 +1014,8 @@ function narrowTypeForUserDefinedTypeGuard( typeGuardType: Type, isPositiveTest: boolean, isStrictTypeGuard: boolean, - errorNode: ExpressionNode + errorNode: ExpressionNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { // For non-strict type guards, always narrow to the typeGuardType // in the positive case and don't narrow in the negative case. @@ -1031,7 +1048,8 @@ function narrowTypeForUserDefinedTypeGuard( /* isInstanceCheck */ true, /* isTypeIsCheck */ true, isPositiveTest, - errorNode + errorNode, + nodeInfo ); } @@ -1353,7 +1371,8 @@ export function narrowTypeForInstanceOrSubclass( isInstanceCheck: boolean, isTypeIsCheck: boolean, isPositiveTest: boolean, - errorNode: ExpressionNode + errorNode: ExpressionNode, + nodeInfo: AnalyzerNodeInfoAccessor ) { // First try with intersection types disallowed. const narrowedType = narrowTypeForInstanceOrSubclassInternal( @@ -1364,7 +1383,8 @@ export function narrowTypeForInstanceOrSubclass( isTypeIsCheck, isPositiveTest, /* allowIntersections */ false, - errorNode + errorNode, + nodeInfo ); if (!isNever(narrowedType)) { @@ -1380,7 +1400,8 @@ export function narrowTypeForInstanceOrSubclass( isTypeIsCheck, isPositiveTest, /* allowIntersections */ true, - errorNode + errorNode, + nodeInfo ); } @@ -1392,7 +1413,8 @@ function narrowTypeForInstanceOrSubclassInternal( isTypeIsCheck: boolean, isPositiveTest: boolean, allowIntersections: boolean, - errorNode: ExpressionNode + errorNode: ExpressionNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { const result = mapSubtypes(type, (subtype) => { let adjSubtype = subtype; @@ -1421,7 +1443,8 @@ function narrowTypeForInstanceOrSubclassInternal( isTypeIsCheck, isPositiveTest, allowIntersections, - errorNode + errorNode, + nodeInfo ); if (!resultRequiresAdj) { @@ -1452,7 +1475,8 @@ function narrowTypeForInstance( isTypeIsCheck: boolean, isPositiveTest: boolean, allowIntersections: boolean, - errorNode: ExpressionNode + errorNode: ExpressionNode, + nodeInfo: AnalyzerNodeInfoAccessor ): Type { let expandedTypes = mapSubtypes(type, (subtype) => { return transformPossibleRecursiveTypeAlias(subtype); @@ -1468,7 +1492,7 @@ function narrowTypeForInstance( // If this is an isinstance or issubclass check, the type variables // should be converted to "free" type variables. - return makeTypeVarsFree(varType, ParseTreeUtils.getTypeVarScopesForNode(errorNode)); + return makeTypeVarsFree(varType, ParseTreeUtils.getTypeVarScopesForNode(errorNode, nodeInfo)); }; // Filters the varType by the parameters of the isinstance @@ -1535,7 +1559,7 @@ function narrowTypeForInstance( if (!isTypeIsCheck) { runtimeVarType = makeTypeVarsFree( runtimeVarType, - ParseTreeUtils.getTypeVarScopesForNode(errorNode) + ParseTreeUtils.getTypeVarScopesForNode(errorNode, nodeInfo) ); } @@ -1775,7 +1799,7 @@ function narrowTypeForInstance( // two type is a subclass that is callable. We'll synthesize a // new intersection type. const className = ``; - const fileInfo = getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); let newClassType = ClassType.createInstantiable( className, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className), @@ -2828,7 +2852,7 @@ export function enumerateLiteralsForType(evaluator: TypeEvaluator, type: ClassTy fields.forEach((symbol, name) => { if (!symbol.isIgnoredForProtocolMatch()) { let symbolType = evaluator.getEffectiveTypeOfSymbol(symbol); - symbolType = transformTypeForEnumMember(evaluator, type, name) ?? symbolType; + symbolType = transformTypeForEnumMember(evaluator, type, name, getInfoReader(evaluator)) ?? symbolType; if ( isClassInstance(symbolType) && diff --git a/packages/pyright-internal/src/analyzer/typeStubWriter.ts b/packages/pyright-internal/src/analyzer/typeStubWriter.ts index bfcba2dcff3a..84772ba1aa2e 100644 --- a/packages/pyright-internal/src/analyzer/typeStubWriter.ts +++ b/packages/pyright-internal/src/analyzer/typeStubWriter.ts @@ -48,6 +48,7 @@ import { import { OperatorType } from '../parser/tokenizerTypes'; import { ParseFileResults } from '../parser/parser'; import * as AnalyzerNodeInfo from './analyzerNodeInfo'; +import { getInfoReader } from './analyzerNodeInfo'; import * as ParseTreeUtils from './parseTreeUtils'; import { ParseTreeWalker } from './parseTreeWalker'; import { getScopeForNode } from './scopeUtils'; @@ -103,8 +104,12 @@ class TrackedImportFrom extends TrackedImport { } class ImportSymbolWalker extends ParseTreeWalker { - constructor(private _accessedImportedSymbols: Set, private _treatStringsAsSymbols: boolean) { - super(); + constructor( + private _accessedImportedSymbols: Set, + private _treatStringsAsSymbols: boolean, + private _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader + ) { + super(_nodeInfo); } analyze(node: ExpressionNode) { @@ -112,7 +117,7 @@ class ImportSymbolWalker extends ParseTreeWalker { } override walk(node: ParseNode) { - if (!AnalyzerNodeInfo.isCodeUnreachable(node)) { + if (!AnalyzerNodeInfo.isCodeUnreachable(node, this._nodeInfo)) { super.walk(node); } } @@ -225,7 +230,13 @@ export class TypeStubWriter { throw new Error('Type evaluator unavailable for stub generation'); } - const treeWalker = new TypeStubTreeWalker(typeStubPath, parseResults, fileSystem, evaluator); + const treeWalker = new TypeStubTreeWalker( + typeStubPath, + parseResults, + fileSystem, + evaluator, + getInfoReader(this._program) + ); treeWalker.write(); this._program.handleMemoryHighUsage(); @@ -283,7 +294,8 @@ class TypeStubTreeWalker extends ParseTreeWalker { private readonly _stubPath: Uri, private readonly _parseResults: ParseFileResults, private readonly _fileSystem: FileSystem, - private readonly _evaluator: TypeEvaluator + private readonly _evaluator: TypeEvaluator, + private readonly _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader ) { super(); @@ -305,7 +317,7 @@ class TypeStubTreeWalker extends ParseTreeWalker { } override walk(node: ParseNode) { - if (!AnalyzerNodeInfo.isCodeUnreachable(node)) { + if (!AnalyzerNodeInfo.isCodeUnreachable(node, this._nodeInfo)) { super.walk(node); } } @@ -634,7 +646,7 @@ class TypeStubTreeWalker extends ParseTreeWalker { return false; } - const currentScope = getScopeForNode(node); + const currentScope = getScopeForNode(node, this._nodeInfo); if (currentScope) { // Record the input for later. node.d.list.forEach((imp) => { @@ -666,7 +678,7 @@ class TypeStubTreeWalker extends ParseTreeWalker { return false; } - const currentScope = getScopeForNode(node); + const currentScope = getScopeForNode(node, this._nodeInfo); if (currentScope) { // Record the input for later. const moduleName = this._printModuleName(node.d.module); @@ -831,7 +843,11 @@ class TypeStubTreeWalker extends ParseTreeWalker { } private _printExpression(node: ExpressionNode, isType = false, treatStringsAsSymbols = false): string { - const importSymbolWalker = new ImportSymbolWalker(this._accessedImportedSymbols, treatStringsAsSymbols); + const importSymbolWalker = new ImportSymbolWalker( + this._accessedImportedSymbols, + treatStringsAsSymbols, + this._nodeInfo + ); importSymbolWalker.analyze(node); let expressionFlags = isType diff --git a/packages/pyright-internal/src/analyzer/typeUtils.ts b/packages/pyright-internal/src/analyzer/typeUtils.ts index 95ac44447851..79af78bd7502 100644 --- a/packages/pyright-internal/src/analyzer/typeUtils.ts +++ b/packages/pyright-internal/src/analyzer/typeUtils.ts @@ -2514,7 +2514,11 @@ export function getMembersForClass(classType: ClassType, symbolTable: SymbolTabl // Add any new member variables from this class. const isClassTypedDict = ClassType.isTypedDictClass(mroClass); ClassType.getSymbolTable(mroClass).forEach((symbol, name) => { - if (symbol.isClassMember() || (includeInstanceVars && symbol.isInstanceMember())) { + if ( + symbol.isClassMember() || + symbol.isNamedTupleMemberMember() || + (includeInstanceVars && symbol.isInstanceMember()) + ) { if (!isClassTypedDict || !isTypedDictMemberAccessedThroughIndex(symbol)) { if (!symbol.isInitVar()) { const existingSymbol = symbolTable.get(name); diff --git a/packages/pyright-internal/src/analyzer/typedDicts.ts b/packages/pyright-internal/src/analyzer/typedDicts.ts index be0cf4cbdb77..21f7ca36d9c5 100644 --- a/packages/pyright-internal/src/analyzer/typedDicts.ts +++ b/packages/pyright-internal/src/analyzer/typedDicts.ts @@ -25,7 +25,7 @@ import { ParseNodeType, } from '../parser/parseNodes'; import { KeywordType } from '../parser/tokenizerTypes'; -import * as AnalyzerNodeInfo from './analyzerNodeInfo'; +import { AnalyzerNodeInfoAccessor } from './analyzerNodeInfo'; import { ConstraintTracker } from './constraintTracker'; import { DeclarationType, VariableDeclaration } from './declaration'; import * as ParseTreeUtils from './parseTreeUtils'; @@ -80,9 +80,10 @@ export function createTypedDictType( evaluator: TypeEvaluator, errorNode: ExpressionNode, typedDictClass: ClassType, - argList: Arg[] + argList: Arg[], + nodeInfo: AnalyzerNodeInfoAccessor ): ClassType { - const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode); + const fileInfo = nodeInfo.getFileInfo(errorNode); // TypedDict supports two different syntaxes: // Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str}) @@ -140,7 +141,13 @@ export function createTypedDictType( ) { usingDictSyntax = true; - getTypedDictFieldsFromDictSyntax(evaluator, entriesArg.valueExpression, classFields, /* isInline */ false); + getTypedDictFieldsFromDictSyntax( + evaluator, + entriesArg.valueExpression, + classFields, + /* isInline */ false, + nodeInfo + ); } else if (entriesArg.name) { const entrySet = new Set(); for (let i = 1; i < argList.length; i++) { @@ -245,7 +252,7 @@ export function createTypedDictType( } } - synthesizeTypedDictClassMethods(evaluator, errorNode, classType); + synthesizeTypedDictClassMethods(evaluator, errorNode, classType, nodeInfo); // Validate that the assigned variable name is consistent with the provided name. if (errorNode.parent?.nodeType === ParseNodeType.Assignment && className) { @@ -272,9 +279,10 @@ export function createTypedDictType( export function createTypedDictTypeInlined( evaluator: TypeEvaluator, dictNode: DictionaryNode, - typedDictClass: ClassType + typedDictClass: ClassType, + nodeInfo: AnalyzerNodeInfoAccessor ): ClassType { - const fileInfo = AnalyzerNodeInfo.getFileInfo(dictNode); + const fileInfo = nodeInfo.getFileInfo(dictNode); const className = ''; const classType = ClassType.createInstantiable( @@ -290,8 +298,14 @@ export function createTypedDictTypeInlined( classType.shared.baseClasses.push(typedDictClass); computeMroLinearization(classType); - getTypedDictFieldsFromDictSyntax(evaluator, dictNode, ClassType.getSymbolTable(classType), /* isInline */ true); - synthesizeTypedDictClassMethods(evaluator, dictNode, classType); + getTypedDictFieldsFromDictSyntax( + evaluator, + dictNode, + ClassType.getSymbolTable(classType), + /* isInline */ true, + nodeInfo + ); + synthesizeTypedDictClassMethods(evaluator, dictNode, classType, nodeInfo); return classType; } @@ -299,7 +313,8 @@ export function createTypedDictTypeInlined( export function synthesizeTypedDictClassMethods( evaluator: TypeEvaluator, node: ClassNode | ExpressionNode, - classType: ClassType + classType: ClassType, + nodeInfo: AnalyzerNodeInfoAccessor ) { assert(ClassType.isTypedDictClass(classType)); @@ -453,7 +468,7 @@ export function synthesizeTypedDictClassMethods( ) { const getOverload = FunctionType.createSynthesizedInstance('get', FunctionTypeFlags.Overloaded); FunctionType.addParam(getOverload, selfParam); - getOverload.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); + getOverload.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node, nodeInfo); FunctionType.addParam( getOverload, FunctionParam.create(ParamCategory.Simple, keyType, FunctionParamFlags.TypeDeclared, 'k') @@ -508,7 +523,7 @@ export function synthesizeTypedDictClassMethods( const popOverload2 = FunctionType.createSynthesizedInstance('pop', FunctionTypeFlags.Overloaded); FunctionType.addParam(popOverload2, selfParam); FunctionType.addParam(popOverload2, keyParam); - popOverload2.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node); + popOverload2.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node, nodeInfo); const defaultTypeVar = createDefaultTypeVar(popOverload2); let defaultParamType: Type; @@ -971,10 +986,11 @@ function getTypedDictFieldsFromDictSyntax( evaluator: TypeEvaluator, entryDict: DictionaryNode, classFields: SymbolTable, - isInline: boolean + isInline: boolean, + nodeInfo: AnalyzerNodeInfoAccessor ) { const entrySet = new Set(); - const fileInfo = AnalyzerNodeInfo.getFileInfo(entryDict); + const fileInfo = nodeInfo.getFileInfo(entryDict); entryDict.d.items.forEach((entry) => { if (entry.nodeType !== ParseNodeType.DictionaryKeyEntry) { diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index 3810bcc6d212..7d3c17f1564f 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -7,7 +7,7 @@ import { CancellationToken, ExecuteCommandParams } from 'vscode-languageserver'; -import { getFlowNode } from '../analyzer/analyzerNodeInfo'; +import { getInfoReader, getFlowNode } from '../analyzer/analyzerNodeInfo'; import { findNodeByOffset } from '../analyzer/parseTreeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { dumpSyntaxInfo, dumpTokenInfo, dumpTypeInfo } from '../common/languageInfoUtils'; @@ -103,7 +103,7 @@ export class DumpFileDebugInfo { if (!node) { return []; } - const flowNode = getFlowNode(node); + const flowNode = getFlowNode(node, getInfoReader(p)); if (!flowNode) { return []; } diff --git a/packages/pyright-internal/src/common/collectionUtils.ts b/packages/pyright-internal/src/common/collectionUtils.ts index b88be987a3f8..2f87aef56d60 100644 --- a/packages/pyright-internal/src/common/collectionUtils.ts +++ b/packages/pyright-internal/src/common/collectionUtils.ts @@ -366,12 +366,20 @@ export function removeArrayElements(array: T[], predicate: (item: T) => boole } export function createMapFromItems(items: T[], keyGetter: (t: T) => string) { - return items - .map((t) => keyGetter(t)) - .reduce((map, key, i) => { - map.set(key, (map.get(key) || []).concat(items[i])); - return map; - }, new Map()); + // Single O(n) pass. The previous implementation appended with + // `(map.get(key) || []).concat(item)`, which rebuilt the whole bucket array + // on every insertion and cost O(k^2) for a key that accumulated k items. + const map = new Map(); + for (const item of items) { + const key = keyGetter(item); + const existing = map.get(key); + if (existing === undefined) { + map.set(key, [item]); + } else { + existing.push(item); + } + } + return map; } export function addIfUnique(arr: T[], t: T, equalityComparer: EqualityComparer = equateValues): T[] { diff --git a/packages/pyright-internal/src/common/commandLineOptions.ts b/packages/pyright-internal/src/common/commandLineOptions.ts index c8de1333eae5..4760c3cd642f 100644 --- a/packages/pyright-internal/src/common/commandLineOptions.ts +++ b/packages/pyright-internal/src/common/commandLineOptions.ts @@ -84,6 +84,12 @@ export class CommandLineConfigOptions { // execution environments. autoSearchPaths?: boolean | undefined; + // Whether to add the built-in default excludes (e.g. '**/node_modules', + // '**/__pycache__', '**/.*', plus auto-detected virtual environments). + // Defaults to true when undefined. When false, no default excludes are + // added and virtual-environment auto-detection is disabled. + useDefaultExcludes?: boolean | undefined; + // Extra paths to add to the default execution environment // when user has not explicitly defined execution environments. extraPaths?: string[] | undefined; diff --git a/packages/pyright-internal/src/common/configOptions.ts b/packages/pyright-internal/src/common/configOptions.ts index 484469ee1399..e451a5f8a7a3 100644 --- a/packages/pyright-internal/src/common/configOptions.ts +++ b/packages/pyright-internal/src/common/configOptions.ts @@ -23,6 +23,7 @@ import { ConsoleInterface, NullConsole } from './console'; import { isBoolean } from './core'; import { TaskListToken } from './diagnostic'; import { DiagnosticRule } from './diagnosticRules'; +import { containsWildcard, expandExtraPaths } from './extraPathGlob'; import { FileSystem } from './fileSystem'; import { Host } from './host'; import { PythonVersion, latestStablePythonVersion } from './pythonVersion'; @@ -977,12 +978,21 @@ export class ConfigOptions { // Automatically detect virtual environment folders and exclude them. // This property is for internal use and not exposed externally - // as a config setting. - // It is used to store whether the user has specified directories in - // the exclude setting, which is later modified to include a default set. - // This setting is true when user has not specified any exclude. + // as a config setting. It mirrors the `useDefaultExcludes` setting + // (see AnalyzerService's _ensureDefaultOptions): virtual environment + // directories are part of the default-exclude set, so auto-detection is + // enabled whenever default excludes are on (the default) and disabled when + // the user turns default excludes off. autoExcludeVenv?: boolean | undefined; + // Whether the user explicitly provided any `exclude` entries (via a config + // file or language-server settings) before the default excludes were added. + // This is for internal use and not exposed as a config setting. It lets + // consumers distinguish "orphaned only by implicit default excludes" from + // "explicitly excluded by the user" now that the default excludes are always + // applied additively. + userSpecifiedExcludes = false; + // A list of file specs whose errors and warnings should be ignored even // if they are included in the transitive closure of included files. ignore: FileSpec[] = []; @@ -1057,6 +1067,10 @@ export class ConfigOptions { // Default extraPaths. Can be overridden by executionEnvironment. defaultExtraPaths?: Uri[] | undefined; + // Raw `extraPaths` glob specs (wildcards preserved). The glob-expanded directory list lives in + // `defaultExtraPaths` / execution-environment `extraPaths`; these are kept so the globs can be watched. + readonly extraPathGlobFileSpecs: string[] = []; + // Should native library import resolutions be skipped? skipNativeLibraries?: boolean; @@ -1305,21 +1319,32 @@ export class ConfigOptions { } // Read the config "extraPaths". - const configExtraPaths: Uri[] = []; if (configObj.extraPaths !== undefined) { unusedConfigKeys.delete('extraPaths'); if (!Array.isArray(configObj.extraPaths)) { console.error(`Config "extraPaths" field must contain an array.`); } else { const pathList = configObj.extraPaths as string[]; + const validPaths: string[] = []; pathList.forEach((path, pathIndex) => { if (typeof path !== 'string') { console.error(`Config "extraPaths" field ${pathIndex} must be a string.`); } else { - configExtraPaths!.push(configDirUri.resolvePaths(path)); + validPaths.push(path); } }); - this.defaultExtraPaths = [...configExtraPaths]; + + const fs = serviceProvider.tryGet(ServiceKeys.fs); + if (!fs && validPaths.some(containsWildcard)) { + console.warn( + `Cannot expand wildcard "extraPaths" entries because no file system is available; ` + + `treating them as literal paths.` + ); + } + this.defaultExtraPaths = fs + ? expandExtraPaths(fs, configDirUri, validPaths, console) + : validPaths.map((path) => configDirUri.resolvePaths(path)); + this._recordExtraPathGlobFileSpecs(configDirUri, validPaths); } } @@ -1554,11 +1579,23 @@ export class ConfigOptions { } if (extraPaths && extraPaths.length > 0) { - for (const p of extraPaths) { - const path = this.projectRoot.resolvePaths(p); - paths.push(fs.realCasePath(path)); - if (isDirectory(fs, path)) { - appendArray(paths, getPathsFromPthFiles(fs, path)); + this._recordExtraPathGlobFileSpecs(this.projectRoot, extraPaths); + + // `expandExtraPaths` de-duplicates case-sensitively, but `realCasePath` + // can subsequently collapse case-variant entries to the same directory + // on a case-insensitive file system. Re-de-duplicate on the real-cased + // key so the settings origin does not emit duplicate search paths. + const seen = new Set(); + for (const expandedPath of expandExtraPaths(fs, this.projectRoot, extraPaths)) { + const realCasedPath = fs.realCasePath(expandedPath); + if (seen.has(realCasedPath.key)) { + continue; + } + seen.add(realCasedPath.key); + + paths.push(realCasedPath); + if (isDirectory(fs, expandedPath)) { + appendArray(paths, getPathsFromPthFiles(fs, expandedPath)); } } } @@ -1590,7 +1627,7 @@ export class ConfigOptions { } } - setupExecutionEnvironments(configObj: any, configDirUri: Uri, console: ConsoleInterface) { + setupExecutionEnvironments(configObj: any, configDirUri: Uri, console: ConsoleInterface, fs?: FileSystem) { // Read the "executionEnvironments" array. This should be done at the end // after we've established default values. if (configObj.executionEnvironments !== undefined) { @@ -1610,7 +1647,8 @@ export class ConfigOptions { this.diagnosticRuleSet, this.defaultPythonVersion, this.defaultPythonPlatform, - this.defaultExtraPaths || [] + this.defaultExtraPaths || [], + fs ); if (execEnv) { @@ -1636,6 +1674,25 @@ export class ConfigOptions { return defaultValue; } + // Records wildcard `extraPaths` specs (as absolute, glob-preserving path strings) so a file + // watcher can be registered for each. De-dupes against already-recorded specs: this runs once + // per extra-paths origin (config, settings, each execution environment), and the settings + // origin in particular can run more than once (a zero-match glob leaves `defaultExtraPaths` + // unset, so the caller's `!defaultExtraPaths` guard lets `ensureDefaultExtraPaths` run again). + // Recording a spec that currently matches nothing is intentional so directories that appear + // later can be observed; the same spec must not be recorded twice. + private _recordExtraPathGlobFileSpecs(baseUri: Uri, entries: readonly string[]) { + for (const entry of entries) { + if (!containsWildcard(entry)) { + continue; + } + const spec = baseUri.resolvePaths(entry).getFilePath(); + if (!this.extraPathGlobFileSpecs.includes(spec)) { + this.extraPathGlobFileSpecs.push(spec); + } + } + } + private _convertDiagnosticLevel(value: any, fieldName: string, defaultValue: DiagnosticLevel): DiagnosticLevel { if (value === undefined) { return defaultValue; @@ -1659,7 +1716,8 @@ export class ConfigOptions { configDiagnosticRuleSet: DiagnosticRuleSet, configPythonVersion: PythonVersion | undefined, configPythonPlatform: string | undefined, - configExtraPaths: Uri[] + configExtraPaths: Uri[], + fs?: FileSystem ): ExecutionEnvironment | undefined { try { const envObjKeys = envObj && typeof envObj === 'object' ? Object.getOwnPropertyNames(envObj) : []; @@ -1695,6 +1753,7 @@ export class ConfigOptions { newExecEnv.extraPaths = []; const pathList = envObj.extraPaths as string[]; + const validPaths: string[] = []; pathList.forEach((path, pathIndex) => { if (typeof path !== 'string') { console.error( @@ -1702,9 +1761,20 @@ export class ConfigOptions { ` extraPaths field ${pathIndex} must be a string.` ); } else { - newExecEnv.extraPaths.push(configDirUri.resolvePaths(path)); + validPaths.push(path); } }); + + if (!fs && validPaths.some(containsWildcard)) { + console.warn( + `Config executionEnvironments index ${index}: cannot expand wildcard "extraPaths" ` + + `entries because no file system is available; treating them as literal paths.` + ); + } + newExecEnv.extraPaths = fs + ? expandExtraPaths(fs, configDirUri, validPaths, console) + : validPaths.map((path) => configDirUri.resolvePaths(path)); + this._recordExtraPathGlobFileSpecs(configDirUri, validPaths); } } diff --git a/packages/pyright-internal/src/common/envVarUtils.ts b/packages/pyright-internal/src/common/envVarUtils.ts index a043d60c8ec9..4f489a7620c3 100644 --- a/packages/pyright-internal/src/common/envVarUtils.ts +++ b/packages/pyright-internal/src/common/envVarUtils.ts @@ -14,18 +14,27 @@ import { isRootedDiskPath, normalizeSlashes } from './pathUtils'; import { ServiceKeys } from './serviceKeys'; import { escapeRegExp } from './stringUtils'; -export function resolvePathWithEnvVariables( +// Resolves a settings-provided path against the workspace, expanding VS Code variables +// (e.g. `${workspaceFolder}`) and returning the result as a string. +// +// The result is a string (rather than a `Uri`) because settings such as `extraPaths` support +// glob patterns: wildcard characters (`*`, `**`, `?`) survive verbatim in a string, whereas a +// `Uri` percent-encodes them (e.g. `*` becomes `%2A`) and obscures the glob. +// `resolvePathWithEnvVariables` is a thin `Uri`-returning wrapper over this function. +export function resolvePathStringWithEnvVariables( workspace: Workspace, path: string, workspaces: Workspace[] -): Uri | undefined { +): string | undefined { const rootUri = workspace.rootUri; const expanded = expandPathVariables(path, rootUri ?? Uri.empty(), workspaces); - const caseDetector = workspace.service.serviceProvider.get(ServiceKeys.caseSensitivityDetector); + + // If the path expanded to a full URI, no root resolution is needed. Normalize to forward + // slashes so a URI string with backslashes (e.g. `vscode-vfs://host/a\b`) parses to the same + // `Uri` the wrapper produced before this function was split out. if (Uri.maybeUri(expanded)) { - // If path is expanded to uri, no need to resolve it against the workspace root. - return Uri.parse(normalizeSlashes(expanded, '/'), caseDetector); + return normalizeSlashes(expanded, '/'); } // Expansion may have failed. @@ -34,22 +43,50 @@ export function resolvePathWithEnvVariables( } if (rootUri) { - // normal case, resolve the path against workspace root. - return rootUri.resolvePaths(normalizeSlashes(expanded, '/')); + // Resolve the (relative or absolute) path against the workspace root through the root + // `Uri` so the root's scheme is honored, then render it back to a string: + // - file/empty scheme: the plain file path, so wildcard characters survive verbatim + // (a URI string would percent-encode `*` as `%2A`). + // - other schemes (e.g. vscode-vfs): the URI string, so the scheme is preserved (glob + // expansion isn't supported off the local filesystem anyway). + // Slash normalization is intentionally left to consumers: every consumer turns this string + // back into a `Uri` (via `resolvePaths`/`Uri.file`/`Uri.parse`), which normalizes, so + // normalizing here would be redundant. + const resolved = rootUri.resolvePaths(expanded); + return resolved.scheme === '' || resolved.scheme === 'file' ? resolved.getFilePath() : resolved.toString(); } - // We don't have workspace root. but path contains something that require `workspace root` + // We don't have a workspace root, but the path requires one. if (path.includes('${workspaceFolder')) { return undefined; } - // Without workspace root, we can't handle any `relative path`. + // Without a workspace root, we can only handle an absolute path. `isRootedDiskPath` is + // sensitive to the platform separator (`getRootLength` uses `path.sep`), so normalize for the + // check only; the returned string stays as-is (consumers normalize when they build a `Uri`). if (!isRootedDiskPath(normalizeSlashes(expanded))) { return undefined; } - // We have absolute file path. - return Uri.file(expanded, caseDetector); + return expanded; +} + +// Resolves a settings-provided path against the workspace as a `Uri`. Thin wrapper over +// `resolvePathStringWithEnvVariables`; see it for the resolution rules. +export function resolvePathWithEnvVariables( + workspace: Workspace, + path: string, + workspaces: Workspace[] +): Uri | undefined { + const resolved = resolvePathStringWithEnvVariables(workspace, path, workspaces); + if (resolved === undefined) { + return undefined; + } + + const caseDetector = workspace.service.serviceProvider.get(ServiceKeys.caseSensitivityDetector); + // A URI string (a full URI, or a non-file scheme rendered above) is parsed back into its + // `Uri`; a plain path becomes a file `Uri`. + return Uri.maybeUri(resolved) ? Uri.parse(resolved, caseDetector) : Uri.file(resolved, caseDetector); } // Expands certain predefined variables supported within VS Code settings. diff --git a/packages/pyright-internal/src/common/extensibility.ts b/packages/pyright-internal/src/common/extensibility.ts index 54af51dee23a..c0293f1ad5bd 100644 --- a/packages/pyright-internal/src/common/extensibility.ts +++ b/packages/pyright-internal/src/common/extensibility.ts @@ -9,6 +9,7 @@ import { CancellationToken } from 'vscode-languageserver'; import { Declaration } from '../analyzer/declaration'; +import { AnalyzerNodeInfoReader } from '../analyzer/analyzerNodeInfo'; import { ImportResolver } from '../analyzer/importResolver'; import * as prog from '../analyzer/program'; import { IPythonMode } from '../analyzer/sourceFile'; @@ -87,6 +88,7 @@ export interface ProgramView { readonly rootPath: Uri; readonly console: ConsoleInterface; readonly evaluator: TypeEvaluator | undefined; + readonly analyzerNodeInfoReader: AnalyzerNodeInfoReader; readonly configOptions: ConfigOptions; readonly importResolver: ImportResolver; readonly fileSystem: ReadOnlyFileSystem; @@ -148,6 +150,7 @@ export interface SymbolUsageProviderFactory { tryCreateProvider( useCase: ReferenceUseCase, declarations: readonly Declaration[], + nodeInfo: AnalyzerNodeInfoReader, token: CancellationToken ): SymbolUsageProvider | undefined; } diff --git a/packages/pyright-internal/src/common/extraPathGlob.ts b/packages/pyright-internal/src/common/extraPathGlob.ts new file mode 100644 index 000000000000..63e454725e6d --- /dev/null +++ b/packages/pyright-internal/src/common/extraPathGlob.ts @@ -0,0 +1,374 @@ +/* + * extraPathGlob.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Expands glob patterns in `extraPaths` entries into concrete directory URIs. + * + * The behavior is specified in `docs/import-resolution.md` (see "Extra Path Glob + * Expansion"). In short: + * - Each raw entry may contain the wildcards `*`, `**`, or `?`, using the same + * syntax as `include`/`exclude`/`ignore`. Only directories are matched. + * - A glob entry is expanded, in place, to the directories it matches, sorted + * in ascending order using a case-sensitive, platform-independent comparison. + * - De-duplication precedence is: an explicit (non-wildcard) entry always wins + * and keeps its own position, even relative to an earlier glob; among globs, + * the earlier glob wins. Two literal entries that resolve to the same path + * keep the first occurrence. + * - Symbolic links are not resolved (the matched path is used as-is so it maps + * to the intended module name), but symbolic-link cycles are guarded against. + * - A glob that matches no directory contributes nothing; this is not an error. + */ + +import { CaseSensitivityDetector } from './caseSensitivityDetector'; +import { ConsoleInterface } from './console'; +import { FileSystem } from './fileSystem'; +import { normalizeSlashes } from './pathUtils'; +import { Uri } from './uri/uri'; +import { + containsWildcardCharacter, + getFileSpec, + getFileSystemEntriesWithSymlinkedDirectories, + getWildcardRoot, + getWildcardSegmentRegexFragment, + isDirectory, + tryRealpath, +} from './uri/uriUtils'; + +// Returns true if the entry contains a glob wildcard character. +export function containsWildcard(entry: string): boolean { + return containsWildcardCharacter(entry); +} + +// A file-watch target derived from a wildcard `extraPaths` entry: the non-wildcard +// root directory to watch, plus the directory glob relative to that root. This lets +// a file watcher register the original glob (e.g. root `libs`, pattern `*/src`) +// instead of the already-expanded leaf directories, so directories that appear or +// disappear at runtime are still observed. `root` is kept as a `Uri` so callers can +// reuse `getFileSpec` for coverage checks and convert to an LSP relative pattern at +// registration time. +export interface ExtraPathWatchTarget { + root: Uri; + dirPattern: string; +} + +// Reconstructs a `Uri` from an `extraPaths` file-spec string. Settings-origin entries +// are kept as plain strings so wildcard characters (`*`, `**`, `?`) survive verbatim; a +// `Uri` built from such a string keeps the wildcards as literal path components (parsing +// a full URI string, or treating a path string as a file path, as appropriate). +function fileSpecToUri(fileSpec: string, caseDetector: CaseSensitivityDetector): Uri { + return Uri.maybeUri(fileSpec) ? Uri.parse(fileSpec, caseDetector) : Uri.file(fileSpec, caseDetector); +} + +// Derives file-watch targets from `extraPaths` file specs whose paths may still contain +// wildcard characters. Entries are kept as strings so `*`, `**`, and `?` survive; a spec +// with no wildcard produces no target (its fixed directory is already covered by the +// expanded search paths). +export function getExtraPathWatchTargets( + fileSpecs: readonly string[], + caseDetector: CaseSensitivityDetector +): ExtraPathWatchTarget[] { + const targets: ExtraPathWatchTarget[] = []; + + for (const fileSpec of fileSpecs) { + const uri = fileSpecToUri(fileSpec, caseDetector); + + // Derive the non-wildcard root with the exact same `getWildcardRoot` helper that + // `_expandGlobEntry` uses to expand the glob. The watch root and the expansion root + // MUST stay byte-identical or the watcher would be rooted differently than the + // directories the glob actually covers; sharing one implementation prevents that drift. + const root = getWildcardRoot(uri, ''); + const components = Array.from(uri.getPathComponents()); + const rootLength = Array.from(root.getPathComponents()).length; + + // No wildcard component: the spec's fixed directory is already covered by the + // expanded search paths, so it contributes no glob watch target. + if (rootLength >= components.length) { + continue; + } + + targets.push({ root, dirPattern: components.slice(rootLength).join('/') }); + } + + return targets; +} + +// Returns true when `folder` is one of the directories the watch target's glob +// matches (or a directory beneath one), i.e. the folder is already covered by the +// glob watcher and does not need its own folder watcher. +export function extraPathWatchTargetCovers(target: ExtraPathWatchTarget, folder: Uri): boolean { + return folder.matchesRegex(getFileSpec(target.root, target.dirPattern).regExp); +} + +// Expands an ordered list of raw `extraPaths` entries into resolved directory +// URIs, applying glob expansion and the de-duplication precedence described at +// the top of this file. `baseUri` is the directory that relative entries resolve +// against (the config file's directory for config entries, or the project root +// for the setting). +export function expandExtraPaths( + fs: FileSystem, + baseUri: Uri, + entries: readonly string[], + console?: ConsoleInterface +): Uri[] { + // Ignore empty or whitespace-only entries. Such entries would otherwise + // resolve to the base directory (for '') or a nonexistent path, silently + // polluting the search-path list; they are always user mistakes. + const cleaned = entries.filter((entry) => entry.trim().length > 0); + + // Extra-path URIs share the workspace's case sensitivity (consistent with the glob matcher + // below, which also derives case sensitivity from `baseUri`). + const caseDetector: CaseSensitivityDetector = { isCaseSensitive: () => baseUri.isCaseSensitive }; + + // Phase 1: resolve every literal entry and claim its normalized key so that an + // explicit entry always wins over any glob-produced duplicate, regardless of + // where the literal appears in the list. + const claimedByExplicit = new Set(); + const literalByIndex: (Uri | undefined)[] = cleaned.map((entry) => { + if (containsWildcard(entry)) { + return undefined; + } + // A URI-form entry is an absolute location; parse it directly. Resolving it against the + // base directory would corrupt the scheme (`resolvePaths` would treat it as a path). + const uri = Uri.maybeUri(entry) ? Uri.parse(entry, caseDetector) : baseUri.resolvePaths(entry); + claimedByExplicit.add(_normalizedKey(uri)); + return uri; + }); + + // Phase 2: emit entries in order. Literals keep their position; globs expand + // in place, dropping any directory already owned by an explicit entry or + // already emitted by an earlier entry (an earlier glob or a literal). + const result: Uri[] = []; + const emitted = new Set(); + + cleaned.forEach((entry, index) => { + const literal = literalByIndex[index]; + if (literal) { + const key = _normalizedKey(literal); + if (!emitted.has(key)) { + emitted.add(key); + result.push(literal); + } + return; + } + + // Globs are only supported for plain paths. A wildcard inside a URI-form entry can't be + // filesystem-walked, so skip it (only pure paths reach the glob matcher). + if (Uri.maybeUri(entry)) { + console?.info(`Skipping glob expansion for non-path extra path "${entry}".`); + return; + } + + for (const match of _expandGlobEntry(fs, baseUri, entry, console)) { + const key = _normalizedKey(match); + if (claimedByExplicit.has(key) || emitted.has(key)) { + continue; + } + emitted.add(key); + result.push(match); + } + }); + + return result; +} + +// Threshold above which a `**` extra-path glob is treated as pathologically broad. Crossing it +// emits a one-time warning to the output window; expansion still proceeds. +const _largeGlobScanThreshold = 10000; + +// Hard ceiling on the number of directories a single glob entry may scan. Unlike +// `_largeGlobScanThreshold` (which only warns), crossing this aborts further traversal of the +// entry so a pathological layout (e.g. a deep symlink DAG whose aliases each re-expand a shared +// subtree) cannot turn config load into an unbounded synchronous walk. Whatever matched before the +// ceiling is still returned. +const _largeGlobScanHardLimit = 100000; + +// Expands a single glob entry into the directories it matches, sorted ascending. +function _expandGlobEntry(fs: FileSystem, baseUri: Uri, entry: string, console?: ConsoleInterface): Uri[] { + const absolute = baseUri.resolvePaths(entry); + + // Enumeration requires synchronous file-system access, which is only available + // for file URIs. Non-file schemes contribute nothing. + if (absolute.scheme !== '' && absolute.scheme !== 'file') { + console?.info(`Skipping glob expansion for non-file extra path "${entry}".`); + return []; + } + + const wildcardRoot = getWildcardRoot(baseUri, entry); + const absoluteComponents = Array.from(absolute.getPathComponents()); + const rootComponents = Array.from(wildcardRoot.getPathComponents()); + const rawTail = absoluteComponents.slice(rootComponents.length); + if (rawTail.length === 0) { + return []; + } + + // Collapse runs of consecutive `**` into a single `**`. Multiple adjacent + // `**` segments (e.g. `packages/**/**/src`) are semantically identical to a + // single `**` but would otherwise multiply the traversal fan-out. + const tail: string[] = []; + for (const component of rawTail) { + if (component === '**' && tail[tail.length - 1] === '**') { + continue; + } + tail.push(component); + } + + const caseSensitive = baseUri.isCaseSensitive; + const matches = new Map(); + // Guards against symbolic-link cycles: tracks the real path of each directory + // on the current traversal path so we never descend into a directory that is + // already an ancestor of itself. + const activePath = new Set(); + // Memoizes (logical directory, tailIndex) pairs already processed so a diamond + // directory layout or broad `**` glob over a large tree cannot trigger + // combinatorial re-traversal of the same subtree. The key is the *logical* + // path (not the real path) so distinct symlink aliases pointing at the same + // target are each still emitted; cycle-breaking uses the real path via + // `activePath` below. + const visited = new Set(); + + // Emit a one-time warning when a `**` glob traverses a pathologically large tree; expansion + // still proceeds (mirrors how the include/exclude source scan reports issues). A separate hard + // limit (`_largeGlobScanHardLimit`) actually bounds the walk by aborting past a ceiling. + let directoriesScanned = 0; + let warnedLargeScan = false; + let abortedLargeScan = false; + + // Processes the remaining tail at `dirUri` without moving to a new directory. + const visit = (dirUri: Uri, tailIndex: number) => { + if (abortedLargeScan) { + return; + } + if (tailIndex === tail.length) { + matches.set(_normalizedKey(dirUri), dirUri); + return; + } + + const component = tail[tailIndex]; + if (component === '**') { + // `**` matches zero or more path segments: try the rest of the tail at + // the current directory (consuming zero segments), and also descend into + // each subdirectory while keeping `**` at the same position. + visit(dirUri, tailIndex + 1); + for (const subDir of getFileSystemEntriesWithSymlinkedDirectories(fs, dirUri).directories) { + descend(subDir, tailIndex); + } + } else if (containsWildcard(component)) { + const segmentRegex = _segmentToRegex(component, caseSensitive); + for (const subDir of getFileSystemEntriesWithSymlinkedDirectories(fs, dirUri).directories) { + if (segmentRegex.test(subDir.fileName)) { + descend(subDir, tailIndex + 1); + } + } + } else { + const next = dirUri.combinePaths(component); + if (isDirectory(fs, next)) { + descend(next, tailIndex + 1); + } + } + }; + + // Enters a (potentially new) directory, guarding against symbolic-link cycles, + // then processes the tail at that directory. + const descend = (dirUri: Uri, tailIndex: number) => { + if (abortedLargeScan) { + return; + } + const realPath = tryRealpath(fs, dirUri); + if (!realPath) { + return; + } + if (activePath.has(realPath.key)) { + console?.info(`Skipping recursive symlink "${dirUri.toUserVisibleString()}".`); + return; + } + const memoKey = `${_normalizedKey(dirUri)}:${tailIndex}`; + if (visited.has(memoKey)) { + return; + } + visited.add(memoKey); + directoriesScanned++; + if (!warnedLargeScan && directoriesScanned > _largeGlobScanThreshold) { + warnedLargeScan = true; + console?.warn( + `Expanding the "extraPaths" glob "${entry}" has scanned more than ${_largeGlobScanThreshold} ` + + `directories, which can slow analysis. Consider narrowing the pattern (for example, avoid a bare "**").` + ); + } + if (directoriesScanned > _largeGlobScanHardLimit) { + abortedLargeScan = true; + console?.warn( + `Expanding the "extraPaths" glob "${entry}" exceeded the hard limit of ${_largeGlobScanHardLimit} ` + + `directories and was aborted to protect analysis performance. Narrow the pattern (for example, ` + + `avoid a bare "**" over a large or symlinked tree).` + ); + return; + } + activePath.add(realPath.key); + try { + visit(dirUri, tailIndex); + } finally { + activePath.delete(realPath.key); + } + }; + + descend(wildcardRoot, 0); + + // Sort using an ordinal comparison (code-unit order via the `<`/`>` operators, + // not `localeCompare`) of a stable path key so the expanded directory order is + // deterministic and identical across locales, encodings, and operating systems. + // Locale-aware collation would reorder these entries by the user's culture + // (e.g. case-insensitively), which must not influence import resolution. + return Array.from(matches.values()).sort((a, b) => { + const keyA = _sortKey(a); + const keyB = _sortKey(b); + if (keyA < keyB) { + return -1; + } + if (keyA > keyB) { + return 1; + } + // The NFC-normalized keys tie. This happens only for byte-distinct sibling + // directories whose names are NFC-equal (e.g. an NFD and an NFC spelling of + // the same name that both exist on disk). Break the tie by the raw decoded + // path so the result is a deterministic total order rather than falling back + // to (OS-dependent) directory-enumeration order. + const rawA = normalizeSlashes(a.getFilePath(), '/'); + const rawB = normalizeSlashes(b.getFilePath(), '/'); + return rawA < rawB ? -1 : rawA > rawB ? 1 : 0; + }); +} + +// Converts a single glob path segment (which may contain `*` or `?`, but not +// `**`) into an anchored regular expression that matches a directory name. The +// per-segment translation is shared with `include`/`exclude` matching (see +// `getWildcardSegmentRegexFragment`) so the two glob engines stay consistent. +function _segmentToRegex(segment: string, caseSensitive: boolean): RegExp { + const pattern = getWildcardSegmentRegexFragment(segment); + return new RegExp(`^${pattern}$`, caseSensitive ? undefined : 'i'); +} + +// Produces a case-sensitive key for a URI used for de-duplication. It is +// intentionally case-sensitive (even on case-insensitive file systems) because +// directory case affects the resolved module name. (Ordering uses `_sortKey`.) +function _normalizedKey(uri: Uri): string { + const text = uri.toString(); + if (text.length > 1 && text.endsWith('/')) { + return text.slice(0, -1); + } + return text; +} + +// Produces the ordinal sort key for an expanded glob match. Uses the *decoded* +// file path (not the percent-encoded `uri.toString()`) so the order reflects the +// actual path characters and matches the spec's "sort by normalized path" +// contract: e.g. `Z` (U+005A) sorts before `é` (U+00E9), whereas the encoded form +// `%C3%A9` (leading `%`, U+0025) would sort ahead of every ASCII letter. Slashes +// are normalized to `/` and the string is Unicode-normalized to NFC so that a +// name stored as NFD (e.g. on macOS) and the same name as NFC (e.g. on Linux) +// yield an identical key, keeping the order stable across operating systems and +// normalization forms. Case is preserved (the sort, like de-duplication, is +// case-sensitive). Only file-scheme directories reach this function. +function _sortKey(uri: Uri): string { + return normalizeSlashes(uri.getFilePath(), '/').normalize('NFC'); +} diff --git a/packages/pyright-internal/src/common/host.ts b/packages/pyright-internal/src/common/host.ts index 23f65b29a1f8..de167580987f 100644 --- a/packages/pyright-internal/src/common/host.ts +++ b/packages/pyright-internal/src/common/host.ts @@ -40,6 +40,8 @@ export interface ProcessSpawnOptions { env?: Record; // eslint-disable-next-line @typescript-eslint/no-explicit-any stdio?: any; + // Hide the spawned process's console window on Windows. + windowsHide?: boolean; } /** @@ -59,6 +61,9 @@ export interface SpawnedProcess { readonly stderr: any; // eslint-disable-next-line @typescript-eslint/no-explicit-any on(event: string, listener: (...args: any[]) => void): void; + // Optional so hosts backed by something other than a Node child process can omit it. + // Node's ChildProcess already satisfies this signature. + kill?(signal?: number | string): void; } export interface Host { diff --git a/packages/pyright-internal/src/common/languageServerInterface.ts b/packages/pyright-internal/src/common/languageServerInterface.ts index 4601950760fe..6e5983c2fbc0 100644 --- a/packages/pyright-internal/src/common/languageServerInterface.ts +++ b/packages/pyright-internal/src/common/languageServerInterface.ts @@ -30,7 +30,8 @@ export interface ServerSettings { disableTaggedHints?: boolean | undefined; disableOrganizeImports?: boolean | undefined; autoSearchPaths?: boolean | undefined; - extraPaths?: Uri[] | undefined; + useDefaultExcludes?: boolean | undefined; + extraPathFileSpecs?: string[] | undefined; watchForSourceChanges?: boolean | undefined; watchForLibraryChanges?: boolean | undefined; watchForConfigChanges?: boolean | undefined; diff --git a/packages/pyright-internal/src/common/pathConsts.ts b/packages/pyright-internal/src/common/pathConsts.ts index 870ff0caf4b5..97c6b28dffe1 100644 --- a/packages/pyright-internal/src/common/pathConsts.ts +++ b/packages/pyright-internal/src/common/pathConsts.ts @@ -19,3 +19,14 @@ export const requirementsFileName = 'requirements.txt'; export const pyprojectTomlName = 'pyproject.toml'; export const dotPythonVersionName = '.python-version'; export const configFileName = 'pyrightconfig.json'; + +// Default exclude glob patterns applied when the user has not specified any +// `exclude` entries. These skip directories that commonly hold dependencies or +// build artifacts, avoiding long scan times. +// Frozen (`as const`) so this shared cross-package constant can't be mutated by a consumer. +export const defaultExcludes = [ + '**/node_modules', // Node.js dependencies + '**/__pycache__', // Python bytecode cache + '**/.*', // hidden files/directories (dotfiles) + '**/__editable__.*', // PEP 660 strict editable-install shadow tree (a build artifact) +] as const; diff --git a/packages/pyright-internal/src/common/processUtils.ts b/packages/pyright-internal/src/common/processUtils.ts index 6799a33483b8..5bc4d1641f0e 100644 --- a/packages/pyright-internal/src/common/processUtils.ts +++ b/packages/pyright-internal/src/common/processUtils.ts @@ -21,7 +21,10 @@ export function terminateProcessTree(pid: number) { } } -export function terminateChild(child: child_process.ChildProcess) { +// Accepts both Node's ChildProcess and the host abstraction's SpawnedProcess +// (both expose `pid` and `exitCode`), so callers routing through a Host don't +// need to cast back to a concrete child-process type. +export function terminateChild(child: { readonly pid?: number; readonly exitCode: number | null }) { try { if (child.pid && child.exitCode === null) { terminateProcessTree(child.pid); diff --git a/packages/pyright-internal/src/common/stringUtils.ts b/packages/pyright-internal/src/common/stringUtils.ts index a341383a8433..151c2a47d3bb 100644 --- a/packages/pyright-internal/src/common/stringUtils.ts +++ b/packages/pyright-internal/src/common/stringUtils.ts @@ -13,21 +13,93 @@ import { compareComparableValues, Comparison } from './core'; // name. Characters must appear in order. // Return true if all typed characters are in symbol export function isPatternInSymbol(typedValue: string, symbolName: string): boolean { - const typedLower = typedValue.toLocaleLowerCase(); - const symbolLower = symbolName.toLocaleLowerCase(); - const typedLength = typedLower.length; - const symbolLength = symbolLower.length; + // This function is extremely hot: it runs against the entire symbol index + // during auto-import and completion filtering. The original implementation + // eagerly allocated two fully lower-cased copies of both strings up front + // (via toLocaleLowerCase), even when an early character mismatch would + // immediately reject the match. + // + // Fast path: scan character-by-character with charCodeAt (no allocation) and + // fold case via a precomputed Latin-1 table (built at module init from + // toLocaleLowerCase, so it preserves the original's exact locale-sensitive + // behavior) while BOTH current characters fold to a single length-preserving + // Latin-1 code unit. The overwhelming majority of Python symbol names and typed + // queries are ASCII/Latin-1 identifiers, so this avoids the two + // toLocaleLowerCase allocations entirely for the common case. Folds that would + // change a string's length fall back to the exact original algorithm below. + const typedLength = typedValue.length; + const symbolLength = symbolName.length; let typedPos = 0; let symbolPos = 0; while (typedPos < typedLength && symbolPos < symbolLength) { - if (typedLower[typedPos] === symbolLower[symbolPos]) { + const typedCode = typedValue.charCodeAt(typedPos); + const symbolCode = symbolName.charCodeAt(symbolPos); + + // Fold each current character via the precomputed table. Any code point + // outside Latin-1 (index > 0xff) is not in the table and always needs the + // fallback; a Latin-1 code point maps to NEEDS_FALLBACK when its case fold + // is not a single length-preserving Latin-1 code unit under the active + // locale (see the table comment below). + const typedFold = typedCode <= 0xff ? latin1LowerCaseTable[typedCode] : NEEDS_FALLBACK; + const symbolFold = symbolCode <= 0xff ? latin1LowerCaseTable[symbolCode] : NEEDS_FALLBACK; + + if (typedFold === NEEDS_FALLBACK || symbolFold === NEEDS_FALLBACK) { + // We hit a character whose case folding can change string length or is + // locale-sensitive in a way the per-character table cannot represent + // (e.g. non-Latin-1 code points like the ligature fi, Greek, CJK, a + // combining mark, or Turkish dotted capital İ). Fall back to the exact + // original algorithm: lower-case both FULL strings and match over the + // lower-cased strings from the start. Restarting (rather than resuming + // at typedPos/symbolPos over original indices) is required for + // correctness, because toLocaleLowerCase can produce a different number + // of code units than the original string. + const typedLower = typedValue.toLocaleLowerCase(); + const symbolLower = symbolName.toLocaleLowerCase(); + const typedLowerLength = typedLower.length; + const symbolLowerLength = symbolLower.length; + let tp = 0; + let sp = 0; + while (tp < typedLowerLength && sp < symbolLowerLength) { + if (typedLower[tp] === symbolLower[sp]) { + tp += 1; + } + sp += 1; + } + return tp === typedLowerLength; + } + + if (typedFold === symbolFold) { typedPos += 1; } symbolPos += 1; } + return typedPos === typedLength; } +// Sentinel marking a Latin-1 code point whose case fold cannot be represented as a +// single length-preserving Latin-1 code unit under the active locale, so matches +// involving it must take the full-string toLocaleLowerCase fallback. +const NEEDS_FALLBACK = -1; + +// Case-folding lookup table for the Latin-1 range (0x00-0xff). Each entry holds the +// lower-cased code point produced by String.prototype.toLocaleLowerCase for that +// code unit under the process locale at module-init time. This preserves the exact +// behavior of the original toLocaleLowerCase-based implementation — including any +// locale-sensitive ASCII casing such as the Turkish/Azeri dotless-i rule — while +// avoiding a per-call allocation. Entries whose fold is not a single code unit +// (length-changing folds) map to NEEDS_FALLBACK so those matches take the slow path. +// Building the table once assumes the process locale is stable for its lifetime, +// which holds for the language server. +const latin1LowerCaseTable: Int32Array = (() => { + const table = new Int32Array(256); + for (let i = 0; i < 256; i++) { + const lower = String.fromCharCode(i).toLocaleLowerCase(); + table[i] = lower.length === 1 ? lower.charCodeAt(0) : NEEDS_FALLBACK; + } + return table; +})(); + // This is a simple, non-cryptographic hash function for text. export function hashString(contents: string) { let hash = 0; diff --git a/packages/pyright-internal/src/common/textEditTracker.ts b/packages/pyright-internal/src/common/textEditTracker.ts index 2f0480b1ba67..6ea0b4afdfc7 100644 --- a/packages/pyright-internal/src/common/textEditTracker.ts +++ b/packages/pyright-internal/src/common/textEditTracker.ts @@ -8,7 +8,7 @@ import { CancellationToken } from 'vscode-languageserver'; -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { AnalyzerNodeInfoReader, getFileInfo } from '../analyzer/analyzerNodeInfo'; import { getAllImportNames, getContainingImportStatement, @@ -44,7 +44,7 @@ export class TextEditTracker { private readonly _pendingNodeToRemove: NodeToRemove[] = []; - constructor(private _mergeOnlyDuplications = true) { + constructor(private readonly _nodeInfo: AnalyzerNodeInfoReader, private _mergeOnlyDuplications = true) { // Empty } @@ -73,7 +73,7 @@ export class TextEditTracker { } addEditWithTextRange(parseFileResults: ParseFileResults, range: TextRange, replacementText: string) { - const filePath = getFileInfo(parseFileResults.parserOutput.parseTree).fileUri; + const filePath = getFileInfo(parseFileResults.parserOutput.parseTree, this._nodeInfo).fileUri; const existing = parseFileResults.text.substr(range.start, range.length); if (existing === replacementText) { @@ -92,7 +92,7 @@ export class TextEditTracker { ? (importToDelete.parent as ImportNode).d.list : (importToDelete.parent as ImportFromNode).d.imports; - const filePath = getFileInfo(parseFileResults.parserOutput.parseTree).fileUri; + const filePath = getFileInfo(parseFileResults.parserOutput.parseTree, this._nodeInfo).fileUri; const ranges = getTextRangeForImportNameDeletion( parseFileResults, imports, @@ -182,7 +182,7 @@ export class TextEditTracker { importGroup: ImportGroup, importNameInfo?: ImportNameInfo[] ) { - const fileUri = getFileInfo(parseFileResults.parserOutput.parseTree).fileUri; + const fileUri = getFileInfo(parseFileResults.parserOutput.parseTree, this._nodeInfo).fileUri; this.addEdits( ...getTextEditsForAutoImportInsertion( @@ -222,7 +222,7 @@ export class TextEditTracker { return false; } - const fileUri = getFileInfo(parseFileResults.parserOutput.parseTree).fileUri; + const fileUri = getFileInfo(parseFileResults.parserOutput.parseTree, this._nodeInfo).fileUri; const edits = getTextEditsForAutoImportSymbolAddition(importNameInfo, imported, parseFileResults); if (imported.node !== updateOptions.currentFromImport) { @@ -408,7 +408,10 @@ export class TextEditTracker { // external type-server snapshot must provide it, because the per-snapshot `AnalyzerFileInfo` // is not stored on the parse tree node (parse trees are shared across snapshots and cannot // be mutated). Fall back to the parse-tree-attached info for the sync/in-proc paths. - return nodeToRemove.fileUri ?? getFileInfo(nodeToRemove.parseFileResults.parserOutput.parseTree).fileUri; + return ( + nodeToRemove.fileUri ?? + getFileInfo(nodeToRemove.parseFileResults.parserOutput.parseTree, this._nodeInfo).fileUri + ); } private _removeNodesHandled(nodesRemoved: NodeToRemove[]) { diff --git a/packages/pyright-internal/src/common/textRangeCollection.ts b/packages/pyright-internal/src/common/textRangeCollection.ts index 7b0d256d1043..b4aa1be55ba8 100644 --- a/packages/pyright-internal/src/common/textRangeCollection.ts +++ b/packages/pyright-internal/src/common/textRangeCollection.ts @@ -17,6 +17,13 @@ import { TextRange } from './textRange'; export class TextRangeCollection { private _items: T[]; + // Index most recently returned by getItemContaining. Offsets converted in + // bulk (e.g. one per completion item or reference) cluster on the same or an + // adjacent line, so remembering the last hit lets consecutive lookups skip the + // binary search. It is only ever used as a hint that is re-validated on each + // call, so it never changes the returned result. + private _lastHitIndex = 0; + constructor(items: T[]) { this._items = items; } @@ -97,7 +104,34 @@ export class TextRangeCollection { return -1; } - return getIndexContaining(this._items, position); + // Fast path: check the last returned index and its forward neighbor before + // falling back to the binary search. Because the items are immutable, sorted + // and non-overlapping, an item that contains the position is unique, so any + // index returned here is exactly what getIndexContaining would return. The + // memo is re-validated with the same containment predicate on every call, so + // a stale hint can only miss (and fall through), never return a wrong result. + const lastHit = this._lastHitIndex; + if (lastHit >= 0 && lastHit < this._items.length) { + const item = this._items[lastHit]; + if (item !== undefined && TextRange.contains(item, position)) { + return lastHit; + } + + const nextIndex = lastHit + 1; + if (nextIndex < this._items.length) { + const nextItem = this._items[nextIndex]; + if (nextItem !== undefined && TextRange.contains(nextItem, position)) { + this._lastHitIndex = nextIndex; + return nextIndex; + } + } + } + + const index = getIndexContaining(this._items, position); + if (index >= 0) { + this._lastHitIndex = index; + } + return index; } } diff --git a/packages/pyright-internal/src/common/uri/uriUtils.ts b/packages/pyright-internal/src/common/uri/uriUtils.ts index a449e5129390..33ca622b6e23 100644 --- a/packages/pyright-internal/src/common/uri/uriUtils.ts +++ b/packages/pyright-internal/src/common/uri/uriUtils.ts @@ -265,12 +265,37 @@ function getFileSystemEntriesWithSymlinkedDirectoriesFromDirEntries( // Transforms a relative file spec (one that potentially contains // escape characters **, * or ?) and returns a regular expression // that can be used for matching against. +// Returns true if the given text contains a glob wildcard character (`*` or `?`). +export function containsWildcardCharacter(text: string): boolean { + return _wildcardRegex.test(text); +} + +// Translates a single glob path segment (which may contain `*` or `?`, but not +// the `**` directory wildcard) into a regex fragment that matches a single path +// segment. This is the canonical per-segment translation used by both +// `getWildcardRegexPattern` (for `include`/`exclude`) and `extraPaths` glob +// expansion so the two stay in sync. +export function getWildcardSegmentRegexFragment(segment: string): string { + const escapedSeparator = getRegexEscapedSeparator('/'); + const reservedCharacterPattern = new RegExp(`[^\\w\\s${escapedSeparator}]`, 'g'); + + return segment.replace(reservedCharacterPattern, (match) => { + if (match === '*') { + return `[^${escapedSeparator}]*`; + } else if (match === '?') { + return `[^${escapedSeparator}]`; + } else { + // escaping anything that is not reserved characters - word/space/separator + return '\\' + match; + } + }); +} + export function getWildcardRegexPattern(root: Uri, fileSpec: string): string { const absolutePath = root.resolvePaths(fileSpec); const pathComponents = Array.from(absolutePath.getPathComponents()); const escapedSeparator = getRegexEscapedSeparator('/'); const doubleAsteriskRegexFragment = `(${escapedSeparator}[^${escapedSeparator}][^${escapedSeparator}]*)*?`; - const reservedCharacterPattern = new RegExp(`[^\\w\\s${escapedSeparator}]`, 'g'); // Strip the directory separator from the root component. if (pathComponents.length > 0) { @@ -280,25 +305,15 @@ export function getWildcardRegexPattern(root: Uri, fileSpec: string): string { let regExPattern = ''; let firstComponent = true; - for (let component of pathComponents) { + for (const component of pathComponents) { if (component === '**') { regExPattern += doubleAsteriskRegexFragment; } else { if (!firstComponent) { - component = escapedSeparator + component; + regExPattern += escapedSeparator; } - regExPattern += component.replace(reservedCharacterPattern, (match) => { - if (match === '*') { - return `[^${escapedSeparator}]*`; - } else if (match === '?') { - return `[^${escapedSeparator}]`; - } else { - // escaping anything that is not reserved characters - word/space/separator - return '\\' + match; - } - }); - + regExPattern += getWildcardSegmentRegexFragment(component); firstComponent = false; } } @@ -449,6 +464,45 @@ export function convertUriToLspUriString(fs: ReadOnlyFileSystem, uri: Uri): stri return fs.getOriginalUri(uri).toString(); } +// Determines whether two parsed URIs refer to the same logical file. +// +// In virtual workspaces the same physical file can be tracked under more than one +// URI (for example two `vscode-vfs://` URIs that differ only by authority). Comparing +// the raw URI strings treats these as distinct files and produces duplicate results +// (e.g. duplicated call hierarchy entries). This helper only merges the two shapes it +// can safely reconcile: +// - Two `file://` URIs are compared by their file-system path (`getFilePath`). +// - Two virtual URIs (whose file path is empty) are compared by their scheme, URI +// path (`getPath`), query, and fragment. Only the authority is ignored, so virtual +// URIs that differ only by authority merge, while URIs that differ by scheme or by +// query/fragment (for example notebook cell URIs that carry a `#cellName` fragment) +// stay distinct. +// Any other combination (including a `file://` URI paired with a virtual URI, whose +// paths are not directly comparable) returns false, so callers should apply an exact +// string comparison first and only consult this helper when the strings differ. +export function isSameUriFile(uriA: Uri, uriB: Uri): boolean { + const filePathA = uriA.getFilePath(); + const filePathB = uriB.getFilePath(); + if (filePathA && filePathB) { + return filePathA === filePathB; + } + + if (!filePathA && !filePathB) { + const pathA = uriA.getPath(); + const pathB = uriB.getPath(); + if (pathA && pathB) { + return ( + uriA.scheme === uriB.scheme && + pathA === pathB && + uriA.query === uriB.query && + uriA.fragment === uriB.fragment + ); + } + } + + return false; +} + export namespace UriEx { export function file(path: string): Uri; export function file(path: string, isCaseSensitive: boolean, checkRelative?: boolean): Uri; diff --git a/packages/pyright-internal/src/fileSystemMapping.ts b/packages/pyright-internal/src/fileSystemMapping.ts new file mode 100644 index 000000000000..43bbc5c70154 --- /dev/null +++ b/packages/pyright-internal/src/fileSystemMapping.ts @@ -0,0 +1,248 @@ +/* + * fileSystemMapping.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + */ + +import type * as fs from 'fs'; +import { Disposable } from 'vscode-jsonrpc'; + +import { FileSystem, Stats, VirtualDirent } from './common/fileSystem'; +import { Uri } from './common/uri/uri'; +import { UriMap } from './common/uri/uriMap'; +import { tryStat } from './common/uri/uriUtils'; + +type FileSystemMappingMethodName = + | 'existsSync' + | 'readdirEntriesSync' + | 'readFileSync' + | 'statSync' + | 'realpathSync' + | 'createReadStream' + | 'readFile' + | 'readFileText' + | 'isMappedUri' + | 'getOriginalUri' + | 'getMappedUri' + | 'mapDirectory'; + +export interface FileSystemMapping extends Pick {} + +export interface FileSystemMappingState { + bind(fileSystem: FileSystem): FileSystemMapping; +} + +export function createFileSystemMapping(realFS: FileSystem): FileSystemMapping { + return createFileSystemMappingState().bind(realFS); +} + +export function createFileSystemMappingState(): FileSystemMappingState { + return new FileSystemMappingStateImpl(); +} + +interface MappedEntry { + mappedUri: Uri; + originalUri: Uri; + filter: (uri: Uri, fs: FileSystem) => boolean; +} + +interface MappingData { + readonly entryMap: UriMap; + readonly reverseEntryMap: UriMap; + originalUriCache: WeakMap; +} + +interface OriginalUriResolution { + readonly entry: MappedEntry; + readonly originalUri: Uri; +} + +const noOriginalUriResolution = Symbol(); +type CachedOriginalUriResolution = OriginalUriResolution | typeof noOriginalUriResolution; + +class FileSystemMappingStateImpl implements FileSystemMappingState { + private readonly _data: MappingData = { + entryMap: new UriMap(), + reverseEntryMap: new UriMap(), + originalUriCache: new WeakMap(), + }; + + bind(fileSystem: FileSystem): FileSystemMapping { + return new FileSystemMappingImpl(this._data, fileSystem); + } +} + +class FileSystemMappingImpl implements FileSystemMapping { + constructor(private readonly _data: MappingData, private readonly _realFS: FileSystem) {} + + existsSync(uri: Uri): boolean { + if (this._isOriginalPath(uri)) { + return false; + } + + return this._realFS.existsSync(this._getInternalOriginalUri(uri)); + } + + readdirEntriesSync(uri: Uri): fs.Dirent[] { + const entries = new Map(); + + for (const [key] of this._data.entryMap.entries()) { + if (key.isChild(uri) && key.getRelativePathComponents(uri).length === 1) { + entries.set(key.fileName, new VirtualDirent(key.fileName, false, uri.getFilePath())); + } + } + + const mappedEntry = this._getOriginalEntry(uri); + if (mappedEntry) { + const originalUri = this._getInternalOriginalUri(uri); + for (const entry of this._realFS.readdirEntriesSync(originalUri)) { + const originalEntryUri = originalUri.combinePaths(entry.name); + if (!mappedEntry.filter(originalEntryUri, this._realFS)) { + continue; + } + + const target = entry.isFile() || entry.isDirectory() ? entry : tryStat(this._realFS, originalEntryUri); + if (!target || (!target.isFile() && !target.isDirectory())) { + continue; + } + + entries.set(entry.name, new VirtualDirent(entry.name, target.isFile(), uri.getFilePath())); + } + } + + if (this._realFS.existsSync(uri)) { + const filteredEntries = this._realFS + .readdirEntriesSync(uri) + .filter((entry) => !this._isOriginalPath(uri.combinePaths(entry.name))); + for (const entry of filteredEntries) { + entries.set(entry.name, entry); + } + } + + return [...entries.values()]; + } + + readFileSync(uri: Uri, encoding?: null): Buffer; + readFileSync(uri: Uri, encoding: BufferEncoding): string; + readFileSync(uri: Uri, encoding?: BufferEncoding | null): string | Buffer { + return this._realFS.readFileSync(this._getInternalOriginalUri(uri), encoding); + } + + statSync(uri: Uri): Stats { + if (this._isOriginalPath(uri)) { + throw new Error('ENOENT: path does not exist'); + } + return this._realFS.statSync(this._getInternalOriginalUri(uri)); + } + + realpathSync(uri: Uri): Uri { + if (this._data.entryMap.has(uri)) { + return uri; + } + + return this._realFS.realpathSync(uri); + } + + createReadStream(uri: Uri): fs.ReadStream { + return this._realFS.createReadStream(this._getInternalOriginalUri(uri)); + } + + readFile(uri: Uri): Promise { + return this._realFS.readFile(this._getInternalOriginalUri(uri)); + } + + readFileText(uri: Uri, encoding?: BufferEncoding): Promise { + return this._realFS.readFileText(this._getInternalOriginalUri(uri), encoding); + } + + isMappedUri(uri: Uri): boolean { + if (this._getOriginalEntry(uri) !== undefined) { + return true; + } + return this._realFS.isMappedUri(uri); + } + + getOriginalUri(mappedUri: Uri): Uri { + return this._realFS.getOriginalUri(this._getInternalOriginalUri(mappedUri)); + } + + getMappedUri(originalUri: Uri): Uri { + const entry = this._getMappedEntry(originalUri); + if (!entry) { + return this._realFS.getMappedUri(originalUri); + } + const relative = entry.originalUri.getRelativePathComponents(originalUri); + return entry.mappedUri.combinePaths(...relative); + } + + mapDirectory(mappedUri: Uri, originalUri: Uri, filter?: (originalUri: Uri, fs: FileSystem) => boolean): Disposable { + const entry: MappedEntry = { originalUri, mappedUri, filter: filter ?? (() => true) }; + this._data.entryMap.set(mappedUri, entry); + this._data.reverseEntryMap.set(originalUri, entry); + this._data.originalUriCache = new WeakMap(); + return { + dispose: () => { + this._data.entryMap.delete(mappedUri); + this._data.reverseEntryMap.delete(originalUri); + this._data.originalUriCache = new WeakMap(); + }, + }; + } + + private _findClosestMatch(uri: Uri, map: UriMap): MappedEntry | undefined { + while (true) { + const entry = map.get(uri); + if (entry) { + return entry; + } + + const parent = uri.getDirectory(); + if (parent.equals(uri)) { + return undefined; + } + + uri = parent; + } + } + + private _getOriginalEntry(uri: Uri): MappedEntry | undefined { + return this._findClosestMatch(uri, this._data.entryMap); + } + + private _getInternalOriginalUri(uri: Uri): Uri { + let resolution: CachedOriginalUriResolution | undefined = this._data.originalUriCache.get(uri); + if (resolution === undefined) { + const entry = this._getOriginalEntry(uri); + if (!entry) { + this._data.originalUriCache.set(uri, noOriginalUriResolution); + return uri; + } + + const relative = entry.mappedUri.getRelativePathComponents(uri); + resolution = { entry, originalUri: entry.originalUri.combinePaths(...relative) }; + this._data.originalUriCache.set(uri, resolution); + } + + if (resolution === noOriginalUriResolution) { + return uri; + } + + if (resolution.entry.filter(resolution.originalUri, this._realFS)) { + return resolution.originalUri; + } + + return uri; + } + + private _getMappedEntry(uri: Uri): MappedEntry | undefined { + const reverseMatch = this._findClosestMatch(uri, this._data.reverseEntryMap); + if (reverseMatch && reverseMatch.filter(uri, this._realFS)) { + return reverseMatch; + } + return undefined; + } + + private _isOriginalPath(uri: Uri): boolean { + return this._getMappedEntry(uri) !== undefined; + } +} diff --git a/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts b/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts index cae66a9b1f3a..c921b563c5a6 100644 --- a/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts +++ b/packages/pyright-internal/src/languageService/analyzerServiceExecutor.ts @@ -153,7 +153,8 @@ export function getEffectiveCommandLineOptions( } commandLineOptions.configSettings.autoSearchPaths = serverSettings.autoSearchPaths; - commandLineOptions.configSettings.extraPaths = serverSettings.extraPaths?.map((e) => e.getFilePath()) ?? []; + commandLineOptions.configSettings.useDefaultExcludes = serverSettings.useDefaultExcludes; + commandLineOptions.configSettings.extraPaths = serverSettings.extraPathFileSpecs ?? []; commandLineOptions.configSettings.diagnosticSeverityOverrides = serverSettings.diagnosticSeverityOverrides; commandLineOptions.configSettings.diagnosticBooleanOverrides = serverSettings.diagnosticBooleanOverrides; diff --git a/packages/pyright-internal/src/languageService/autoImporter.ts b/packages/pyright-internal/src/languageService/autoImporter.ts index 8cad91b4532b..8cf02e8353a9 100644 --- a/packages/pyright-internal/src/languageService/autoImporter.ts +++ b/packages/pyright-internal/src/languageService/autoImporter.ts @@ -6,6 +6,7 @@ * Logic for performing auto-import completions. */ +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import { CancellationToken, CompletionItem, CompletionItemKind, SymbolKind } from 'vscode-languageserver'; import { DeclarationType } from '../analyzer/declaration'; @@ -14,6 +15,7 @@ import { ImportType } from '../analyzer/importResult'; import { ImportGroup, ImportNameInfo, + ImportStatement, ImportStatements, ModuleNameInfo, getImportGroup, @@ -32,6 +34,7 @@ import { ExecutionEnvironment } from '../common/configOptions'; import { TextEditAction } from '../common/editAction'; import { ProgramView, SourceFileInfo } from '../common/extensibility'; import { stripFileExtension } from '../common/pathUtils'; +import { convertPositionToOffset } from '../common/positionUtils'; import * as StringUtils from '../common/stringUtils'; import { Position } from '../common/textRange'; import { Uri } from '../common/uri/uri'; @@ -199,7 +202,8 @@ export class AutoImporter { ) { this._importStatements = getTopLevelImports( this.parseResults.parserOutput.parseTree, - /* includeImplicitImports */ true + /* includeImplicitImports */ true, + getInfoReader(this.program) ); } @@ -650,6 +654,27 @@ export class AutoImporter { return this.importResolver.getModuleNameForImport(uri, this.execEnvironment); } + // Returns true when the given import statement appears before the invocation (usage) + // position. Merging a new symbol into an import statement that comes *after* the usage + // would leave the symbol unbound, so callers should only merge when this returns true. + // + // Known limitation: this is a purely lexical (offset) comparison with no execution-scope + // awareness. When the usage sits inside a deferred-execution scope (e.g. a function or + // lambda body) above a module-level same-module import, merging into that below import is + // actually safe at runtime because the function runs after the module finishes importing. + // In that case this returns false and we conservatively insert a separate import at the top + // instead of consolidating. We accept that as a rare, correctness-neutral trade-off, since + // detecting deferred-execution scopes reliably (function/lambda bodies vs class bodies, + // default-arg/decorator positions, comprehensions, etc.) is error-prone and not worth the + // risk relative to the unbound-symbol bug this guard prevents. + private _isImportBeforeInvocation(importStatement: ImportStatement): boolean { + const invocationOffset = convertPositionToOffset( + this._invocationPosition, + this.parseResults.tokenizerOutput.lines + ); + return invocationOffset === undefined || invocationOffset > importStatement.node.start; + } + private _getTextEditsForAutoImportByFilePath( importNameInfo: ImportNameInfo, moduleNameInfo: ModuleNameInfo, @@ -701,9 +726,15 @@ export class AutoImporter { } // If not, add what we want at the existing 'import from' statement as long as - // what is imported is not module itself. + // what is imported is not module itself, and the existing statement appears + // before the usage. Merging into a statement that is located *after* the usage + // would leave the symbol unbound, so in that case we fall through to inserting + // a new import statement in the correct location. // ex) don't add "path" to existing "from os.path import dirname" statement. - if (moduleNameInfo.name === importStatement.moduleName) { + if ( + moduleNameInfo.name === importStatement.moduleName && + this._isImportBeforeInvocation(importStatement) + ) { return { insertionText: importNameInfo.alias ?? insertionText, edits: this.options.lazyEdit @@ -732,8 +763,12 @@ export class AutoImporter { edits: [], }; } - } else { - // If not, add what we want at the existing import from statement. + } else if (this._isImportBeforeInvocation(imported)) { + // If not, add what we want at the existing import from statement, as long as + // that statement appears before the usage. Merging into a statement located + // *after* the usage would leave the symbol unbound, so in that case we skip + // this merge and continue below to the implicit-imports check, only inserting + // a new import statement if no implicit import matches. return { insertionText: importNameInfo.alias ?? insertionText, edits: this.options.lazyEdit diff --git a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts index 75ec9aeb08a4..abdfaf231bdf 100644 --- a/packages/pyright-internal/src/languageService/callHierarchyProvider.ts +++ b/packages/pyright-internal/src/languageService/callHierarchyProvider.ts @@ -8,6 +8,7 @@ * a position. */ +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import { CancellationToken, SymbolKind } from 'vscode-languageserver'; import { CallHierarchyIncomingCall, @@ -28,19 +29,47 @@ import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { isDefined } from '../common/core'; import { ProgramView, ReferenceUseCase, SymbolUsageProvider } from '../common/extensibility'; -import { ReadOnlyFileSystem } from '../common/fileSystem'; import { getSymbolKind } from '../common/lspUtils'; import { convertOffsetsToRange } from '../common/positionUtils'; import { ServiceKeys } from '../common/serviceKeys'; import { Position, rangesAreEqual } from '../common/textRange'; import { Uri } from '../common/uri/uri'; -import { convertUriToLspUriString } from '../common/uri/uriUtils'; +import { convertUriToLspUriString, isSameUriFile } from '../common/uri/uriUtils'; import { ReferencesProvider, ReferencesResult } from '../languageService/referencesProvider'; +import { Localizer } from '../localization/localize'; import { CallNode, MemberAccessNode, NameNode, ParseNode, ParseNodeType } from '../parser/parseNodes'; import { ParseFileResults } from '../parser/parser'; import { DocumentSymbolCollector } from './documentSymbolCollector'; import { canNavigateToFile } from './navigationUtils'; +export const callHierarchyDetails = { + get library() { + return Localizer.CallHierarchy.library(); + }, + get standardLibrary() { + return Localizer.CallHierarchy.standardLibrary(); + }, + get workspace() { + return Localizer.CallHierarchy.workspace(); + }, +}; + +export function getCallHierarchyDetail( + isThirdPartyImport: boolean, + isTypeshedFile: boolean, + isOwned: boolean +): string | undefined { + if (isThirdPartyImport) { + return callHierarchyDetails.library; + } + + if (isTypeshedFile) { + return callHierarchyDetails.standardLibrary; + } + + return isOwned ? callHierarchyDetails.workspace : undefined; +} + export class CallHierarchyProvider { private readonly _parseResults: ParseFileResults | undefined; @@ -88,6 +117,7 @@ export class CallHierarchyProvider { const callItem: CallHierarchyItem = { name: symbolName, kind: getSymbolKind(targetDecl, this._evaluator, symbolName) ?? SymbolKind.Module, + detail: getCallHierarchySymbolDetail(this._program, targetDecl), uri: convertUriToLspUriString(this._program.fileSystem, callItemUri), range: targetDecl.range, selectionRange: targetDecl.range, @@ -198,7 +228,7 @@ export class CallHierarchyProvider { } const callFinder = new FindOutgoingCallTreeWalker( - this._program.fileSystem, + this._program, parseRoot, this._parseResults, this._evaluator, @@ -289,7 +319,7 @@ class FindOutgoingCallTreeWalker extends ParseTreeWalker { private _outgoingCalls: CallHierarchyOutgoingCall[] = []; constructor( - private _fs: ReadOnlyFileSystem, + private readonly _program: ProgramView, private _parseRoot: ParseNode, private _parseResults: ParseFileResults, private _evaluator: TypeEvaluator, @@ -384,16 +414,31 @@ class FindOutgoingCallTreeWalker extends ParseTreeWalker { const callDest: CallHierarchyItem = { name: nameNode.d.value, kind: getSymbolKind(resolvedDecl, this._evaluator, nameNode.d.value) ?? SymbolKind.Module, - uri: convertUriToLspUriString(this._fs, resolvedDecl.uri), + detail: combineCallHierarchyDetail( + getCallHierarchySymbolDetail(this._program, resolvedDecl), + getCallHierarchyDetailForUri(this._program, resolvedDecl.uri) + ), + uri: convertUriToLspUriString(this._program.fileSystem, resolvedDecl.uri), range: resolvedDecl.range, selectionRange: resolvedDecl.range, }; // Is there already a call recorded for this destination? If so, // we'll simply add a new range. Otherwise, we'll create a new entry. - let outgoingCall: CallHierarchyOutgoingCall | undefined = this._outgoingCalls.find( - (outgoing) => outgoing.to.uri === callDest.uri && rangesAreEqual(outgoing.to.range, callDest.range) - ); + // Fast-path on an exact URI-string match and only parse to compare logically + // equivalent URIs (e.g. the same virtual file under differing authorities) + // when the strings differ. The incoming URI is parsed at most once per lookup. + let parsedCallDestUri: Uri | undefined; + let outgoingCall: CallHierarchyOutgoingCall | undefined = this._outgoingCalls.find((outgoing) => { + if (!rangesAreEqual(outgoing.to.range, callDest.range)) { + return false; + } + if (outgoing.to.uri === callDest.uri) { + return true; + } + parsedCallDestUri ??= Uri.parse(callDest.uri, this._program.serviceProvider); + return isSameUriFile(parsedCallDestUri, Uri.parse(outgoing.to.uri, this._program.serviceProvider)); + }); if (!outgoingCall) { outgoingCall = { @@ -418,6 +463,47 @@ class FindOutgoingCallTreeWalker extends ParseTreeWalker { } } +function getCallHierarchyDetailForUri(program: ProgramView, uri: Uri): string | undefined { + const fileInfo = program.getSourceFileInfo(uri); + if (!fileInfo) { + return undefined; + } + + return getCallHierarchyDetail(fileInfo.isThirdPartyImport, fileInfo.isTypeshedFile, program.owns(uri)); +} + +// Builds the class/file portion of a call-hierarchy `detail` label, matching the +// format used by the type-hierarchy provider (`class Foo (bar.py)` for methods, +// `(bar.py)` for module-level functions and classes). +function getCallHierarchySymbolDetail(program: ProgramView, declaration: Declaration): string | undefined { + const fileName = program.fileSystem.getOriginalUri(declaration.uri).fileName; + + switch (declaration.type) { + case DeclarationType.Class: + return `(${fileName})`; + + case DeclarationType.Function: { + const classNode = ParseTreeUtils.getEnclosingClass(declaration.node, /* stopAtFunction */ true); + return classNode ? `class ${classNode.d.name.d.value} (${fileName})` : `(${fileName})`; + } + } + + return undefined; +} + +// Merges the class/file label with the origin label (`Workspace` / `Library` / +// `Standard library`) into a single `detail` string, e.g. `class Foo (bar.py) · Workspace`. +export function combineCallHierarchyDetail( + symbolDetail: string | undefined, + originDetail: string | undefined +): string | undefined { + if (symbolDetail && originDetail) { + return `${symbolDetail} · ${originDetail}`; + } + + return symbolDetail ?? originDetail; +} + class FindIncomingCallTreeWalker extends ParseTreeWalker { private readonly _incomingCalls: CallHierarchyIncomingCall[] = []; private readonly _declarations: Declaration[] = []; @@ -437,7 +523,12 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { this._parseResults = this._program.getParseResults(this._fileUri)!; this._usageProviders = (this._program.serviceProvider.tryGet(ServiceKeys.symbolUsageProviderFactory) ?? []) .map((f) => - f.tryCreateProvider(ReferenceUseCase.References, [this._targetDeclaration], this._cancellationToken) + f.tryCreateProvider( + ReferenceUseCase.References, + [this._targetDeclaration], + getInfoReader(this._evaluator), + this._cancellationToken + ) ) .filter(isDefined); @@ -552,9 +643,10 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { } private _addIncomingCallForDeclaration(nameNode: NameNode) { - let executionNode = ParseTreeUtils.getExecutionScopeNode(nameNode); + const nodeInfo = getInfoReader(this._evaluator); + let executionNode = ParseTreeUtils.getExecutionScopeNode(nameNode, nodeInfo); while (executionNode && executionNode.nodeType === ParseNodeType.TypeParameterList) { - executionNode = ParseTreeUtils.getExecutionScopeNode(executionNode); + executionNode = ParseTreeUtils.getExecutionScopeNode(executionNode, nodeInfo); } if (!executionNode) { @@ -562,9 +654,9 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { } let callSource: CallHierarchyItem; + const fileName = this._program.fileSystem.getOriginalUri(this._fileUri).fileName; if (executionNode.nodeType === ParseNodeType.Module) { const moduleRange = convertOffsetsToRange(0, 0, this._parseResults.tokenizerOutput.lines); - const fileName = this._program.fileSystem.getOriginalUri(this._fileUri).fileName; callSource = { name: `(module) ${fileName}`, @@ -583,6 +675,7 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { callSource = { name: '(lambda)', kind: SymbolKind.Function, + detail: `(${fileName})`, uri: convertUriToLspUriString(this._program.fileSystem, this._fileUri), range: lambdaRange, selectionRange: lambdaRange, @@ -593,10 +686,12 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { executionNode.d.name.start + executionNode.d.name.length, this._parseResults.tokenizerOutput.lines ); + const classNode = ParseTreeUtils.getEnclosingClass(executionNode, /* stopAtFunction */ true); callSource = { name: executionNode.d.name.d.value, kind: SymbolKind.Function, + detail: classNode ? `class ${classNode.d.name.d.value} (${fileName})` : `(${fileName})`, uri: convertUriToLspUriString(this._program.fileSystem, this._fileUri), range: functionRange, selectionRange: functionRange, @@ -605,9 +700,20 @@ class FindIncomingCallTreeWalker extends ParseTreeWalker { // Is there already a call recorded for this caller? If so, // we'll simply add a new range. Otherwise, we'll create a new entry. - let incomingCall: CallHierarchyIncomingCall | undefined = this._incomingCalls.find( - (incoming) => incoming.from.uri === callSource.uri && rangesAreEqual(incoming.from.range, callSource.range) - ); + // Fast-path on an exact URI-string match and only parse to compare logically + // equivalent URIs (e.g. the same virtual file under differing authorities) + // when the strings differ. The incoming URI is parsed at most once per lookup. + let parsedCallSourceUri: Uri | undefined; + let incomingCall: CallHierarchyIncomingCall | undefined = this._incomingCalls.find((incoming) => { + if (!rangesAreEqual(incoming.from.range, callSource.range)) { + return false; + } + if (incoming.from.uri === callSource.uri) { + return true; + } + parsedCallSourceUri ??= Uri.parse(callSource.uri, this._program.serviceProvider); + return isSameUriFile(parsedCallSourceUri, Uri.parse(incoming.from.uri, this._program.serviceProvider)); + }); if (!incomingCall) { incomingCall = { diff --git a/packages/pyright-internal/src/languageService/completionProvider.ts b/packages/pyright-internal/src/languageService/completionProvider.ts index 367c510dfb2a..79116477bed8 100644 --- a/packages/pyright-internal/src/languageService/completionProvider.ts +++ b/packages/pyright-internal/src/languageService/completionProvider.ts @@ -21,6 +21,7 @@ import { import { ApplyKind } from 'vscode-languageserver-types'; import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import { Declaration, DeclarationType, @@ -44,7 +45,7 @@ import { getLastTypedDeclarationForSymbol, isVisibleExternally } from '../analyz import { getTypedDictMembersForClass } from '../analyzer/typedDicts'; import { getModuleDocStringFromUris, isBuiltInModule } from '../analyzer/typeDocStringUtils'; import { CallSignatureInfo, ExpectedTypeResult, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { printLiteralValue } from '../analyzer/typePrinter'; +import { isLiteralValueTruncated, printLiteralValue } from '../analyzer/typePrinter'; import { ClassType, combineTypes, @@ -238,7 +239,7 @@ namespace Keywords { } } -enum SortCategory { +export enum SortCategory { // The order of the following is important. We use // this to order the completion suggestions. @@ -254,6 +255,9 @@ enum SortCategory { // A literal string. LiteralValue, + // A class that is one of the subject's union members in a `match`/`case` pattern. + MatchClassPattern, + // A named parameter in a call expression. NamedParameter, @@ -376,6 +380,7 @@ export class CompletionProvider { protected readonly execEnv: ExecutionEnvironment; protected readonly parseResults: ParseFileResults; protected readonly sourceMapper: SourceMapper; + protected readonly nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader; // If we're being asked to resolve a completion item, we run the // original completion algorithm and look for this symbol. @@ -392,6 +397,7 @@ export class CompletionProvider { this.parseResults = this.program.getParseResults(this.fileUri)!; this.sourceMapper = this.program.getSourceMapper(this.fileUri, this.cancellationToken, /* mapCompiled */ true); + this.nodeInfo = getInfoReader(this.program); } getCompletions(): CompletionList | null { @@ -1099,7 +1105,7 @@ export class CompletionProvider { completionItem.detail = detail.itemDetail; } else if (detail?.autoImportText) { // Force auto-import entries to the end. - completionItem.sortText = this._makeSortText( + completionItem.sortText = this.makeSortText( SortCategory.AutoImport, `${name}.${this._formatInteger(detail.autoImportText.source.length, 2)}.${ detail.autoImportText.source @@ -1114,22 +1120,22 @@ export class CompletionProvider { } } else if (itemKind === CompletionItemKind.EnumMember) { // Handle enum members separately so they are sorted above other symbols. - completionItem.sortText = this._makeSortText(SortCategory.EnumMember, name); + completionItem.sortText = this.makeSortText(SortCategory.EnumMember, name); } else if (SymbolNameUtils.isDunderName(name)) { // Force dunder-named symbols to appear after all other symbols. - completionItem.sortText = this._makeSortText(SortCategory.DunderSymbol, name); + completionItem.sortText = this.makeSortText(SortCategory.DunderSymbol, name); } else if (filter === '' && SymbolNameUtils.isPrivateOrProtectedName(name)) { // Distinguish between normal and private symbols only if there is // currently no filter text. Once we get a single character to filter // upon, we'll no longer differentiate. - completionItem.sortText = this._makeSortText( + completionItem.sortText = this.makeSortText( detail?.declaredOnBoundObjectOrClass ? SortCategory.DeclaredPrivateSymbol : SortCategory.PrivateSymbol, name ); } else if (filter === '' && detail?.declaredOnBoundObjectOrClass) { - completionItem.sortText = this._makeSortText(SortCategory.DeclaredSymbol, name); + completionItem.sortText = this.makeSortText(SortCategory.DeclaredSymbol, name); } else { - completionItem.sortText = this._makeSortText(SortCategory.NormalSymbol, name); + completionItem.sortText = this.makeSortText(SortCategory.NormalSymbol, name); } completionItemData.symbolLabel = name; @@ -1240,6 +1246,20 @@ export class CompletionProvider { }; } + // Extension hook for `match`/`case` pattern-slot completions. The base implementation does + // nothing (it returns undefined so the normal expression path continues); a subclass + // (Pylance) overrides this to provide slot-aware pattern completions. When it returns a + // completion map (possibly empty, to deliberately suppress suggestions) the caller short- + // circuits and uses it; when it returns undefined the cursor is not in a pattern slot. + protected tryGetMatchCasePatternCompletions( + _node: ParseNode, + _priorWord: string, + _priorText: string, + _postText: string + ): CompletionMap | undefined { + return undefined; + } + private get _fileContents() { return this.parseResults?.text ?? ''; } @@ -1269,7 +1289,7 @@ export class CompletionProvider { return originalType; } - const node = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, offset); + const node = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, offset, this.nodeInfo); const memberAccessNode = node ? ParseTreeUtils.getParentNodeOfType(node, ParseNodeType.MemberAccess) : undefined; @@ -1295,7 +1315,7 @@ export class CompletionProvider { return undefined; } - let node = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, offset); + let node = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, offset, this.nodeInfo); // See if we're inside a string literal or an f-string statement. const token = ParseTreeUtils.getTokenOverlapping(this.parseResults.tokenizerOutput.tokens, offset); @@ -1338,7 +1358,11 @@ export class CompletionProvider { sawComma = true; } - const curNode = ParseTreeUtils.findNodeByOffset(this.parseResults.parserOutput.parseTree, curOffset); + const curNode = ParseTreeUtils.findNodeByOffset( + this.parseResults.parserOutput.parseTree, + curOffset, + this.nodeInfo + ); if (curNode && curNode !== initialNode) { if ( (curNode.nodeType === ParseNodeType.StringList || @@ -1797,7 +1821,8 @@ export class CompletionProvider { const previousOffset = TextRange.getEnd(prevToken); const previousNode = ParseTreeUtils.findNodeByOffset( this.parseResults.parserOutput.parseTree, - previousOffset + previousOffset, + this.nodeInfo ); if ( previousNode?.nodeType !== ParseNodeType.Error || @@ -1886,7 +1911,7 @@ export class CompletionProvider { private _createSingleKeywordCompletion(keyword: string): CompletionMap { const completionItem = CompletionItem.create(keyword); completionItem.kind = CompletionItemKind.Keyword; - completionItem.sortText = this._makeSortText(SortCategory.LikelyKeyword, keyword); + completionItem.sortText = this.makeSortText(SortCategory.LikelyKeyword, keyword); const completionMap = new CompletionMap(); completionMap.set(completionItem); return completionMap; @@ -1938,7 +1963,7 @@ export class CompletionProvider { }); this.addNameToCompletions(text, CompletionItemKind.Reference, priorWord, completionMap, { - sortText: this._makeSortText(SortCategory.LikelyKeyword, text), + sortText: this.makeSortText(SortCategory.LikelyKeyword, text), }); return; } @@ -1989,7 +2014,7 @@ export class CompletionProvider { )}`; this.addNameToCompletions(text, CompletionItemKind.Reference, priorWord, completionMap, { - sortText: this._makeSortText(SortCategory.LikelyKeyword, text), + sortText: this.makeSortText(SortCategory.LikelyKeyword, text), }); } @@ -2041,7 +2066,7 @@ export class CompletionProvider { } private _getMethodOverloadsCompletions(priorWord: string, partialName: NameNode): CompletionMap | undefined { - const symbolTable = getSymbolTable(this.evaluator, partialName); + const symbolTable = getSymbolTable(this.evaluator, partialName, this.nodeInfo); if (!symbolTable) { return undefined; } @@ -2078,7 +2103,11 @@ export class CompletionProvider { return completionMap; - function getSymbolTable(evaluator: TypeEvaluator, partialName: NameNode) { + function getSymbolTable( + evaluator: TypeEvaluator, + partialName: NameNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader + ) { const enclosingClass = ParseTreeUtils.getEnclosingClass(partialName, false); if (enclosingClass) { const classResults = evaluator.getTypeOfClass(enclosingClass); @@ -2099,7 +2128,7 @@ export class CompletionProvider { // For function overload, we only care about top level functions const moduleNode = ParseTreeUtils.getEnclosingModule(partialName); if (moduleNode) { - const moduleScope = AnalyzerNodeInfo.getScope(moduleNode); + const moduleScope = AnalyzerNodeInfo.getScope(moduleNode, nodeInfo); return moduleScope?.symbolTable; } @@ -2232,6 +2261,13 @@ export class CompletionProvider { // nested `IfNode`). return parent.d.testExpr === node; + case ParseNodeType.Case: + // The guard of `case if :`. The guard is a real + // expression (not a pattern), but a statement-only keyword is never + // valid there. The pattern slot itself is handled separately via + // `tryGetMatchCasePatternCompletions`. + return parent.d.guardExpr === node; + default: return false; } @@ -2245,6 +2281,21 @@ export class CompletionProvider { ): CompletionMap | undefined { const isIndexArgument = this._isIndexArgument(parseNode); + // A `match`/`case` pattern slot is not an arbitrary expression: only a restricted + // grammar is valid there. When the cursor sits in such a slot, build a tailored + // completion set (filtered/narrowed to what can form a pattern) and short-circuit + // the generic symbol/keyword dump below. This runs before the numeric-literal and + // `with ... as` guards so that pattern slots whose node-resolution lands on a numeric + // element (e.g. `case (1, ‸)`, where the cursor resolves to the `1` literal) still get + // slot-aware completions. The base implementation returns undefined; Pylance overrides + // `tryGetMatchCasePatternCompletions` to provide the slot-aware set (and intentionally + // returns undefined when the cursor is inside the numeric literal being typed, e.g. + // `case 3.‸`, so the numeric guard below still suppresses completions there). + const matchCaseCompletions = this.tryGetMatchCasePatternCompletions(parseNode, priorWord, priorText, postText); + if (matchCaseCompletions) { + return matchCaseCompletions; + } + // If the user typed a "." as part of a number, don't present // any completion options. if (!isIndexArgument && parseNode.nodeType === ParseNodeType.Number) { @@ -2278,12 +2329,12 @@ export class CompletionProvider { priorWord, priorText, postText, - /* atArgument */ false, + /* atArgument */ this._isInsideContainerArgument(parseNode), completionMap ); // Add symbols that are in scope. - this._addSymbols(parseNode, priorWord, completionMap); + this.addSymbols(parseNode, priorWord, completionMap); this.addAdditionalExpressionCompletions(parseNode, priorWord, completionMap); @@ -2293,13 +2344,13 @@ export class CompletionProvider { const keywords = this._isExpressionOnlySlot(parseNode) ? Keywords.expressionKeywordsForVersion(this.execEnv.pythonVersion) : Keywords.forVersion(this.execEnv.pythonVersion); - this._findMatchingKeywords(keywords, priorWord).map((keyword) => { + this.findMatchingKeywords(keywords, priorWord).map((keyword) => { if (completionMap.has(keyword)) { return; } const completionItem = CompletionItem.create(keyword); completionItem.kind = CompletionItemKind.Keyword; - completionItem.sortText = this._makeSortText(SortCategory.Keyword, keyword); + completionItem.sortText = this.makeSortText(SortCategory.Keyword, keyword); completionMap.set(completionItem); }); @@ -2335,6 +2386,38 @@ export class CompletionProvider { ); } + private _isInsideContainerArgument(node: ParseNode): boolean { + // Walk up from the cursor node. If we reach a collection literal + // (list/dict/set/tuple) before reaching the enclosing call's argument, + // the cursor is inside a collection value rather than at an argument slot, + // so keyword-argument (named parameter) completions should be suppressed. + // + // A parenthesized single expression (e.g. `f(x=(value))`) is intentionally NOT a + // container: it parses as the inner expression, not a Tuple node, so the walk stops + // at the Argument/Call. Only an actual tuple literal (which has a comma) counts here. + // + // This is only consulted when the cursor is inside a call; the caller early-returns + // when there is no enclosing call, so a `true` result outside call context is a no-op. + let current: ParseNode | undefined = node; + while (current) { + switch (current.nodeType) { + case ParseNodeType.List: + case ParseNodeType.Dictionary: + case ParseNodeType.Set: + case ParseNodeType.Tuple: + return true; + + case ParseNodeType.Argument: + case ParseNodeType.Call: + return false; + } + + current = current.parent; + } + + return false; + } + private _addCallArgumentCompletions( parseNode: ParseNode, priorWord: string, @@ -2394,12 +2477,14 @@ export class CompletionProvider { } const paramType = FunctionType.getParamType(type, paramIndex); - this._addLiteralValuesForTargetType(paramType, priorWord, priorText, postText, completionMap); + this.addLiteralValuesForTargetType(paramType, priorWord, priorText, postText, completionMap); return undefined; }); } - private _addLiteralValuesForTargetType( + // Kept in place (rather than relocated above the private accessors) to minimize the subrepo diff. + // eslint-disable-next-line @typescript-eslint/member-ordering + protected addLiteralValuesForTargetType( type: Type, priorWord: string, priorText: string, @@ -2407,21 +2492,66 @@ export class CompletionProvider { completionMap: CompletionMap ) { const quoteValue = this._getQuoteInfo(priorWord, priorText); + + // When the cursor is inside a string/bytes token, only offer the + // matching literal kind so a `b"..."` context doesn't surface str + // literals (and vice versa) for a mixed `Literal[b"x", "y"]`. + const insideStringToken = this._stringLiteralContainer !== undefined; + const insideBytesToken = + insideStringToken && (this._stringLiteralContainer!.flags & StringTokenFlags.Bytes) !== 0; + + // The bytes re-wrap below hard-codes a single-char `b` prefix. A raw-bytes + // token (`rb"..."`/`br"..."`, prefixLength > 1) is outside the documented + // `b`-only scope; its multi-char prefix would make the replacement range + // off by one and leave a dangling prefix char, so don't offer bytes + // completions inside it. + const insideMultiCharPrefixToken = insideStringToken && this._stringLiteralContainer!.prefixLength > 1; + this._getSubTypesWithLiteralValues(type).forEach((v) => { - if (ClassType.isBuiltIn(v, 'str')) { - const value = printLiteralValue(v, quoteValue.quoteCharacter); - if (quoteValue.stringValue === undefined) { - this.addNameToCompletions(value, CompletionItemKind.Constant, priorWord, completionMap, { - sortText: this._makeSortText(SortCategory.LiteralValue, v.priv.literalValue as string), - }); - } else { - this._addStringLiteralToCompletions( - value.substr(1, value.length - 2), - quoteValue, - postText, - completionMap - ); + const isStr = ClassType.isBuiltIn(v, 'str'); + const isBytes = ClassType.isBuiltIn(v, 'bytes'); + if (!isStr && !isBytes) { + return; + } + + if (insideStringToken) { + if (isBytes && !insideBytesToken) { + return; + } + if (isStr && insideBytesToken) { + return; } + if (isBytes && insideMultiCharPrefixToken) { + return; + } + } + + // `printLiteralValue` truncates long literals to a `…`-suffixed form. + // That is fine for a label, but the same text is used for the inserted + // source here, and inserting `…` would produce invalid, wrong code. + // Skip offering the completion rather than writing a broken value. + if (isLiteralValueTruncated(v)) { + return; + } + + // Bytes literals are printed as `b"..."`; the `b` prefix must be + // stripped before re-wrapping and accounted for in the range. + const prefix = isBytes ? 'b' : ''; + const value = printLiteralValue(v, quoteValue.quoteCharacter); + if (quoteValue.stringValue === undefined) { + this.addNameToCompletions(value, CompletionItemKind.Constant, priorWord, completionMap, { + sortText: this.makeSortText(SortCategory.LiteralValue, v.priv.literalValue as string), + }); + } else { + this._addStringLiteralToCompletions( + value.substr(prefix.length + 1, value.length - prefix.length - 2), + quoteValue, + postText, + completionMap, + /* detail */ undefined, + prefix, + isBytes ? '"' : quoteValue.quoteCharacter + ); } }); } @@ -2520,6 +2650,15 @@ export class CompletionProvider { return; } + // printLiteralValue truncates long str/bytes literals to a `…`-suffixed + // form. Since bare-bracket keys are inserted verbatim (str/bytes keys now + // route through _addStringLiteralToCompletions with a textEdit), offering + // a truncated key would write invalid, wrong source. Skip it (mirrors the + // annotation-path guard in addLiteralValuesForTargetType). + if (isLiteralValueTruncated(v)) { + return; + } + keys.push(printLiteralValue(v, this.parseResults.tokenizerOutput.predominantSingleQuoteCharacter)); }); @@ -2549,12 +2688,12 @@ export class CompletionProvider { let startingNode: ParseNode = indexNode.d.leftExpr; if (declaration.node) { - const scopeRoot = ParseTreeUtils.getEvaluationScopeNode(declaration.node).node; + const scopeRoot = ParseTreeUtils.getEvaluationScopeNode(declaration.node, this.nodeInfo).node; // Find the lowest tree to search the symbol. if ( - ParseTreeUtils.getFileInfoFromNode(startingNode)?.fileUri.equals( - ParseTreeUtils.getFileInfoFromNode(scopeRoot)?.fileUri + ParseTreeUtils.getFileInfoFromNode(startingNode, this.nodeInfo)?.fileUri.equals( + ParseTreeUtils.getFileInfoFromNode(scopeRoot, this.nodeInfo)?.fileUri ) ) { startingNode = scopeRoot; @@ -2674,7 +2813,11 @@ export class CompletionProvider { postText: string ): CompletionMap | undefined { if (this.options.triggerCharacter === '"' || this.options.triggerCharacter === "'") { - if (parseNode.start !== offset - 1) { + // A prefixed string (e.g. b"" or r"") starts at the prefix, so the opening quote is + // offset by the prefix length. Account for that so typing the opening quote of a + // b"..." still triggers literal completions (matching plain str behavior). + const prefixLength = parseNode.nodeType === ParseNodeType.String ? parseNode.d.token.prefixLength : 0; + if (parseNode.start + prefixLength !== offset - 1) { // If completion is triggered by typing " or ', it must be the one that starts a string // literal. In another word, it can't be something inside of another string or comment return undefined; @@ -2722,6 +2865,23 @@ export class CompletionProvider { const quoteInfo = this._getQuoteInfo(priorWord, priorTextInString); const keys = this._getIndexKeys(argument.parent, parseNode); + // When the cursor is inside a string/bytes token, only offer the matching + // literal kind so a `b"..."` context doesn't surface str keys (and vice versa). + const insideBytesToken = + parseNode.nodeType === ParseNodeType.String && + this._stringLiteralContainer !== undefined && + (this._stringLiteralContainer.flags & StringTokenFlags.Bytes) !== 0; + + // The bytes re-wrap below hard-codes a single-char `b` prefix. A raw-bytes + // token (`rb"..."`/`br"..."`, prefixLength > 1) is outside the documented + // `b`-only scope; its multi-char prefix would make the replacement range + // off by one and leave a dangling prefix char, so don't offer bytes keys + // inside it. Mirrors the annotation-path guard. + const insideMultiCharPrefixToken = + parseNode.nodeType === ParseNodeType.String && + this._stringLiteralContainer !== undefined && + this._stringLiteralContainer.prefixLength > 1; + let keyFound = false; for (const key of keys) { if (completionMap.has(key)) { @@ -2732,25 +2892,47 @@ export class CompletionProvider { continue; } - const stringLiteral = /^["|'].*["|']$/.test(key); + // Index keys are printed via printLiteralValue (str as `"..."`, bytes as + // `b"..."`) or collected as raw source text. Recognize an optional bytes + // prefix; f/r/u prefixes never denote a distinct completable value here + // (f-strings can't be keys/Literals, and raw/unicode normalize to str). + const isBytesLiteral = /^[bB]["'].*["']$/.test(key); + const stringLiteral = isBytesLiteral || /^["'].*["']$/.test(key); if (parseNode.nodeType === ParseNodeType.String && !stringLiteral) { continue; } + if (parseNode.nodeType === ParseNodeType.String) { + if (isBytesLiteral && !insideBytesToken) { + continue; + } + if (!isBytesLiteral && insideBytesToken) { + continue; + } + if (isBytesLiteral && insideMultiCharPrefixToken) { + continue; + } + } + keyFound = true; if (stringLiteral) { - const keyWithoutQuote = key.substr(1, key.length - 2); + // Bytes keys carry a `b`/`B` prefix; strip it (and the quotes) and + // re-wrap using the key's own quote so raw/embedded quotes stay valid. + const prefix = isBytesLiteral ? key[0] : ''; + const keyWithoutQuote = key.substr(prefix.length + 1, key.length - prefix.length - 2); this._addStringLiteralToCompletions( keyWithoutQuote, quoteInfo, postText, completionMap, - indexValueDetail + indexValueDetail, + prefix, + isBytesLiteral ? key[prefix.length] : undefined ); } else { this.addNameToCompletions(key, CompletionItemKind.Constant, priorWord, completionMap, { - sortText: this._makeSortText(SortCategory.LiteralValue, key), + sortText: this.makeSortText(SortCategory.LiteralValue, key), itemDetail: indexValueDetail, }); } @@ -2837,13 +3019,13 @@ export class CompletionProvider { const type = this.evaluator.getType(comparison.d.leftExpr); if (type) { if (containsLiteralType(type)) { - this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); + this.addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; } const enumValueLiteralType = getStringLiteralValueTypeFromEnumType(this.evaluator, type); if (enumValueLiteralType) { - this._addLiteralValuesForTargetType( + this.addLiteralValuesForTargetType( enumValueLiteralType, priorWord, priorText, @@ -2863,7 +3045,7 @@ export class CompletionProvider { ) { const type = this.evaluator.getType(assignmentExpression.d.name); if (type && containsLiteralType(type)) { - this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); + this.addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; } } @@ -2894,7 +3076,12 @@ export class CompletionProvider { getMembersForClass(enumClassType, enumMemberSymbols, /* includeInstanceVars */ false); enumMemberSymbols.forEach((_, name) => { - const enumMemberType = transformTypeForEnumMember(evaluator, enumClassType, name); + const enumMemberType = transformTypeForEnumMember( + evaluator, + enumClassType, + name, + getInfoReader(evaluator) + ); if (!enumMemberType || !isClassInstance(enumMemberType)) { return; } @@ -2943,11 +3130,12 @@ export class CompletionProvider { postText: string, completionMap: CompletionMap ): boolean { - // For now, we only support simple cases. no complex pattern matching. + // Basic literal-completion support for an empty case slot (`case /* here */`) or a `case` + // pattern that is already a literal or a capture name (`case "..."` / `case Sym`). Richer + // slot-aware pattern completions are provided by the subclass override of + // `tryGetMatchCasePatternCompletions`. // match c: // case /* here */ - // and - // match c: // case "/* here */" // case Sym/*here*/ @@ -2962,6 +3150,7 @@ export class CompletionProvider { parent.d.suite === parentAndChild.child && parent.parent?.nodeType === ParseNodeType.Match ) { + // Empty case slot: `case /* here */`. Offer the subject type's literal values. matchNode = parent.parent; caseNode = parent; } else if ( @@ -2976,9 +3165,13 @@ export class CompletionProvider { return false; } - const type = this._getFilteredMatchSubjectTypeForCaseCompletions(matchNode, caseNode); - if (type && containsLiteralType(type)) { - this._addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); + const type = this.getFilteredMatchSubjectTypeForCaseCompletions(matchNode, caseNode); + if (!type) { + return false; + } + + if (containsLiteralType(type)) { + this.addLiteralValuesForTargetType(type, priorWord, priorText, postText, completionMap); return true; } @@ -3004,7 +3197,7 @@ export class CompletionProvider { continue; } - this._addLiteralValuesForTargetType(candidateType, priorWord, priorText, postText, completionMap); + this.addLiteralValuesForTargetType(candidateType, priorWord, priorText, postText, completionMap); addedLiteralValues = true; } @@ -3015,7 +3208,9 @@ export class CompletionProvider { return expressionNode === expectedTypeNode; } - private _getFilteredMatchSubjectTypeForCaseCompletions( + // Kept in place (rather than relocated above the private accessors) to minimize the subrepo diff. + // eslint-disable-next-line @typescript-eslint/member-ordering + protected getFilteredMatchSubjectTypeForCaseCompletions( matchNode: MatchNode, currentCaseNode: CaseNode ): Type | undefined { @@ -3123,21 +3318,55 @@ export class CompletionProvider { const quoteInfo = this._getQuoteInfo(priorWord, priorText); const excludes = new Set(existingKeys); + // Collect the value type(s) for each key across all TypedDict subtypes. A key + // shared by a union of TypedDicts must advertise the union of its value types + // (that is the type produced by actually subscripting the union), not just the + // first subtype's value type. + const keyValueTypes = new Map(); typedDicts.forEach((typedDict) => { getTypedDictMembersForClass(this.evaluator, typedDict, /* allowNarrowed */ true).knownItems.forEach( - (_, key) => { + (entry, key) => { // Unions of TypedDicts may define the same key. if (excludes.has(key) || completionMap.has(key)) { return; } - excludes.add(key); + let valueTypes = keyValueTypes.get(key); + if (!valueTypes) { + valueTypes = []; + keyValueTypes.set(key, valueTypes); + } - this._addStringLiteralToCompletions(key, quoteInfo, postText, completionMap); + valueTypes.push(entry.valueType); } ); }); + keyValueTypes.forEach((valueTypes, key) => { + // Short-circuit before the (relatively expensive) printType call on this hot + // path: skip keys that _addStringLiteralToCompletions would immediately drop, + // either because the typed prefix filters them out or because the quoted label + // already exists. These guards mirror the early returns in that helper. + if (!StringUtils.isPatternInSymbol(quoteInfo.filterText || '', key)) { + return; + } + const quotedLabel = `${quoteInfo.quoteCharacter}${key}${quoteInfo.quoteCharacter}`; + if (completionMap.has(quotedLabel)) { + return; + } + + const valueType = valueTypes.length === 1 ? valueTypes[0] : combineTypes(valueTypes); + // The value type is surfaced as the completion item's detail. It must be set + // eagerly here: TypedDict key items carry no symbol, so resolveCompletionItem + // bails early and never lazily fills detail. + const valueTypeText = this.evaluator.printType(valueType, { + enforcePythonSyntax: true, + expandTypeAlias: false, + }); + + this._addStringLiteralToCompletions(key, quoteInfo, postText, completionMap, valueTypeText); + }); + return true; } @@ -3264,13 +3493,20 @@ export class CompletionProvider { quoteInfo: QuoteInfo, postText: string | undefined, completionMap: CompletionMap, - detail?: string + detail?: string, + prefix = '', + valueQuoteCharacter?: string ) { if (!StringUtils.isPatternInSymbol(quoteInfo.filterText || '', value)) { return; } - const valueWithQuotes = `${quoteInfo.quoteCharacter}${value}${quoteInfo.quoteCharacter}`; + // The quote used to wrap the inserted literal must match how `value` was + // escaped. Bytes literals are always printed double-quoted (escaping only + // `"`), so they must be re-wrapped in double quotes even inside a single- + // quoted token; otherwise an embedded `'` would produce invalid source. + const wrapQuoteCharacter = valueQuoteCharacter ?? quoteInfo.quoteCharacter; + const valueWithQuotes = `${prefix}${wrapQuoteCharacter}${value}${wrapQuoteCharacter}`; if (completionMap.has(valueWithQuotes)) { return; } @@ -3278,10 +3514,22 @@ export class CompletionProvider { const completionItem = CompletionItem.create(valueWithQuotes); completionItem.kind = CompletionItemKind.Constant; - completionItem.sortText = this._makeSortText(SortCategory.LiteralValue, valueWithQuotes); + completionItem.sortText = this.makeSortText(SortCategory.LiteralValue, valueWithQuotes); + + // When the inserted literal is wrapped in a different quote than the + // surrounding token (bytes are always double-quoted, even inside a + // single-quoted `b'...'` token), the label/insert text uses `"` while the + // text under the cursor uses `'`. The client fuzzy-filters the typed + // single-quoted text against the double-quoted label and would drop the + // item. Provide a filterText that matches the surrounding token's quote so + // the completion survives client-side filtering. + if (wrapQuoteCharacter !== quoteInfo.quoteCharacter) { + completionItem.filterText = `${prefix}${quoteInfo.quoteCharacter}${value}${quoteInfo.quoteCharacter}`; + } + let rangeStartCol = this.position.character; if (quoteInfo.stringValue !== undefined) { - rangeStartCol -= quoteInfo.stringValue.length + 1; + rangeStartCol -= quoteInfo.stringValue.length + 1 + prefix.length; } else if (quoteInfo.priorWord) { rangeStartCol -= quoteInfo.priorWord.length; } @@ -3380,7 +3628,9 @@ export class CompletionProvider { }); } - private _findMatchingKeywords(keywordList: string[], partialMatch: string): string[] { + // Kept in place (rather than relocated above the private accessors) to minimize the subrepo diff. + // eslint-disable-next-line @typescript-eslint/member-ordering + protected findMatchingKeywords(keywordList: string[], partialMatch: string): string[] { return keywordList.filter((keyword) => { if (partialMatch) { return StringUtils.isPatternInSymbol(partialMatch, keyword); @@ -3431,7 +3681,7 @@ export class CompletionProvider { completionItem.kind = CompletionItemKind.Variable; completionItem.data = this.createCompletionItemData({}); - completionItem.sortText = this._makeSortText(SortCategory.NamedParameter, argName); + completionItem.sortText = this.makeSortText(SortCategory.NamedParameter, argName); completionItem.filterText = argName; // If the text immediately after the cursor already starts with @@ -3466,17 +3716,24 @@ export class CompletionProvider { }); } - private _addSymbols(node: ParseNode, priorWord: string, completionMap: CompletionMap) { + // Kept in place (rather than relocated above the private accessors) to minimize the subrepo diff. + // eslint-disable-next-line @typescript-eslint/member-ordering + protected addSymbols( + node: ParseNode, + priorWord: string, + completionMap: CompletionMap, + includeSymbolCallback?: (symbol: Symbol, name: string) => boolean + ) { let curNode: ParseNode | undefined = node; while (curNode) { // Does this node have a scope associated with it? - let scope = getScopeForNode(curNode); + let scope = getScopeForNode(curNode, this.nodeInfo); if (scope) { while (scope) { this._addSymbolsForSymbolTable( scope.symbolTable, - () => true, + includeSymbolCallback ?? (() => true), priorWord, node, /* isInImport */ false, @@ -3494,15 +3751,21 @@ export class CompletionProvider { if (isInstantiableClass(baseClass)) { this._addSymbolsForSymbolTable( ClassType.getSymbolTable(baseClass), - (symbol) => { + (symbol, name) => { if (!symbol.isClassMember()) { return false; } // Return only variables, not methods or classes. - return symbol - .getDeclarations() - .some((decl) => decl.type === DeclarationType.Variable); + if ( + !symbol + .getDeclarations() + .some((decl) => decl.type === DeclarationType.Variable) + ) { + return false; + } + + return includeSymbolCallback ? includeSymbolCallback(symbol, name) : true; }, priorWord, node, @@ -3544,7 +3807,8 @@ export class CompletionProvider { // exported from this scope, don't include it in the // suggestion list unless we are in the same file. const hidden = - !isVisibleExternally(symbol) && !symbol.getDeclarations().some((d) => isDefinedInFile(d, this.fileUri)); + !isVisibleExternally(symbol) && + !symbol.getDeclarations().some((d) => isDefinedInFile(d, this.fileUri, this.nodeInfo)); if (!hidden && includeSymbolCallback(symbol, name)) { // Don't add a symbol more than once. It may have already been // added from an inner scope's symbol table. @@ -3591,7 +3855,9 @@ export class CompletionProvider { ); } - private _makeSortText(sortCategory: SortCategory, name: string, autoImportText = ''): string { + // Kept in place (rather than relocated above the private accessors) to minimize the subrepo diff. + // eslint-disable-next-line @typescript-eslint/member-ordering + protected makeSortText(sortCategory: SortCategory, name: string, autoImportText = ''): string { const recentListIndex = this._getRecentListIndex(name, autoImportText); // If the label is in the recent list, modify the category @@ -3722,7 +3988,7 @@ export class CompletionProvider { const keyword = 'import'; const completionItem = CompletionItem.create(keyword); completionItem.kind = CompletionItemKind.Keyword; - completionItem.sortText = this._makeSortText(SortCategory.Keyword, keyword); + completionItem.sortText = this.makeSortText(SortCategory.Keyword, keyword); completionMap.set(completionItem); } @@ -3731,7 +3997,7 @@ export class CompletionProvider { ? SortCategory.PrivateSymbol : SortCategory.ImportModuleName; this.addNameToCompletions(completionName, CompletionItemKind.Module, '', completionMap, { - sortText: this._makeSortText(sortCategory, completionName), + sortText: this.makeSortText(sortCategory, completionName), moduleUri: modulePath, }); }); @@ -3745,12 +4011,17 @@ export class CompletionProvider { return decl.isMethod && decl.node.d.decorators.length > 0; } - private _isEnumMember(containingType: ClassType | undefined, name: string) { + protected _isEnumMember(containingType: ClassType | undefined, name: string) { if (!containingType || !ClassType.isEnumClass(containingType)) { return false; } - const symbolType = transformTypeForEnumMember(this.evaluator, containingType, name); + const symbolType = transformTypeForEnumMember( + this.evaluator, + containingType, + name, + getInfoReader(this.evaluator) + ); return ( symbolType && diff --git a/packages/pyright-internal/src/languageService/definitionProvider.ts b/packages/pyright-internal/src/languageService/definitionProvider.ts index 1f41ef4dbd09..d95d7e10437a 100644 --- a/packages/pyright-internal/src/languageService/definitionProvider.ts +++ b/packages/pyright-internal/src/languageService/definitionProvider.ts @@ -12,6 +12,7 @@ import { CancellationToken } from 'vscode-languageserver'; +import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { Declaration, @@ -113,7 +114,7 @@ export function addDeclarationsToDefinitions( // Add matching source module sourceMapper .findModules(resolvedDecl.uri) - .map((m) => getFileInfo(m)?.fileUri) + .map((m) => getFileInfo(m, sourceMapper.analyzerNodeInfo)?.fileUri) .filter(isDefined) .forEach((f) => _addIfUnique(definitions, _createModuleEntry(f))); return; @@ -209,7 +210,7 @@ class DefinitionProviderBase { continue; } - const fileInfo = getFileInfo(synthType.node); + const fileInfo = getFileInfo(synthType.node, this.sourceMapper.analyzerNodeInfo); const range = convertOffsetsToRange( synthType.node.start, synthType.node.start + synthType.node.length, @@ -231,7 +232,7 @@ export class DefinitionProvider extends DefinitionProviderBase { ) { const sourceMapper = program.getSourceMapper(fileUri, token); const parseResults = program.getParseResults(fileUri); - const { node, offset } = _tryGetNode(parseResults, position); + const { node, offset } = _tryGetNode(parseResults, position, AnalyzerNodeInfo.getInfoReader(program)); super(sourceMapper, program.evaluator!, program.serviceProvider, node, offset, filter, token); } @@ -270,7 +271,7 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { constructor(program: ProgramView, fileUri: Uri, position: Position, token: CancellationToken) { const sourceMapper = program.getSourceMapper(fileUri, token, /*mapCompiled*/ false, /*preferStubs*/ true); const parseResults = program.getParseResults(fileUri); - const { node, offset } = _tryGetNode(parseResults, position); + const { node, offset } = _tryGetNode(parseResults, position, AnalyzerNodeInfo.getInfoReader(program)); super(sourceMapper, program.evaluator!, program.serviceProvider, node, offset, DefinitionFilter.All, token); this._fileUri = fileUri; @@ -320,7 +321,11 @@ export class TypeDefinitionProvider extends DefinitionProviderBase { } } -function _tryGetNode(parseResults: ParseFileResults | undefined, position: Position) { +function _tryGetNode( + parseResults: ParseFileResults | undefined, + position: Position, + reader?: AnalyzerNodeInfo.AnalyzerNodeInfoReader +) { if (!parseResults) { return { node: undefined, offset: 0 }; } @@ -330,7 +335,7 @@ function _tryGetNode(parseResults: ParseFileResults | undefined, position: Posit return { node: undefined, offset: 0 }; } - return { node: ParseTreeUtils.findNodeByOffset(parseResults.parserOutput.parseTree, offset), offset }; + return { node: ParseTreeUtils.findNodeByOffset(parseResults.parserOutput.parseTree, offset, reader), offset }; } function _createModuleEntry(uri: Uri): DocumentRange { diff --git a/packages/pyright-internal/src/languageService/documentHighlightProvider.ts b/packages/pyright-internal/src/languageService/documentHighlightProvider.ts index a807d6dee2ab..63db0d3294f0 100644 --- a/packages/pyright-internal/src/languageService/documentHighlightProvider.ts +++ b/packages/pyright-internal/src/languageService/documentHighlightProvider.ts @@ -10,6 +10,7 @@ import { CancellationToken, DocumentHighlight, DocumentHighlightKind } from 'vscode-languageserver'; +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { ProgramView, ReferenceUseCase } from '../common/extensibility'; @@ -43,7 +44,11 @@ export class DocumentHighlightProvider { return undefined; } - const node = ParseTreeUtils.findNodeByOffset(this._parseResults.parserOutput.parseTree, offset); + const node = ParseTreeUtils.findNodeByOffset( + this._parseResults.parserOutput.parseTree, + offset, + getInfoReader(this._program) + ); if (node === undefined) { return undefined; } diff --git a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts index 3f8446392d37..1c4f0b80ecec 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolCollector.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolCollector.ts @@ -11,13 +11,25 @@ import { CancellationToken } from 'vscode-languageserver'; import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; -import { AliasDeclaration, Declaration, DeclarationType, isAliasDeclaration } from '../analyzer/declaration'; +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; +import { + AliasDeclaration, + Declaration, + DeclarationType, + isAliasDeclaration, + isVariableDeclaration, +} from '../analyzer/declaration'; import { areDeclarationsSame, getDeclarationsWithUsesLocalNameRemoved, synthesizeAliasDeclaration, } from '../analyzer/declarationUtils'; -import { getEvaluationScopeNode, getModuleNode, getStringNodeValueRange } from '../analyzer/parseTreeUtils'; +import { + getEnclosingClass, + getEvaluationScopeNode, + getModuleNode, + getStringNodeValueRange, +} from '../analyzer/parseTreeUtils'; import { ParseTreeWalker } from '../analyzer/parseTreeWalker'; import { ScopeType } from '../analyzer/scope'; import * as ScopeUtils from '../analyzer/scopeUtils'; @@ -26,7 +38,8 @@ import { collectImportedByCells } from '../analyzer/sourceFileInfoUtils'; import { isStubFile } from '../analyzer/sourceMapper'; import { Symbol } from '../analyzer/symbol'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; -import { TypeCategory } from '../analyzer/types'; +import { ClassType, isClassInstance, isInstantiableClass, TypeCategory } from '../analyzer/types'; +import { doForEachSubtype, lookUpClassMember, lookUpObjectMember, MemberAccessFlags } from '../analyzer/typeUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; import { isDefined } from '../common/core'; @@ -120,6 +133,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { private readonly _treatModuleInImportAndFromImportSame: boolean; private readonly _skipUnreachableCode: boolean; private readonly _useCase: ReferenceUseCase; + private readonly _nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader; // Set when at least one usage provider exposes `appendSeedDeclarationsAt`. Whether a provider // exposes that hook for a given request is the provider's own policy -- the collector stays policy- @@ -147,8 +161,9 @@ export class DocumentSymbolCollector extends ParseTreeWalker { private readonly _cancellationToken: CancellationToken, options?: DocumentSymbolCollectorOptions ) { - super(); + super(getInfoReader(_program)); + this._nodeInfo = getInfoReader(this._program); this._aliasResolver = new AliasResolver(this._program.evaluator!); // Start with the symbols passed in @@ -163,7 +178,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { this._usageProviders = options?.providers ?? (this._program.serviceProvider.tryGet(ServiceKeys.symbolUsageProviderFactory) ?? []) - .map((f) => f.tryCreateProvider(this._useCase, declarations, this._cancellationToken)) + .map((f) => f.tryCreateProvider(this._useCase, declarations, this._nodeInfo, this._cancellationToken)) .filter(isDefined); this._hasSeedProviders = this._usageProviders.some((p) => p.appendSeedDeclarationsAt !== undefined); @@ -223,8 +238,9 @@ export class DocumentSymbolCollector extends ParseTreeWalker { return []; } - const declarations = getDeclarationsForNameNode(evaluator, node, /* skipUnreachableCode */ false); - const fileInfo = AnalyzerNodeInfo.getFileInfo(node); + const nodeInfo = getInfoReader(program); + const declarations = getDeclarationsForNameNode(evaluator, node, /* skipUnreachableCode */ false, nodeInfo); + const fileInfo = AnalyzerNodeInfo.getFileInfo(node, nodeInfo); const fileUri = fileInfo.fileUri; const resolveLocalNames = options?.resolveLocalNames ?? true; @@ -270,7 +286,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { implicitlyImportedBy.forEach((implicitImport) => { const parseTree = program.getParseResults(implicitImport.uri)?.parserOutput.parseTree; if (parseTree) { - const scope = AnalyzerNodeInfo.getScope(parseTree); + const scope = AnalyzerNodeInfo.getScope(parseTree, nodeInfo); const symbol = scope?.lookUpSymbol(node.d.value); appendSymbolDeclarations(symbol, resolvedDeclarations); } @@ -303,7 +319,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { return false; } - return getEvaluationScopeNode(decl.node).node.nodeType === ParseNodeType.Module; + return getEvaluationScopeNode(decl.node, nodeInfo).node.nodeType === ParseNodeType.Module; } } @@ -332,7 +348,7 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } override walk(node: ParseNode) { - if (!this._skipUnreachableCode || !AnalyzerNodeInfo.isCodeUnreachable(node)) { + if (!this._skipUnreachableCode || !AnalyzerNodeInfo.isCodeUnreachable(node, this._nodeInfo)) { super.walk(node); } } @@ -356,7 +372,12 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } if (this._declarations.length > 0) { - const declarations = getDeclarationsForNameNode(this._evaluator, node, this._skipUnreachableCode); + const declarations = getDeclarationsForNameNode( + this._evaluator, + node, + this._skipUnreachableCode, + this._nodeInfo + ); if (declarations && declarations.length > 0) { // Does this name share a declaration with the symbol of interest? if (this._resultsContainsDeclaration(node, declarations)) { @@ -529,12 +550,12 @@ export class DocumentSymbolCollector extends ParseTreeWalker { return; } - const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(node); + const dunderAllInfo = AnalyzerNodeInfo.getDunderAllInfo(node, this._nodeInfo); if (!dunderAllInfo) { return; } - const moduleScope = ScopeUtils.getScopeForNode(node); + const moduleScope = ScopeUtils.getScopeForNode(node, this._nodeInfo); if (!moduleScope) { return; } @@ -558,14 +579,19 @@ export class DocumentSymbolCollector extends ParseTreeWalker { } } -export function getDeclarationsForNameNode(evaluator: TypeEvaluator, node: NameNode, skipUnreachableCode = true) { +export function getDeclarationsForNameNode( + evaluator: TypeEvaluator, + node: NameNode, + skipUnreachableCode: boolean, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +) { // This can handle symbols brought in by wildcard (import *) as long as the declarations that the symbol collector // compares against point to the actual alias declaration, not one that uses local name (ex, import alias) if (node.parent?.nodeType !== ParseNodeType.ModuleName) { return _getDeclarationsForNonModuleNameNode(evaluator, node, skipUnreachableCode); } - return _getDeclarationsForModuleNameNode(evaluator, node); + return _getDeclarationsForModuleNameNode(evaluator, node, nodeInfo); } export function addDeclarationIfUnique(declarations: Declaration[], itemToAdd: Declaration) { @@ -629,10 +655,87 @@ function _getDeclarationsForNonModuleNameNode( ); } + for (const subclassDecl of _getSubclassMemberVariableDeclarations(evaluator, node, decls)) { + addDeclarationIfUnique(decls, subclassDecl); + } + return decls; } -function _getDeclarationsForModuleNameNode(evaluator: TypeEvaluator, node: NameNode): Declaration[] { +// Handles the specific case where a member-access name (e.g. `self.a`) resolves to a base *protocol* +// class's declared variable instead of the subclass's own member-access assignment of the same name. +// `getDeclInfoForNameNode` prefers the protocol's declared-type variable, so it returns only the protocol +// declaration and hides the subclass's own (regular) variable from reference collection. Only when the +// declarations we already resolved (`decls`) include such a protocol variable do we look up the subclass's +// own member-access variable and return it so both are matched. +function _getSubclassMemberVariableDeclarations( + evaluator: TypeEvaluator, + node: NameNode, + decls: readonly Declaration[] +): Declaration[] { + const memberAccess = node.parent; + if (memberAccess?.nodeType !== ParseNodeType.MemberAccess || memberAccess.d.member !== node) { + return []; + } + + // Bail out unless a resolved declaration is a protocol member variable. Every other member-access + // name already has the right declaration in `decls`, so it needs no extra work. + if (!decls.some((d) => _isVariableInProtocolClass(evaluator, d))) { + return []; + } + + const leftType = evaluator.getType(memberAccess.d.leftExpr); + if (!leftType) { + return []; + } + + const result: Declaration[] = []; + doForEachSubtype(evaluator.makeTopLevelTypeVarsConcrete(leftType), (subtype) => { + subtype = evaluator.makeTopLevelTypeVarsConcrete(subtype); + + const ownMember = isInstantiableClass(subtype) + ? lookUpClassMember(subtype, node.d.value, MemberAccessFlags.SkipBaseClasses) + : isClassInstance(subtype) + ? lookUpObjectMember(subtype, node.d.value, MemberAccessFlags.SkipBaseClasses) + : undefined; + if (!ownMember) { + return; + } + + // The subclass's own member must be a regular member-access variable (e.g. `self.a = 3`), + // distinct from the inherited protocol annotation. This is why a directly-inherited class-body + // attribute (`class A: a = 1` -> `class B(A): ...`) is intentionally NOT linked here while an + // unrelated instance attribute (`self.a = ...`) is: a class-body variable lives in the class + // dict (one shared slot already reachable through normal inheritance), whereas a member-access + // variable lives in the instance `__dict__`, so the subclass's own `self.a` is a distinct + // declaration that reference collection would otherwise miss. + ownMember.symbol + .getDeclarations() + .filter((d) => isVariableDeclaration(d) && d.isDefinedByMemberAccess) + .forEach((d) => addDeclarationIfUnique(result, d)); + }); + + return result; +} + +// True when `decl` is a variable declared directly in a class that is *itself* a protocol: a +// class-body variable annotation (`a: int`, not assigned by member access) whose enclosing class is +// a protocol. Async twin: `isVariableInProtocolClassAsync` in asyncDocumentSymbolCollector. +function _isVariableInProtocolClass(evaluator: TypeEvaluator, decl: Declaration): boolean { + if (!isVariableDeclaration(decl) || decl.isDefinedByMemberAccess) { + return false; + } + + const enclosingClass = getEnclosingClass(decl.node); + const classResults = enclosingClass ? evaluator.getTypeOfClass(enclosingClass) : undefined; + return !!classResults && ClassType.isProtocolClass(classResults.classType); +} + +function _getDeclarationsForModuleNameNode( + evaluator: TypeEvaluator, + node: NameNode, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader +): Declaration[] { assert(node.parent?.nodeType === ParseNodeType.ModuleName); // We don't have symbols corresponding to ModuleName in our system since those @@ -681,7 +784,7 @@ function _getDeclarationsForModuleNameNode(evaluator: TypeEvaluator, node: NameN // And we also need to re-use "decls for X" binder has created // so that it matches with decls type evaluator returns for "references for X". // ex) import X or from .X import ... in init file and etc. - const symbolWithScope = ScopeUtils.getScopeForNode(node)?.lookUpSymbolRecursive(importName); + const symbolWithScope = ScopeUtils.getScopeForNode(node, nodeInfo)?.lookUpSymbolRecursive(importName); if (symbolWithScope && moduleName.d.nameParts.length === 1) { let declsFromSymbol: Declaration[] = []; diff --git a/packages/pyright-internal/src/languageService/documentSymbolProvider.ts b/packages/pyright-internal/src/languageService/documentSymbolProvider.ts index 203252e4a290..c75cdaa4c34a 100644 --- a/packages/pyright-internal/src/languageService/documentSymbolProvider.ts +++ b/packages/pyright-internal/src/languageService/documentSymbolProvider.ts @@ -10,7 +10,7 @@ import { CancellationToken, DocumentSymbol, Location, SymbolInformation } from 'vscode-languageserver'; -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { getInfoReader, getFileInfo } from '../analyzer/analyzerNodeInfo'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { ProgramView } from '../common/extensibility'; import { ReadOnlyFileSystem } from '../common/fileSystem'; @@ -66,12 +66,19 @@ export class DocumentSymbolProvider { return symbolList; } - const fileInfo = getFileInfo(parseResults.parserOutput.parseTree); + const nodeInfo = getInfoReader(this.program); + const fileInfo = getFileInfo(parseResults.parserOutput.parseTree, nodeInfo); if (!fileInfo) { return symbolList; } - const indexSymbolData = SymbolIndexer.indexSymbols(fileInfo, parseResults, this._indexOptions, this._token); + const indexSymbolData = SymbolIndexer.indexSymbols( + fileInfo, + parseResults, + this._indexOptions, + nodeInfo, + this._token + ); this.appendDocumentSymbolsRecursive(indexSymbolData, symbolList); return symbolList; diff --git a/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts b/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts index fcfcb9295b1d..f9f95b406c12 100644 --- a/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts +++ b/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts @@ -13,6 +13,8 @@ import { WatchKind, } from 'vscode-languageserver'; import { FileSystem } from '../common/fileSystem'; +import { extraPathWatchTargetCovers, getExtraPathWatchTargets } from '../common/extraPathGlob'; +import { ServiceKeys } from '../common/serviceKeys'; import { deduplicateFolders, isFile } from '../common/uri/uriUtils'; import { DynamicFeature } from './dynamicFeature'; import { Workspace } from '../workspaceFactory'; @@ -60,12 +62,44 @@ export class FileWatcherDynamicFeature extends DynamicFeature { .filter(isDefined) ); - foldersToWatch.forEach((p) => { - const globPattern = isFile(this._fs, p, /* treatZipDirectoryAsFile */ true) - ? { baseUri: p.getDirectory().toString(), pattern: p.fileName } - : { baseUri: p.toString(), pattern: '**' }; + // Wildcard `extraPaths` entries are watched by their original glob (below) + // rather than by their already-expanded leaf directories, so drop any + // deduped folder that one of those globs already covers. The glob specs are + // retained on each workspace's config options (`extraPathGlobFileSpecs`). + const extraPathGlobTargets = this._workspaceFactory + .getNonDefaultWorkspaces() + .flatMap((w) => + getExtraPathWatchTargets( + w.service.getConfigOptions().extraPathGlobFileSpecs, + w.service.serviceProvider.get(ServiceKeys.caseSensitivityDetector) + ) + ); - watchers.push({ globPattern, kind: watchKind }); + foldersToWatch + .filter((p) => !extraPathGlobTargets.some((t) => extraPathWatchTargetCovers(t, p))) + .forEach((p) => { + const globPattern = isFile(this._fs, p, /* treatZipDirectoryAsFile */ true) + ? { baseUri: p.getDirectory().toString(), pattern: p.fileName } + : { baseUri: p.toString(), pattern: '**' }; + + watchers.push({ globPattern, kind: watchKind }); + }); + + // Watch the original wildcard `extraPaths` globs. The `dirPattern` matches the + // directories themselves; append `/**` so files *beneath* every matched directory are + // watched too (mirroring the `**` used for expanded folders). A pattern that already + // ends in `**` recurses on its own, so don't append a redundant second `/**` (e.g. + // `vendor/**`). This observes creations/deletions once a path matches the full pattern + // (e.g. a file appearing under an existing `*/src`). A brand-new intermediate directory + // that does not yet match the pattern (e.g. the `*` segment created before its `src` + // child exists) is instead picked up on the next configuration reload, which re-expands + // the globs. + extraPathGlobTargets.forEach((t) => { + const pattern = t.dirPattern.endsWith('**') ? t.dirPattern : `${t.dirPattern}/**`; + watchers.push({ + globPattern: { baseUri: t.root.toString(), pattern }, + kind: watchKind, + }); }); } diff --git a/packages/pyright-internal/src/languageService/hoverProvider.ts b/packages/pyright-internal/src/languageService/hoverProvider.ts index 06ec42ddb0a5..7b0ef04f4f14 100644 --- a/packages/pyright-internal/src/languageService/hoverProvider.ts +++ b/packages/pyright-internal/src/languageService/hoverProvider.ts @@ -11,6 +11,7 @@ import { CancellationToken, Hover, MarkupKind } from 'vscode-languageserver'; +import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { Declaration, DeclarationType, @@ -50,6 +51,7 @@ import { ParseFileResults } from '../parser/parser'; import { TokenType } from '../parser/tokenizerTypes'; import { getClassAndConstructorTypes, + getConstructorDocInfo, getConstructorTooltip, getDocumentationPartsForTypeAndDeclWithSource, getToolTipForType, @@ -165,35 +167,47 @@ function addReturnResultsPart( }); } +// Returns true only when non-empty rendered documentation is appended to parts. +// A source docstring can still return false when rendering produces no content. export function addDocumentationResultsPart( serviceProvider: ServiceProvider, docString: string | undefined, format: MarkupKind, parts: HoverTextPart[], resolvedDecl: Declaration | undefined, - forceLiteralOverride?: boolean -) { + forceLiteralOverride?: boolean, + sourceFileUri?: Uri +): boolean { if (!docString) { - return; + return false; } if (format === MarkupKind.Markdown) { - const forceLiteral = forceLiteralOverride ?? isBuiltInModule(resolvedDecl?.uri); + const documentationUri = resolvedDecl?.uri ?? sourceFileUri; + const forceLiteral = forceLiteralOverride ?? isBuiltInModule(documentationUri); const markDown = serviceProvider .docStringService() - .convertDocStringToMarkdown(docString, forceLiteral, resolvedDecl?.uri); + .convertDocStringToMarkdown(docString, forceLiteral, documentationUri); + if (!markDown.trim()) { + return false; + } - if (parts.length > 0 && markDown.length > 0) { + if (parts.length > 0) { parts.push({ text: getDocumentationSeparator(parts[parts.length - 1]) }); } parts.push({ text: markDown, python: false }); - return; + return true; } if (format === MarkupKind.PlainText) { - parts.push({ text: serviceProvider.docStringService().convertDocStringToPlainText(docString), python: false }); - return; + const plainText = serviceProvider.docStringService().convertDocStringToPlainText(docString); + if (!plainText.trim()) { + return false; + } + + parts.push({ text: plainText, python: false }); + return true; } fail(`Unsupported markup type: ${format}`); @@ -317,7 +331,11 @@ export class HoverProvider { return null; } - const node = ParseTreeUtils.findNodeByOffset(this._parseResults.parserOutput.parseTree, offset); + const node = ParseTreeUtils.findNodeByOffset( + this._parseResults.parserOutput.parseTree, + offset, + AnalyzerNodeInfo.getInfoReader(this._program) + ); if (node === undefined) { return null; } @@ -342,7 +360,14 @@ export class HoverProvider { declInfo?.synthesizedTypes.forEach((type) => { this._addResultsForSynthesizedType(results.parts, type, nameNode); }); - this._addDocumentationPart(results.parts, node, /* resolvedDecl */ undefined); + const documentationAdded = this._addDocumentationPart( + results.parts, + node, + /* resolvedDecl */ undefined + ); + if (!documentationAdded) { + this._addDocumentationForSynthesizedTypes(results.parts, declInfo.synthesizedTypes); + } } else if (!node.parent || node.parent.nodeType !== ParseNodeType.ModuleName) { // If we had no declaration, see if we can provide a minimal tooltip. We'll skip // this if it's part of a module name, since a module name part with no declaration @@ -588,6 +613,38 @@ export class HoverProvider { } } + private _addDocumentationForSynthesizedTypes(parts: HoverTextPart[], synthesizedTypes: SynthesizedTypeInfo[]) { + for (const typeInfo of synthesizedTypes) { + if (!typeInfo.node) { + continue; + } + + const docNode = ParseTreeUtils.getVariableDocStringNode(typeInfo.node); + if (!docNode) { + continue; + } + + const docString = docNode.d.strings.map((stringNode) => stringNode.d.value).join(''); + const sourceFileUri = AnalyzerNodeInfo.getFileInfo( + typeInfo.node, + AnalyzerNodeInfo.getInfoReader(this._program) + )?.fileUri; + if ( + addDocumentationResultsPart( + this._program.serviceProvider, + docString, + this._format, + parts, + undefined, + undefined, + sourceFileUri + ) + ) { + return; + } + } + } + private _tryAddPartsForTypedDictKey(node: StringNode, type: Type, parts: HoverTextPart[]) { // If the expected type is a TypedDict and the current node is a key entry then we can provide a tooltip // with the type of the TypedDict key and its docstring, if available. @@ -649,10 +706,24 @@ export class HoverProvider { /* python */ true ); - const addedDoc = this._addDocumentationPartForType(parts, result.methodType, declaration); - - if (!addedDoc) { - this._addDocumentationPartForType(parts, result.classType, declaration); + // Select the constructor docstring via the unified component (Phase 1 constructor-method + // docstrings across the MRO, then Phase 2 the class docstring). + const docInfo = getConstructorDocInfo( + result.classType, + result.methodType, + declaration, + this._sourceMapper, + this._evaluator + ); + if (docInfo?.text) { + addDocumentationResultsPart( + this._program.serviceProvider, + docInfo.text, + this._format, + parts, + docInfo.sourceDecl ?? declaration, + docInfo.forceLiteral + ); } return true; } @@ -670,9 +741,13 @@ export class HoverProvider { return ': ' + this._evaluator.printType(type, options); } - private _addDocumentationPart(parts: HoverTextPart[], node: NameNode, resolvedDecl: Declaration | undefined) { + private _addDocumentationPart( + parts: HoverTextPart[], + node: NameNode, + resolvedDecl: Declaration | undefined + ): boolean { const type = this._getType(node); - this._addDocumentationPartForType(parts, type, resolvedDecl, node.d.value); + return this._addDocumentationPartForType(parts, type, resolvedDecl, node.d.value); } private _addDocumentationPartForType( @@ -691,7 +766,7 @@ export class HoverProvider { } ); - addDocumentationResultsPart( + return addDocumentationResultsPart( this._program.serviceProvider, documentation?.text, this._format, @@ -699,7 +774,6 @@ export class HoverProvider { resolvedDecl, documentation?.forceLiteral ); - return !!documentation?.text; } private _addResultsPart(parts: HoverTextPart[], text: string, python = false) { diff --git a/packages/pyright-internal/src/languageService/importSorter.ts b/packages/pyright-internal/src/languageService/importSorter.ts index 0e56b57ce145..ea7ae7d0f9d5 100644 --- a/packages/pyright-internal/src/languageService/importSorter.ts +++ b/packages/pyright-internal/src/languageService/importSorter.ts @@ -16,6 +16,7 @@ import { getTopLevelImports, ImportStatement, } from '../analyzer/importStatementUtils'; +import { AnalyzerNodeInfoReader } from '../analyzer/analyzerNodeInfo'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { TextEditAction } from '../common/editAction'; import { convertOffsetToPosition } from '../common/positionUtils'; @@ -28,13 +29,21 @@ import { ParseFileResults } from '../parser/parser'; const _maxLineLength = 88; export class ImportSorter { - constructor(private _parseResults: ParseFileResults, private _cancellationToken: CancellationToken) {} + constructor( + private _parseResults: ParseFileResults, + private _nodeInfo: AnalyzerNodeInfoReader, + private _cancellationToken: CancellationToken + ) {} sort(): TextEditAction[] { throwIfCancellationRequested(this._cancellationToken); const actions: TextEditAction[] = []; - const importStatements = getTopLevelImports(this._parseResults.parserOutput.parseTree); + const importStatements = getTopLevelImports( + this._parseResults.parserOutput.parseTree, + /* includeImplicitImports */ false, + this._nodeInfo + ); const sortedStatements = importStatements.orderedImports .map((s) => s) diff --git a/packages/pyright-internal/src/languageService/importStatementCandidates.ts b/packages/pyright-internal/src/languageService/importStatementCandidates.ts index 3fe293f3b878..a488d2c76335 100644 --- a/packages/pyright-internal/src/languageService/importStatementCandidates.ts +++ b/packages/pyright-internal/src/languageService/importStatementCandidates.ts @@ -10,6 +10,7 @@ */ import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import { ImportedModuleDescriptor, ImportResolver } from '../analyzer/importResolver'; import { ImplicitImport, ImportResult } from '../analyzer/importResult'; import { SymbolTable } from '../analyzer/symbol'; @@ -68,7 +69,8 @@ export function getModuleNameCompletionSuggestions( // names and is not filtered by `__all__` or visibility. Callers that need // completion-style filtering must apply it themselves. export function getImportFromTarget(program: ProgramView, importFromNode: ImportFromNode): ImportFromTarget { - const importInfo = AnalyzerNodeInfo.getImportInfo(importFromNode.d.module); + const nodeInfo = getInfoReader(program); + const importInfo = AnalyzerNodeInfo.getImportInfo(importFromNode.d.module, nodeInfo); if (!importInfo) { return { hasParseResults: false }; } @@ -81,7 +83,7 @@ export function getImportFromTarget(program: ProgramView, importFromNode: Import return { importInfo, hasParseResults: false, implicitImports: importInfo.implicitImports }; } - const symbolTable = AnalyzerNodeInfo.getScope(parseResults.parserOutput.parseTree)?.symbolTable; + const symbolTable = AnalyzerNodeInfo.getScope(parseResults.parserOutput.parseTree, nodeInfo)?.symbolTable; return { importInfo, hasParseResults: true, symbolTable, implicitImports: importInfo.implicitImports }; } diff --git a/packages/pyright-internal/src/languageService/quickActions.ts b/packages/pyright-internal/src/languageService/quickActions.ts index d11b731b6310..69a369e9f20e 100644 --- a/packages/pyright-internal/src/languageService/quickActions.ts +++ b/packages/pyright-internal/src/languageService/quickActions.ts @@ -7,6 +7,7 @@ * Provides support for miscellaneous quick actions. */ +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import { CancellationToken } from 'vscode-languageserver'; import { Commands } from '../commands/commands'; @@ -36,7 +37,7 @@ export function performQuickAction( } if (command === Commands.orderImports) { - const importSorter = new ImportSorter(parseResults, token); + const importSorter = new ImportSorter(parseResults, getInfoReader(programView), token); return importSorter.sort(); } diff --git a/packages/pyright-internal/src/languageService/referencesProvider.ts b/packages/pyright-internal/src/languageService/referencesProvider.ts index f20f7f03dde3..cfe663adb5f4 100644 --- a/packages/pyright-internal/src/languageService/referencesProvider.ts +++ b/packages/pyright-internal/src/languageService/referencesProvider.ts @@ -8,6 +8,7 @@ * by a location within a file. */ +import { getInfoReader } from '../analyzer/analyzerNodeInfo'; import { CancellationToken, Location, ResultProgressReporter } from 'vscode-languageserver'; import { Declaration, DeclarationType, isAliasDeclaration } from '../analyzer/declaration'; @@ -541,7 +542,7 @@ export class ReferencesProvider { symbolNames.add(node.d.value); const providers = (program.serviceProvider.tryGet(ServiceKeys.symbolUsageProviderFactory) ?? []) - .map((f) => f.tryCreateProvider(useCase, declarations, token)) + .map((f) => f.tryCreateProvider(useCase, declarations, getInfoReader(program.evaluator!), token)) .filter(isDefined); // Check whether we need to add new symbol names and declarations. @@ -580,7 +581,16 @@ export class ReferencesProvider { return undefined; } - const node = ParseTreeUtils.findNodeByOffset(parseResults.parserOutput.parseTree, offset); + // Navigation use cases (find-all-references, document highlights, call/type hierarchy) descend + // into evaluator-owned tier-2 string annotations (e.g. the Foo in cast("Foo", value)) via the + // reader. Rename intentionally stays on the parser tier so it cannot be initiated from inside such + // a quoted forward reference; renaming from the symbol's real declaration still updates those + // strings through the evaluator-owned forward-reference node. + const node = ParseTreeUtils.findNodeByOffset( + parseResults.parserOutput.parseTree, + offset, + useCase === ReferenceUseCase.Rename ? undefined : getInfoReader(program) + ); if (node === undefined) { return undefined; } @@ -615,6 +625,7 @@ function mergeSeedDeclarations(referencesResult: ReferencesResult, discovered: r } function isVisibleOutside(evaluator: TypeEvaluator, currentUri: Uri, node: NameNode, declarations: Declaration[]) { + const nodeInfo = getInfoReader(evaluator); const result = evaluator.lookUpSymbolRecursive(node, node.d.value, /* honorCodeFlow */ false); if (result && !isExternallyVisible(result.symbol)) { return false; @@ -631,7 +642,7 @@ function isVisibleOutside(evaluator: TypeEvaluator, currentUri: Uri, node: NameN return true; } - const evalScope = ParseTreeUtils.getEvaluationScopeNode(decl.node).node; + const evalScope = ParseTreeUtils.getEvaluationScopeNode(decl.node, nodeInfo).node; // If the declaration is at the module level or a class level, it can be seen // outside of the current module, so a global search is needed. @@ -699,13 +710,13 @@ function isVisibleOutside(evaluator: TypeEvaluator, currentUri: Uri, node: NameN // Return true if the scope that contains the specified node is visible // outside of the current module, false if not. function isContainerExternallyVisible(node: NameNode, recursionCount: number) { - let scopingNodeInfo = ParseTreeUtils.getEvaluationScopeNode(node); + let scopingNodeInfo = ParseTreeUtils.getEvaluationScopeNode(node, nodeInfo); let scopingNode = scopingNodeInfo.node; // If this is a type parameter scope, it acts as a proxy for // its outer (parent) scope. while (scopingNodeInfo.useProxyScope && scopingNodeInfo.node.parent) { - scopingNodeInfo = ParseTreeUtils.getEvaluationScopeNode(scopingNodeInfo.node.parent); + scopingNodeInfo = ParseTreeUtils.getEvaluationScopeNode(scopingNodeInfo.node.parent, nodeInfo); scopingNode = scopingNodeInfo.node; } diff --git a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts index 43cd8d1df1ce..97c1899801d9 100644 --- a/packages/pyright-internal/src/languageService/signatureHelpProvider.ts +++ b/packages/pyright-internal/src/languageService/signatureHelpProvider.ts @@ -20,19 +20,20 @@ import { SignatureInformation, } from 'vscode-languageserver'; -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { getInfoReader, AnalyzerNodeInfoReader, getFileInfo } from '../analyzer/analyzerNodeInfo'; import { DeclarationType } from '../analyzer/declaration'; import { getParamListDetails, ParamKind } from '../analyzer/parameterUtils'; import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { getCallNodeAndActiveParamIndex } from '../analyzer/parseTreeUtils'; import { SourceMapper } from '../analyzer/sourceMapper'; -import { isBuiltInModule } from '../analyzer/typeDocStringUtils'; +import { getFunctionOwnDocString, isBuiltInModule } from '../analyzer/typeDocStringUtils'; import { CallSignature, TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { PrintTypeFlags } from '../analyzer/typePrinter'; import { FunctionParam, FunctionType, isFunction, + isInstantiableClass, isOverloaded, isPositionOnlySeparator, OverloadedType, @@ -48,14 +49,17 @@ import { ParseFileResults } from '../parser/parser'; import { Tokenizer } from '../parser/tokenizer'; import { TokenType } from '../parser/tokenizerTypes'; import { + getConstructorDocInfo, getDocumentationPartsForTypeAndDecl, getFunctionDocStringFromType, + getTypeForToolTip, replaceStubEllipsisDefaultValues, } from './tooltipUtils'; export class SignatureHelpProvider { private readonly _parseResults: ParseFileResults | undefined; private readonly _sourceMapper: SourceMapper; + private readonly _nodeInfo: AnalyzerNodeInfoReader; constructor( private _program: ProgramView, @@ -70,6 +74,7 @@ export class SignatureHelpProvider { ) { this._parseResults = this._program.getParseResults(this._fileUri); this._sourceMapper = this._program.getSourceMapper(this._fileUri, this._token, /* mapCompiled */ true); + this._nodeInfo = getInfoReader(this._program); } getSignatureHelp(): SignatureHelp | undefined { @@ -105,7 +110,7 @@ export class SignatureHelpProvider { return undefined; } - let node = ParseTreeUtils.findNodeByOffset(this._parseResults.parserOutput.parseTree, offset); + let node = ParseTreeUtils.findNodeByOffset(this._parseResults.parserOutput.parseTree, offset, this._nodeInfo); // See if we can get to a "better" node by backing up a few columns. // A "better" node is defined as one that's deeper than the current @@ -122,7 +127,11 @@ export class SignatureHelpProvider { if (ch === ',' || ch === '(') { break; } - const curNode = ParseTreeUtils.findNodeByOffset(this._parseResults.parserOutput.parseTree, curOffset); + const curNode = ParseTreeUtils.findNodeByOffset( + this._parseResults.parserOutput.parseTree, + curOffset, + this._nodeInfo + ); if (curNode && curNode !== initialNode) { if (ParseTreeUtils.getNodeDepth(curNode) > initialDepth) { node = curNode; @@ -226,6 +235,22 @@ export class SignatureHelpProvider { } } + // Apply the cross-overload borrowed docstring to the active signature only, so an + // undocumented active overload still shows helpful body text while non-active overloads + // keep their own (or no) docstring. + // + // "Active" here is the active-parameter/no-args heuristic (plus any reused client + // selection), not a best-match-by-argument-types choice. Only the body prose is borrowed: + // parameter docs are intentionally never borrowed (they were extracted from this + // signature's own docstring in _makeSignature), so a borrowed sibling's :param: text is + // never attributed to a different overload's parameters. + if (activeSignature !== undefined && signatures[activeSignature].documentation === undefined) { + const borrowed = signatureHelpResults.signatures[activeSignature].borrowedDocumentation; + if (borrowed !== undefined) { + signatures[activeSignature].documentation = borrowed; + } + } + if (this._hasActiveParameterCapability || activeSignature === undefined) { // If there is no active parameter, then we want the client to not highlight anything. // Unfortunately, the LSP spec says that "undefined" or "out of bounds" values should be @@ -265,10 +290,15 @@ export class SignatureHelpProvider { let stringParts = this._evaluator.printFunctionParts(functionType, PrintTypeFlags.ExpandTypedDictArgs); stringParts = replaceStubEllipsisDefaultValues(functionType, stringParts, this._sourceMapper); const parameters: ParamInfo[] = []; + const ownDocString = getFunctionOwnDocString(functionType, this._sourceMapper); + // Full spec-ordered resolution (own -> implementation -> sibling overloads -> class-level + // fallback). This is only surfaced on the active signature (see _convert), so an undocumented + // active overload still shows helpful body text while non-active overloads keep their own doc. const functionDocString = + this._getConstructorDocString(callNode, functionType) ?? getFunctionDocStringFromType(functionType, this._sourceMapper, this._evaluator) ?? this._getDocStringFromCallNode(callNode); - const fileInfo = getFileInfo(callNode); + const fileInfo = getFileInfo(callNode, this._nodeInfo); const paramListDetails = getParamListDetails(functionType); let label = '('; @@ -338,13 +368,16 @@ export class SignatureHelpProvider { } } - // Extract the documentation only for the active parameter. + // Extract the documentation only for the active parameter. Use the signature's OWN docstring + // so an overload never surfaces a sibling overload's parameter documentation. This holds + // even for the active signature, which may borrow a sibling's body prose (in _convert) but + // never its parameter docs. if (activeParameter !== undefined) { const activeParam = parameters[activeParameter]; const sourceParam = getParamForPrintIndex(activeParameter); if (activeParam && sourceParam) { activeParam.documentation = this._docStringService.extractParameterDocumentation( - functionDocString || '', + ownDocString || '', sourceParam.name || '', this._format ); @@ -357,26 +390,31 @@ export class SignatureHelpProvider { activeParameter, }; + if (ownDocString) { + sigInfo.documentation = this._formatDocString(ownDocString, fileInfo?.fileUri); + } + if (functionDocString) { - if (this._format === MarkupKind.Markdown) { - sigInfo.documentation = { - kind: MarkupKind.Markdown, - value: this._docStringService.convertDocStringToMarkdown( - functionDocString, - isBuiltInModule(fileInfo?.fileUri) - ), - }; - } else { - sigInfo.documentation = { - kind: MarkupKind.PlainText, - value: this._docStringService.convertDocStringToPlainText(functionDocString), - }; - } + sigInfo.borrowedDocumentation = this._formatDocString(functionDocString, fileInfo?.fileUri); } return sigInfo; } + private _formatDocString(docString: string, fileUri: Uri | undefined): MarkupContent { + if (this._format === MarkupKind.Markdown) { + return { + kind: MarkupKind.Markdown, + value: this._docStringService.convertDocStringToMarkdown(docString, isBuiltInModule(fileUri)), + }; + } + + return { + kind: MarkupKind.PlainText, + value: this._docStringService.convertDocStringToPlainText(docString), + }; + } + private _getWrappedFunctionType(callNode: CallNode, functionType: FunctionType): FunctionType | undefined { // Try to get the declaration from the function type first let decl = functionType.shared.declaration; @@ -457,6 +495,23 @@ export class SignatureHelpProvider { return undefined; } + private _getConstructorDocString(callNode: CallNode, functionType: FunctionType): string | undefined { + // For a construction expression, resolve the constructor docstring through the unified + // component so signature help agrees with hover. + const classType = getTypeForToolTip(this._evaluator, callNode.d.leftExpr); + if (!isInstantiableClass(classType)) { + return undefined; + } + + return getConstructorDocInfo( + classType, + functionType, + /* resolvedDecl */ undefined, + this._sourceMapper, + this._evaluator + )?.text; + } + private _getDocStringFromCallNode(callNode: CallNode): string | undefined { // This is a heuristic to see whether we can get some docstring // from call node when all other methods failed. @@ -504,6 +559,7 @@ interface ParamInfo { interface SignatureInfo { label: string; documentation?: MarkupContent | undefined; + borrowedDocumentation?: MarkupContent | undefined; parameters?: ParamInfo[] | undefined; activeParameter?: number | undefined; } diff --git a/packages/pyright-internal/src/languageService/symbolIndexer.ts b/packages/pyright-internal/src/languageService/symbolIndexer.ts index 4a42e9b81fa2..cf2f7b097b0b 100644 --- a/packages/pyright-internal/src/languageService/symbolIndexer.ts +++ b/packages/pyright-internal/src/languageService/symbolIndexer.ts @@ -69,6 +69,7 @@ export class SymbolIndexer { fileInfo: AnalyzerFileInfo, parseResults: ParseFileResults, indexOptions: IndexOptions, + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader, token: CancellationToken ): IndexSymbolData[] { // Here are the rule of what symbols are indexed for a file. @@ -85,6 +86,7 @@ export class SymbolIndexer { parseResults.parserOutput.parseTree, indexOptions, indexSymbolData, + nodeInfo, token ); @@ -98,11 +100,12 @@ function collectSymbolIndexData( node: AnalyzerNodeInfo.ScopedNode, indexOptions: IndexOptions, indexSymbolData: IndexSymbolData[], + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader, token: CancellationToken ) { throwIfCancellationRequested(token); - const scope = AnalyzerNodeInfo.getScope(node); + const scope = AnalyzerNodeInfo.getScope(node, nodeInfo); if (!scope) { return; } @@ -139,6 +142,7 @@ function collectSymbolIndexData( isVisibleExternally(symbol), name, indexSymbolData, + nodeInfo, token ); }); @@ -152,6 +156,7 @@ function collectSymbolIndexDataForName( externallyVisible: boolean, name: string, indexSymbolData: IndexSymbolData[], + nodeInfo: AnalyzerNodeInfo.AnalyzerNodeInfoReader, token: CancellationToken ) { const symbolKind = getSymbolKind(declaration, undefined, name); @@ -164,7 +169,7 @@ function collectSymbolIndexDataForName( const children: IndexSymbolData[] = []; if (declaration.type === DeclarationType.Class || declaration.type === DeclarationType.Function) { - collectSymbolIndexData(fileInfo, parseResults, declaration.node, indexOptions, children, token); + collectSymbolIndexData(fileInfo, parseResults, declaration.node, indexOptions, children, nodeInfo, token); range = convertOffsetsToRange( declaration.node.start, diff --git a/packages/pyright-internal/src/languageService/tooltipUtils.ts b/packages/pyright-internal/src/languageService/tooltipUtils.ts index f29f04206b7a..47a1a32e8d18 100644 --- a/packages/pyright-internal/src/languageService/tooltipUtils.ts +++ b/packages/pyright-internal/src/languageService/tooltipUtils.ts @@ -14,15 +14,15 @@ import * as ParseTreeUtils from '../analyzer/parseTreeUtils'; import { isStubFile, SourceMapper } from '../analyzer/sourceMapper'; import { Symbol } from '../analyzer/symbol'; import { + FunctionDocStringInfo, getClassDocString, getFunctionDocStringFromDeclarationInfo, - getFunctionDocStringInheritedInfo, getModuleDocString, getModuleDocStringFromUris, - getOverloadedDocStrings, - getOverloadedDocStringsInherited, getPropertyDocStringInherited, getVariableDocString, + resolveConstructorDocInfo, + resolveMethodDocInfo, } from '../analyzer/typeDocStringUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { MemberAccessFlags, lookUpClassMember } from '../analyzer/typeUtils'; @@ -35,6 +35,7 @@ import { TypeCategory, UnknownType, combineTypes, + isClass, isClassInstance, isFunction, isFunctionOrOverloaded, @@ -43,7 +44,6 @@ import { isOverloaded, } from '../analyzer/types'; import { SignatureDisplayType } from '../common/configOptions'; -import { isDefined } from '../common/core'; import { ArgCategory, CallNode, @@ -332,49 +332,73 @@ interface DocumentationPartInfo { sourceDecl?: Declaration; } -function getFunctionDocStringFromTypeInfo(type: FunctionType, sourceMapper: SourceMapper, evaluator: TypeEvaluator) { - const decl = type.shared.declaration; +// Resolve a constructor-call docstring in spec order: Phase 1 = constructor-method docstrings +// across the MRO (resolveConstructorDocInfo), Phase 2 = the class docstring. `methodType` is the +// call-narrowed constructor whose overloads are the matched-overload hint for Rule A. +export function getConstructorDocInfo( + classType: ClassType, + methodType: FunctionType | OverloadedType, + resolvedDecl: Declaration | undefined, + sourceMapper: SourceMapper, + evaluator: TypeEvaluator +): DocumentationPartInfo | undefined { + const matchedOverloads = isOverloaded(methodType) ? OverloadedType.getOverloads(methodType) : [methodType]; - const enclosingClass = decl ? ParseTreeUtils.getEnclosingClass(decl.node) : undefined; - const classResults = enclosingClass ? evaluator.getTypeOfClass(enclosingClass) : undefined; + const ctorInfo = resolveConstructorDocInfo(classType, matchedOverloads, sourceMapper, evaluator); + if (ctorInfo?.docString) { + return { + text: ctorInfo.docString, + sourceDecl: ctorInfo.sourceDecl ?? resolvedDecl, + forceLiteral: ctorInfo.forceLiteral, + }; + } - const docInfo = getFunctionDocStringInheritedInfo(type, decl, sourceMapper, classResults?.classType); - return docInfo - ? { text: docInfo.docString, sourceDecl: docInfo.sourceDecl, forceLiteral: docInfo.forceLiteral } - : undefined; + const classDoc = getClassDocString(classType, resolvedDecl, sourceMapper); + return classDoc ? { text: classDoc, sourceDecl: resolvedDecl } : undefined; } -export function getOverloadedDocStringsFromType( - type: OverloadedType, +function getFunctionDocStringFromTypeInfo( + type: FunctionType, sourceMapper: SourceMapper, evaluator: TypeEvaluator -) { - const overloads = OverloadedType.getOverloads(type); - if (overloads.length === 0) { - return []; +): DocumentationPartInfo | undefined { + // A @functools.wraps-decorated function surfaces the wrapped function's docstring + // (matches the async pylance path). Single-level: pull the docstring from the wrapped + // function itself without recursively re-applying @wraps. + const decl = type.shared.declaration; + if (decl && decl.type === DeclarationType.Function) { + const wrappedType = getWrappedFunctionType(decl, evaluator); + if (wrappedType) { + const wrappedDoc = + wrappedType.shared.docString ?? + (wrappedType.shared.declaration + ? getFunctionDocStringFromDeclarationInfo(wrappedType.shared.declaration, sourceMapper)?.docString + : undefined); + if (wrappedDoc) { + return { text: wrappedDoc, sourceDecl: decl }; + } + } } - const resolvedDecls = overloads.map((o) => o.shared.declaration).filter(isDefined); - - // Synthesized overloads (e.g. from a Callable[P, T] decorator applied to an overloaded - // function) have their declarations cleared by applyParamSpecValue. Fall back to reading - // shared.docString directly since it is copied from the original overloads. - if (resolvedDecls.length === 0) { - return getOverloadedDocStrings(type, undefined, sourceMapper) ?? []; - } + const docInfo = getMethodDocInfo(type, sourceMapper, evaluator); + return docInfo + ? { text: docInfo.docString, sourceDecl: docInfo.sourceDecl, forceLiteral: docInfo.forceLiteral } + : undefined; +} - const decl = resolvedDecls[0] as FunctionDeclaration; - const enclosingClass = ParseTreeUtils.getEnclosingClass(decl.node); +// Resolve a function/method/overloaded docstring via the unified spec-ordered component. The +// matched-overload hint is the (possibly call-narrowed) type's overload set; the class used for +// MRO inheritance is the enclosing class of the member's declaration. +function getMethodDocInfo( + type: FunctionType | OverloadedType, + sourceMapper: SourceMapper, + evaluator: TypeEvaluator +): FunctionDocStringInfo | undefined { + const overloads = isOverloaded(type) ? OverloadedType.getOverloads(type) : [type]; + const decl = overloads.length > 0 ? overloads[0].shared.declaration : undefined; + const enclosingClass = decl ? ParseTreeUtils.getEnclosingClass(decl.node) : undefined; const classResults = enclosingClass ? evaluator.getTypeOfClass(enclosingClass) : undefined; - - return getOverloadedDocStringsInherited( - type, - resolvedDecls, - sourceMapper, - evaluator, - - classResults?.classType - ); + return resolveMethodDocInfo(type, classResults?.classType, overloads, sourceMapper, evaluator); } export function getDocumentationPartForTypeAlias( @@ -442,31 +466,86 @@ function getDocumentationPartForTypeInfo( if (doc) { return { text: doc, sourceDecl: resolvedDecl }; } - } else if (isFunction(type)) { - const functionType = boundObjectOrClass - ? evaluator.bindFunctionToClassOrObject(boundObjectOrClass, type) - : type; - if (functionType && isFunction(functionType)) { - const docInfo = getFunctionDocStringFromTypeInfo(functionType, sourceMapper, evaluator); + } else if (isFunction(type) || isOverloaded(type)) { + const boundType = boundObjectOrClass ? evaluator.bindFunctionToClassOrObject(boundObjectOrClass, type) : type; + if (boundType && isFunction(boundType)) { + // Route single functions through getFunctionDocStringFromTypeInfo so a + // @functools.wraps-decorated function surfaces the wrapped function's docstring. + const docInfo = getFunctionDocStringFromTypeInfo(boundType, sourceMapper, evaluator); if (docInfo) { return docInfo; } - } - } else if (isOverloaded(type)) { - const functionType = boundObjectOrClass - ? evaluator.bindFunctionToClassOrObject(boundObjectOrClass, type) - : type; - if (functionType && isOverloaded(functionType)) { - const doc = getOverloadedDocStringsFromType(functionType, sourceMapper, evaluator).find((d) => d); - - if (doc) { - return { text: doc, sourceDecl: resolvedDecl }; + } else if (boundType && isOverloaded(boundType)) { + const docInfo = getMethodDocInfo(boundType, sourceMapper, evaluator); + if (docInfo) { + return { + text: docInfo.docString, + sourceDecl: docInfo.sourceDecl ?? resolvedDecl, + forceLiteral: docInfo.forceLiteral, + }; } } } return undefined; } +// Last-resort fallback for a callable-instance variable/attribute whose own docstring is empty: +// surface its __call__ docstring (method rules), consistent with the __call__ signature already +// shown for such values. A plain (non-callable) instance has NO type-docstring fallback — a +// variable/attribute is a value reference, so its declared type's class docstring (which is about +// the type, not the reference) is intentionally not shown. Builtin instance types are excluded. +function getCallableInstanceDocInfo( + sourceMapper: SourceMapper, + type: Type, + resolvedDecl: Declaration | undefined, + evaluator: TypeEvaluator +): DocumentationPartInfo | undefined { + if (!isClassInstance(type) || resolvedDecl?.type !== DeclarationType.Variable || ClassType.isBuiltIn(type)) { + return undefined; + } + + // Only surface the __call__ fallback for source-defined user callables. A stub-defined library + // callable held in a variable (e.g. `handler = SomeLibCallable()`) would otherwise dump its full + // library __call__ docstring on plain variable hover. + const classDeclUri = type.shared.declaration?.uri; + if (!classDeclUri || isStubFile(classDeclUri)) { + return undefined; + } + + const callMember = lookUpClassMember(type, '__call__'); + if (!callMember) { + return undefined; + } + + // lookUpClassMember consults the metaclass first, so a class with a custom metaclass can + // surface the metaclass's (or type's) __call__ even when the instance itself is not callable. + // Only treat __call__ as a callable-instance fallback when it is defined within the instance + // type's own MRO. + const callDefiningClass = callMember.classType; + if ( + !isClass(callDefiningClass) || + !type.shared.mro.some( + (mroClass) => isClass(mroClass) && ClassType.isSameGenericClass(mroClass, callDefiningClass) + ) + ) { + return undefined; + } + + const callType = evaluator.getTypeOfMember(callMember); + if (!isFunction(callType) && !isOverloaded(callType)) { + return undefined; + } + + const docInfo = getMethodDocInfo(callType, sourceMapper, evaluator); + return docInfo?.docString + ? { + text: docInfo.docString, + sourceDecl: docInfo.sourceDecl ?? resolvedDecl, + forceLiteral: docInfo.forceLiteral, + } + : undefined; +} + export function getDocumentationPartsForTypeAndDeclWithSource( sourceMapper: SourceMapper, type: Type | undefined, @@ -537,6 +616,13 @@ export function getDocumentationPartsForTypeAndDeclWithSource( ? getDocumentationPartForTypeInfo(sourceMapper, type, resolvedDecl, evaluator, optional?.boundObjectOrClass) : undefined); + // Spec: a callable-instance variable/attribute with no assignment/member docstring and no + // type-level doc surfaces its __call__ docstring (method rules). Plain value references get + // no type-docstring fallback. + if (!aliasDoc && !typeDoc && type) { + typeDoc = getCallableInstanceDocInfo(sourceMapper, type, resolvedDecl, evaluator); + } + // Combine with a new line if they both exist if (aliasDoc && typeDoc) { if (aliasDoc !== typeDoc.text) { diff --git a/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts b/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts index b18f84b289c9..e8a3adff15b0 100644 --- a/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts +++ b/packages/pyright-internal/src/languageService/workspaceSymbolProvider.ts @@ -7,7 +7,7 @@ */ import { CancellationToken, Location, ResultProgressReporter, SymbolInformation } from 'vscode-languageserver'; -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { getInfoReader, getFileInfo } from '../analyzer/analyzerNodeInfo'; import { isUserCode } from '../analyzer/sourceFileInfoUtils'; import { throwIfCancellationRequested } from '../common/cancellationUtils'; import { appendArray } from '../common/collectionUtils'; @@ -64,7 +64,8 @@ export class WorkspaceSymbolProvider { return symbolList; } - const fileInfo = getFileInfo(parseResults.parserOutput.parseTree); + const nodeInfo = getInfoReader(program); + const fileInfo = getFileInfo(parseResults.parserOutput.parseTree, nodeInfo); if (!fileInfo) { return symbolList; } @@ -73,6 +74,7 @@ export class WorkspaceSymbolProvider { fileInfo, parseResults, { includeAliases: false }, + nodeInfo, this._token ); this.appendWorkspaceSymbolsRecursive(indexSymbolData, program, fileUri, '', symbolList); diff --git a/packages/pyright-internal/src/localization/localize.ts b/packages/pyright-internal/src/localization/localize.ts index 34fb7fb15932..9c24ac2b4c1c 100644 --- a/packages/pyright-internal/src/localization/localize.ts +++ b/packages/pyright-internal/src/localization/localize.ts @@ -1658,6 +1658,12 @@ export namespace Localizer { ); } + export namespace CallHierarchy { + export const library = () => getRawString('CallHierarchy.library'); + export const standardLibrary = () => getRawString('CallHierarchy.standardLibrary'); + export const workspace = () => getRawString('CallHierarchy.workspace'); + } + export namespace CodeAction { export const createTypeStub = () => getRawString('CodeAction.createTypeStub'); export const createTypeStubFor = () => diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index 230553aa6f05..cc38582f5772 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Vytvořit zástupnou proceduru (Stub) typu", "createTypeStubFor": "Vytvořit zástupnou proceduru typu (Stub) pro modul {moduleName}", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Zablokovaná třída nemůže dědit z třídy, která není zablokovaná", "dataClassConverterFunction": "Argument typu {argType} není platný převaděč pro pole {fieldName} typu {fieldType}", "dataClassConverterOverloads": "Žádná přetížení {funcName} nejsou platné převaděče pro pole {fieldName} typu {fieldType}", + "dataClassDuplicateKwOnly": "„{name}“ je duplicitní oddělovač KW_ONLY; V rámci třídy dataclass je povolen pouze jeden.", "dataClassFieldInheritedDefault": "{fieldName} přepíše pole se stejným názvem, ale chybí mu výchozí hodnota.", "dataClassFieldWithDefault": "Pole bez výchozích hodnot se nemůžou zobrazit po polích s výchozími hodnotami", "dataClassFieldWithPrivateName": "Pole datové třídy nemůže používat privátní název", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Argumenty klíčových slov v dolních indexech nejsou podporovány", "lambdaReturnTypePartiallyUnknown": "Návratový typ lambda {returnType} je částečně neznámý", "lambdaReturnTypeUnknown": "Návratový typ výrazu lambda je neznámý", + "lazyImportIllegal": "Příkaz pro „lazy“ import vyžaduje Python 3.15 nebo novější", + "lazyImportWildcardIllegal": "Importy se zástupnými znaky se nedají použít s „lazy“", "listAssignmentMismatch": "Výraz s typem {type} se nedá přiřadit k cílovému seznamu", "listInAnnotation": "Výraz List není ve výrazu typu povolený.", "literalEmptyArgs": "Za literálem (Literal) se očekával jeden nebo více argumentů typu.", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "Odchylka argumentu typu „{typeVarName}“ není kompatibilní se základní třídou „{className}“", "varianceMismatchForTypeAlias": "Rozptyl argumentu typu „{typeVarName}“ není kompatibilní s typem „{typeAliasParam}“" }, + "Rename": { + "cannotRenameNonUserCode": "Symbol {symbolName} nejde přejmenovat, protože je také deklarovaný v neupravitelném kódu (knihovně nebo souboru zástupné procedury), který se nedá upravit. Dokončení přejmenování by vedlo k tomu, že by symbol „{symbolName}“ byl přejmenován jen částečně. Nejprve vyřešte konfliktní deklarace:\r\n{locations}" + }, "Service": { "longOperation": "Výčet zdrojových souborů pracovního prostoru trvá dlouho. Zvažte raději otevření podsložky. [Další informace](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index b8bed3ed3b3b..fe8f3b9a7a13 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Type Stub erstellen", "createTypeStubFor": "Type Stub für \"{moduleName}\" erstellen", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Eine fixierte Klasse kann nicht von einer nicht fixierten Klasse erben.", "dataClassConverterFunction": "Das Argument vom Typ \"{argType}\" ist kein gültiger Konverter für das Feld \"{fieldName}\" vom Typ \"{fieldType}\"", "dataClassConverterOverloads": "Keine Überladungen von \"{funcName}\" sind gültige Konverter für das Feld \"{fieldName}\" vom Typ \"{fieldType}\"", + "dataClassDuplicateKwOnly": "„{name}“ ist ein doppeltes KW_ONLY Trennzeichen; Innerhalb einer Datenklasse ist nur eine zulässig", "dataClassFieldInheritedDefault": "„{fieldName}“ überschreibt ein Feld mit demselben Namen, aber es fehlt ein Standardwert", "dataClassFieldWithDefault": "Felder ohne Standardwerte dürfen nicht nach Feldern mit Standardwerten angezeigt werden.", "dataClassFieldWithPrivateName": "Das Feld \"Dataclass\" kann keinen privaten Namen verwenden.", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Schlüsselwortargumente innerhalb von Tiefskripts werden nicht unterstützt.", "lambdaReturnTypePartiallyUnknown": "Der Rückgabetyp des Lambdaausdrucks \"{returnType}\" ist teilweise unbekannt.", "lambdaReturnTypeUnknown": "Der Rückgabetyp der Lambdafunktion ist unbekannt.", + "lazyImportIllegal": "Für eine verzögerte Importanweisung ist Python 3.15 oder höher erforderlich.", + "lazyImportWildcardIllegal": "Platzhalterimporte können nicht mit „lazy“ verwendet werden.", "listAssignmentMismatch": "Ein Ausdruck vom Typ \"{type}\" kann der Zielliste nicht zugewiesen werden.", "listInAnnotation": "Der Listenausdruck ist im Typausdruck nicht zulässig", "literalEmptyArgs": "Nach \"Literal\" wurde mindestens ein Typargument erwartet.", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "Die Varianz des Typarguments \"{typeVarName}\" ist nicht mit der Basisklasse \"{className}\" kompatibel", "varianceMismatchForTypeAlias": "Die Varianz des Typarguments \"{typeVarName}\" ist nicht mit \"{typeAliasParam}\" kompatibel" }, + "Rename": { + "cannotRenameNonUserCode": "„{symbolName}“ kann nicht umbenannt werden, da es auch in nicht bearbeitbarem Code deklariert ist, etwa in einer Bibliothek oder einer Stubdatei, der nicht geändert werden kann. Nach Abschluss der Umbenennung wäre „{symbolName}“ nur teilweise umbenannt. Lösen Sie zuerst die Konflikte bei den folgenden Deklarationen:\r\n{locations}" + }, "Service": { "longOperation": "Das Aufzählen von Arbeitsbereichsquelldateien nimmt viel Zeit in Anspruch. Erwägen Sie stattdessen, einen Unterordner zu öffnen. [Weitere Informationen](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.en-us.json b/packages/pyright-internal/src/localization/package.nls.en-us.json index 69d6957c61c9..7c78dbc2d920 100644 --- a/packages/pyright-internal/src/localization/package.nls.en-us.json +++ b/packages/pyright-internal/src/localization/package.nls.en-us.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": { "message": "Create Type Stub", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index cc5cf1100549..6615f9b406d2 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Crear Tipo Stub", "createTypeStubFor": "Crear Tipo Stub Para \"{moduleName}\"", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Una clase congelada no puede heredar de una clase que no esté congelada", "dataClassConverterFunction": "Argumento de tipo \"{argType}\" no es un convertidor válido para el campo \"{fieldName}\" de tipo \"{fieldType}\"", "dataClassConverterOverloads": "No hay sobrecargas de \"{funcName}\" que sean convertidores válidos para el campo \"{fieldName}\" de tipo \"{fieldType}\"", + "dataClassDuplicateKwOnly": "\"{name}\" es un separador de KW_ONLY duplicado; solo se permite una dentro de una clase de datos", "dataClassFieldInheritedDefault": "\"{fieldName}\" invalida un campo con el mismo nombre, pero falta un valor predeterminado", "dataClassFieldWithDefault": "Los campos sin valores predeterminados no pueden aparecer después de los campos con valores predeterminados", "dataClassFieldWithPrivateName": "El campo Dataclass no puede utilizar un nombre privado", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "No se admiten argumentos de palabra clave dentro de subíndices", "lambdaReturnTypePartiallyUnknown": "El tipo de retorno de la lambda \"{returnType}\" es parcialmente desconocido.", "lambdaReturnTypeUnknown": "Se desconoce el tipo de retorno de la lambda", + "lazyImportIllegal": "La instrucción de importación diferida requiere Python 3.15 o posterior", + "lazyImportWildcardIllegal": "Las importaciones de caracteres comodín no se pueden usar con \"lazy\"", "listAssignmentMismatch": "La expresión con el tipo \"{type}\" no puede asignarse a la lista de destino", "listInAnnotation": "No se permite la expresión de List en la expresión de tipo", "literalEmptyArgs": "Se esperaban uno o varios argumentos de tipo después de \"Literal\"", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "La varianza del argumento de tipo \"{typeVarName}\" no es compatible con la clase base \"{className}\"", "varianceMismatchForTypeAlias": "La varianza del argumento de tipo \"{typeVarName}\" no es compatible con \"{typeAliasParam}\"" }, + "Rename": { + "cannotRenameNonUserCode": "No se puede cambiar el nombre de \"{symbolName}\" porque también se declara en código no editable (un archivo de código auxiliar o biblioteca) que no se puede modificar. Al completar el cambio de nombre, se dejará \"{symbolName}\" parcialmente cambiado. Resuelva primero las declaraciones en conflicto:\r\n{locations}" + }, "Service": { "longOperation": "La enumeración de los archivos de origen del área de trabajo está tardando mucho tiempo. Considere la posibilidad de abrir una subcarpeta en su lugar. [Más información](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 7ab15681c38c..4388506ad5b5 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Créer un Stub de type", "createTypeStubFor": "Créer un Stub de type pour « {moduleName} »", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Une classe figée ne peut pas hériter d’une classe qui n’est pas figée", "dataClassConverterFunction": "L’argument de type « {argType} » n’est pas un convertisseur valide pour le champ « {fieldName} » de type « {fieldType} »", "dataClassConverterOverloads": "Aucune surcharge de « {funcName} » n’est valide pour le champ « {fieldName} » de type « {fieldType} »", + "dataClassDuplicateKwOnly": "« {name} » est un séparateur KW_ONLY dupliqué; un seul est autorisé dans une classe de données", "dataClassFieldInheritedDefault": "« {fieldName} » remplace un champ du même nom mais n’a pas de valeur par défaut", "dataClassFieldWithDefault": "Les champs sans valeurs par défaut ne peuvent pas apparaître après les champs avec des valeurs par défaut", "dataClassFieldWithPrivateName": "Le champ Dataclass ne peut pas utiliser de nom privé", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Les arguments de mot-clé dans les indices ne sont pas pris en charge", "lambdaReturnTypePartiallyUnknown": "Le type de retour de lambda, « {returnType} », est partiellement inconnu", "lambdaReturnTypeUnknown": "Le type de retour de lambda est inconnu", + "lazyImportIllegal": "L’utilisation de la syntaxe d’importation différée nécessite Python 3.15 ou une version plus récente", + "lazyImportWildcardIllegal": "Les importations de caractères génériques ne peuvent pas être utilisées avec « lazy »", "listAssignmentMismatch": "Impossible d’affecter l’expression de type « {type} » à la liste cible", "listInAnnotation": "Expression de List non autorisée dans l’expression de type", "literalEmptyArgs": "Attendu un ou plusieurs arguments de type après \"Literal\"", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "La variance de l'argument de type \"{typeVarName}\" est incompatible avec la classe de base \"{className}\"", "varianceMismatchForTypeAlias": "La variance de l'argument de type \"{typeVarName}\" est incompatible avec \"{typeAliasParam}\"" }, + "Rename": { + "cannotRenameNonUserCode": "Nous ne pouvons pas renommer « {symbolName} », car il est également déclaré dans du code non modifiable (une bibliothèque ou un fichier stub) qui ne peut pas être modifié. Terminer le changement de nom laisserait « {symbolName} » partiellement renommé. Résolvez d’abord la ou les déclarations en conflit :\r\n{locations}" + }, "Service": { "longOperation": "L’énumération des fichiers sources de l’espace de travail prend beaucoup de temps. Envisagez plutôt d’ouvrir un sous-dossier. [En savoir plus](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index 03036d604c67..1017860b7588 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Crea Stub di tipo", "createTypeStubFor": "Crea Stub di tipo per \"{moduleName}\"", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Una classe bloccata non può ereditare da una classe non bloccata", "dataClassConverterFunction": "L'argomento di tipo \"{argType}\" non è un convertitore valido per il campo \"{fieldName}\" di tipo \"{fieldType}\"", "dataClassConverterOverloads": "Nessun overload di \"{funcName}\" è un convertitore valido per il campo \"{fieldName}\" di tipo \"{fieldType}\"", + "dataClassDuplicateKwOnly": "\"{name}\" è un separatore KW_ONLY duplicato; ne è consentito solo uno all'interno di una dataclass", "dataClassFieldInheritedDefault": "\"{fieldName}\" esegue l'override di un campo con lo stesso nome, ma manca un valore predefinito", "dataClassFieldWithDefault": "I campi senza valori predefiniti non possono essere visualizzati dopo i campi con valori predefiniti", "dataClassFieldWithPrivateName": "Il campo dataclass non può usare un nome privato", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Gli argomenti delle parole chiave all'interno di pedici non sono supportati", "lambdaReturnTypePartiallyUnknown": "Il tipo restituito dell'espressione lambda \"{returnType}\" è parzialmente sconosciuto", "lambdaReturnTypeUnknown": "Il tipo restituito di lambda è sconosciuto", + "lazyImportIllegal": "L'istruzione di importazione lazy richiede Python 3.15 o versione successiva", + "lazyImportWildcardIllegal": "Le importazioni con caratteri jolly non possono essere usate con \"lazy\"", "listAssignmentMismatch": "Non è possibile assegnare l'espressione con tipo \"{type}\" all'elenco di destinazione", "listInAnnotation": "Espressione List non consentita nell'espressione type", "literalEmptyArgs": "Sono previsti uno o più argomenti di tipo dopo \"Literal\"", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "La varianza dell'argomento tipo \"{typeVarName}\" non è compatibile con la classe di base \"{className}\"", "varianceMismatchForTypeAlias": "La varianza dell'argomento tipo \"{typeVarName}\" non è compatibile con \"{typeAliasParam}\"" }, + "Rename": { + "cannotRenameNonUserCode": "Non è possibile rinominare \"{symbolName}\" perché è anche dichiarato in codice non modificabile (una libreria o un file stub) che non può essere modificato. Completare la ridenominazione lascerebbe \"{symbolName}\" parzialmente rinominato. Risolvere prima le dichiarazioni in conflitto:\r\n{locations}" + }, "Service": { "longOperation": "L’enumerazione dei file di origine dell’area di lavoro sta richiedendo tempo. Provare ad aprire una sottocartella. [Altre informazioni](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 0aeeb96f5efb..af1ef85bfc02 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "型 Stub を作成する", "createTypeStubFor": "\"{moduleName}\" の型 Stub を作成する", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "固定されたクラスは、固定されていないクラスから継承できません", "dataClassConverterFunction": "型 \"{argType}\" の引数は、型 \"{fieldType}\" のフィールド \"{fieldName}\" の有効なコンバーターではありません", "dataClassConverterOverloads": "{funcName}\" のオーバーロードは、型 \"{fieldType}\" のフィールド \"{fieldName}\" に対して有効なコンバーターではありません", + "dataClassDuplicateKwOnly": "\"{name}\" は重複する KW_ONLY 区切りです。データクラス内で許可されるのは 1 つだけです", "dataClassFieldInheritedDefault": "\"{fieldName}\" は同じ名前のフィールドをオーバーライドしますが、既定値がありません", "dataClassFieldWithDefault": "既定値のないフィールドは、既定値を持つフィールドの後に表示できません", "dataClassFieldWithPrivateName": "データクラス フィールドはプライベート名を使用できません", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "添字内のキーワード引数はサポートされていません", "lambdaReturnTypePartiallyUnknown": "ラムダの戻り値の型、\"{returnType}\" が部分的に不明です", "lambdaReturnTypeUnknown": "ラムダの戻り値の型が不明です", + "lazyImportIllegal": "lazy import ステートメントには Python 3.15 以降が必要です", + "lazyImportWildcardIllegal": "ワイルドカード インポートを 'lazy' と共に使用することはできません", "listAssignmentMismatch": "型 \"{type}\" の式をターゲット リストに割り当てることはできません", "listInAnnotation": "List 式は型式では使用できません", "literalEmptyArgs": "\"Literal\" の後に 1 つ以上の型引数が必要です", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "型引数 \"{typeVarName}\" の分散は、基底クラス \"{className}\" と互換性がありません", "varianceMismatchForTypeAlias": "型引数 \"{typeVarName}\" の分散は \"{typeAliasParam}\" と互換性がありません" }, + "Rename": { + "cannotRenameNonUserCode": "\"{symbolName}\" は、変更できない編集できないコード (ライブラリまたはスタブ ファイル) でも宣言されているため、名前を変更できません。名前の変更を完了すると、\"{symbolName}\" の名前が部分的に変更されたままになります。競合する宣言を最初に解決してください:\r\n{locations}" + }, "Service": { "longOperation": "ワークスペース ソース ファイルの列挙に時間がかかっています。代わりにサブフォルダーを開く方法を検討してください。[詳細情報](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 81e5172e4c4d..f84705a7a6eb 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "형식 Stub 만들기", "createTypeStubFor": "\"{moduleName}\"에 대한 형식 Stub 만들기", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "고정 클래스는 고정되지 않은 클래스에서 상속할 수 없습니다.", "dataClassConverterFunction": "\"{argType}\" 형식의 인수는 \"{fieldType}\" 형식의 \"{fieldName}\" 필드에 유효한 변환기가 아닙니다.", "dataClassConverterOverloads": "\"{funcName}\"의 오버로드는 \"{fieldType}\" 형식의 \"{fieldName}\" 필드에 유효한 변환기가 아닙니다.", + "dataClassDuplicateKwOnly": "\"{name}\"은(는) 중복된 KW_ONLY 구분 기호입니다. 데이터 클래스 내에서 하나만 사용할 수 있습니다.", "dataClassFieldInheritedDefault": "\"{fieldName}\"이(가) 같은 이름의 필드를 재정의하지만 기본값이 없음", "dataClassFieldWithDefault": "기본값이 없는 필드는 기본값이 있는 필드 뒤에 나타날 수 없습니다.", "dataClassFieldWithPrivateName": "데이터 클래스 필드는 프라이빗 이름을 사용할 수 없습니다.", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "아래 첨자 내의 키워드 인수는 지원되지 않습니다.", "lambdaReturnTypePartiallyUnknown": "람다의 반환 형식 \"{returnType}\"을(를) 부분적으로 알 수 없습니다.", "lambdaReturnTypeUnknown": "람다의 반환 형식을 알 수 없습니다.", + "lazyImportIllegal": "지연 가져오기 문에는 Python 3.15 이상 필요", + "lazyImportWildcardIllegal": "와일드카드 가져오기는 'lazy'와 함께 사용할 수 없습니다.", "listAssignmentMismatch": "형식이 \"{type}\"인 식을 대상 목록에 할당할 수 없습니다.", "listInAnnotation": "형식 식에는 List 식을 사용할 수 없습니다.", "literalEmptyArgs": "‘Literal’ 뒤에 하나 이상의 형식 인수가 필요합니다.", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "‘{typeVarName}’ 형식 인수의 차이는 ‘{className}’ 기본 클래스와 호환되지 않습니다.", "varianceMismatchForTypeAlias": "‘{typeVarName}’ 형식 인수의 차이는 ‘{typeAliasParam}’와(과) 호환되지 않습니다." }, + "Rename": { + "cannotRenameNonUserCode": "\"{symbolName}\"은(는) 수정할 수 없는 편집할 수 없는 코드(라이브러리 또는 스텁 파일)에도 선언되어 있으므로 이름을 바꿀 수 없습니다. 이름 바꾸기를 완료하면 \"{symbolName}\"의 이름이 부분적으로 바뀝니다. 충돌하는 선언을 먼저 해결합니다.\r\n{locations}" + }, "Service": { "longOperation": "작업 영역 소스 파일을 열거하는 데는 시간이 오래 걸립니다. 대신 하위 폴더를 여는 것이 좋습니다. [자세히 알아보기](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index 61a55ef59b25..2f6d1757281a 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Utwórz typ zastępczy Stub", "createTypeStubFor": "Utwórz typ Stub dla „{moduleName}”", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Zamrożona klasa nie może dziedziczyć po klasie niezamrożonej", "dataClassConverterFunction": "Argument typu „{argType}” nie jest prawidłowym konwerterem pola „{fieldName}” typu „{fieldType}”", "dataClassConverterOverloads": "Żadne przeciążenia „{funcName}” nie są prawidłowymi konwerterami dla pola „{fieldName}” typu „{fieldType}”", + "dataClassDuplicateKwOnly": "„{name}” jest zduplikowanym separatorem KW_ONLY; w klasie danych dozwolony jest tylko jeden", "dataClassFieldInheritedDefault": "Pole „{fieldName}” zastępuje pole o tej samej nazwie, ale brakuje wartości domyślnej", "dataClassFieldWithDefault": "Pola bez wartości domyślnych nie mogą występować po polach z wartościami domyślnymi", "dataClassFieldWithPrivateName": "Pole klasy danych nie może używać nazwy prywatnej", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Argumenty słów kluczowych w indeksach podrzędnych nie są obsługiwane", "lambdaReturnTypePartiallyUnknown": "Zwracany typ wyrażenia lambda „{returnType}” jest częściowo nieznany", "lambdaReturnTypeUnknown": "Zwracany typ wyrażenia lambda jest nieznany", + "lazyImportIllegal": "Instrukcja importu z opóźnieniem wymaga języka Python 3.15 lub nowszego", + "lazyImportWildcardIllegal": "Importy z symbolami wieloznacznymi nie mogą być używane z „lazy”", "listAssignmentMismatch": "Wyrażenia typu „{type}” nie można przypisać do listy docelowej", "listInAnnotation": "Wyrażenie List jest niedozwolone w wyrażeniu typu", "literalEmptyArgs": "Oczekiwano co najmniej jednego argumentu typu po wartości „Literal”", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "Wariancja argumentu typu „{typeVarName}” jest niezgodna z klasą bazową „{className}”", "varianceMismatchForTypeAlias": "Wariancja argumentu typu „{typeVarName}” jest niezgodna z parametrem „{typeAliasParam}”" }, + "Rename": { + "cannotRenameNonUserCode": "Nie można zmienić nazwy symbolu „{symbolName}”, ponieważ jest on również zadeklarowany w kodzie nieedytowalnym (bibliotece lub pliku zastępczym), który nie może być modyfikowany. Ukończenie zmiany nazwy spowoduje, że nazwa symbolu „{symbolName}” zostanie częściowo zmieniona. Najpierw rozwiąż deklaracje powodujące konflikt:\r\n{locations}" + }, "Service": { "longOperation": "Wyliczanie plików źródłowych obszaru roboczego zajmuje dużo czasu. Zamiast tego rozważ otwarcie podfolderu. [Dowiedz się więcej](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.pt-br.json b/packages/pyright-internal/src/localization/package.nls.pt-br.json index 0febab0e25cb..a593c06a4032 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Criar Stub de Tipo", "createTypeStubFor": "Criar Stub de tipo para \"{moduleName}\"", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Uma classe congelada não pode herdar de uma classe que não está congelada", "dataClassConverterFunction": "O argumento do tipo \"{argType}\" não é um conversor válido para o campo \"{fieldName}\" do tipo \"{fieldType}\"", "dataClassConverterOverloads": "Nenhuma sobrecarga de \"{funcName}\" são conversores válidos para o campo \"{fieldName}\" do tipo \"{fieldType}\"", + "dataClassDuplicateKwOnly": "\"{name}\" é um separador KW_ONLY duplicado; somente um é permitido em uma classe de dados", "dataClassFieldInheritedDefault": "\"{fieldName}\" substitui um campo com o mesmo nome, mas não possui um valor padrão", "dataClassFieldWithDefault": "Campos sem valores padrão não podem aparecer após campos com valores padrão", "dataClassFieldWithPrivateName": "O campo Dataclass não pode usar o nome privado", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Não há suporte para argumentos de palavra-chave em subscritos", "lambdaReturnTypePartiallyUnknown": "O tipo de retorno de lambda, \"{returnType}\", é parcialmente desconhecido", "lambdaReturnTypeUnknown": "O tipo de retorno de lambda é desconhecido", + "lazyImportIllegal": "A instrução de importação tardia requer o Python 3.15 ou mais recente", + "lazyImportWildcardIllegal": "Importações curinga não podem ser usadas com 'lazy'", "listAssignmentMismatch": "A expressão com o tipo \"{type}\" não pode ser atribuída à lista de destino", "listInAnnotation": "Expressão de List não permitida na expressão de tipo", "literalEmptyArgs": "Um ou mais argumentos de tipo esperados após \"Literal\"", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "A variação do argumento de tipo \"{typeVarName}\" é incompatível com a classe base \"{className}\"", "varianceMismatchForTypeAlias": "A variação do argumento de tipo \"{typeVarName}\" é incompatível com \"{typeAliasParam}\"" }, + "Rename": { + "cannotRenameNonUserCode": "Não é possível renomear \"{symbolName}\" porque ele também é declarado em código não editável (uma biblioteca ou arquivo stub) que não pode ser modificado. Concluir a renomeação deixaria \"{symbolName}\" parcialmente renomeado. Resolva primeiro a(s) declaração(ões) conflitante(s) primeiro:\r\n{locations}" + }, "Service": { "longOperation": "A enumeração de arquivos de origem do espaço de trabalho está demorando muito. Em vez disso, considere abrir uma subpasta. [Saiba mais](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json index e086924f7fa9..8e12c34b3e63 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "[BRp1R][นั้£ïþrærÿẤğ倪นั้ढूँ]", + "standardLibrary": "[KyI3I][นั้§tæñðærð lïþrærÿẤğ倪İЂҰนั้ढूँ]", + "workspace": "[7NDuV][นั้WørkspæçëẤğ倪İนั้ढूँ]" + }, "CodeAction": { "createTypeStub": "[4i3uH][นั้Çrëætë Tÿpë StubẤğ倪İЂҰนั้ढूँ]", "createTypeStubFor": "[oXYb0][นั้Çrëætë Tÿpë Stub Før \"{møðµlëÑæmë}\"Ấğ倪İЂҰक्र्तिृまนั้ढूँ]", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "[KOz4K][นั้Æ frøzëñ çlæss çæññøt ïñhërït frøm æ çlæss thæt ïs ñøt frøzëñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "dataClassConverterFunction": "[FxD8r][นั้Ærgµmëñt øf tÿpë \"{ærgTÿpë}\" ïs ñøt æ vælïð çøñvërtër før fïëlð \"{fïëlðÑæmë}\" øf tÿpë \"{fïëlðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", "dataClassConverterOverloads": "[ZJ0SE][นั้Ñø øvërløæðs øf \"{fµñçÑæmë}\" ærë vælïð çøñvërtërs før fïëlð \"{fïëlðÑæmë}\" øf tÿpë \"{fïëlðTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", + "dataClassDuplicateKwOnly": "[tW8yV][นั้\"{ñæmë}\" ïs æ ðµplïçætë KW_ØÑ£Ý sëpærætør; øñlÿ øñë ïs ælløwëð wïthïñ æ ðætæçlæssẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "dataClassFieldInheritedDefault": "[BKxvn][นั้\"{fïëlðÑæmë}\" øvërrïðës æ fïëlð øf thë sæmë ñæmë þµt ïs mïssïñg æ ðëfæµlt vælµëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "dataClassFieldWithDefault": "[iJuju][นั้Fïëlðs wïthøµt ðëfæµlt vælµës çæññøt æppëær æftër fïëlðs wïth ðëfæµlt vælµësẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", "dataClassFieldWithPrivateName": "[miQYb][นั้Ðætæçlæss fïëlð çæññøt µsë prïvætë ñæmëẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "[khu47][นั้Këÿwørð ærgµmëñts wïthïñ sµþsçrïpts ærë ñøt sµppørtëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "lambdaReturnTypePartiallyUnknown": "[Z5ML1][นั้Rëtµrñ tÿpë øf læmþðæ, \"{rëtµrñTÿpë}\", ïs pærtïællÿ µñkñøwñẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "lambdaReturnTypeUnknown": "[h4icY][นั้Rëtµrñ tÿpë øf læmþðæ ïs µñkñøwñẤğ倪İЂҰक्र्तिृนั้ढूँ]", + "lazyImportIllegal": "[3keQl][นั้£æzÿ ïmpørt stætëmëñt rëqµïrës Pÿthøñ 3.15 ør ñëwërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", + "lazyImportWildcardIllegal": "[73LKr][นั้Wïlðçærð ïmpørts çæññøt þë µsëð wïth 'læzÿ'Ấğ倪İЂҰक्र्तिृまẤğ倪นั้ढूँ]", "listAssignmentMismatch": "[DZh64][นั้Ëxprëssïøñ wïth tÿpë \"{tÿpë}\" çæññøt þë æssïgñëð tø tærgët lïstẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]", "listInAnnotation": "[i5U8t][นั้List ëxprëssïøñ ñøt ælløwëð ïñ tÿpë ëxprëssïøñẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "literalEmptyArgs": "[VkrFm][นั้Ëxpëçtëð øñë ør mørë tÿpë ærgµmëñts æftër \"Literal\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "[fqhIl][นั้Værïæñçë øf tÿpë ærgµmëñt \"{tÿpëVærÑæmë}\" ïs ïñçømpætïþlë wïth þæsë çlæss \"{çlæssÑæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "varianceMismatchForTypeAlias": "[YSiVx][นั้Værïæñçë øf tÿpë ærgµmëñt \"{tÿpëVærÑæmë}\" ïs ïñçømpætïþlë wïth \"{tÿpëÆlïæsPæræm}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]" }, + "Rename": { + "cannotRenameNonUserCode": "[dWHyW][นั้Çæñ't rëñæmë \"{sÿmþølÑæmë}\" þëçæµsë ït ïs ælsø ðëçlærëð ïñ ñøñ-ëðïtæþlë çøðë (æ lïþrærÿ ør stµþ fïlë) thæt çæññøt þë møðïfïëð. Çømplëtïñg thë rëñæmë wøµlð lëævë \"{sÿmþølÑæmë}\" pærtïællÿ rëñæmëð. Rësølvë thë çøñflïçtïñg ðëçlærætïøñ(s) fïrst:Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृนั้ढूँ]\r\n[dWHyW][นั้{løçætïøñs}Ấğ倪İนั้ढूँ]" + }, "Service": { "longOperation": "[Mvrp3][นั้Ëñµmërætïøñ øf wørkspæçë søµrçë fïlës ïs tækïñg æ løñg tïmë. Çøñsïðër øpëñïñg æ sµþ-følðër ïñstëæð. [£ëærñ mørë](https://ækæ.ms/wørkspæçë-tøø-mæñÿ-fïlës)Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂนั้ढूँ]" } diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index e77519af69b9..689edbcda825 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Создать Stub типа", "createTypeStubFor": "Создать Stub типа для \"{moduleName}\"", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Незафиксированный класс не может наследоваться от зафиксированного класса", "dataClassConverterFunction": "Аргумент типа \"{argType}\" не является допустимым преобразователем для поля \"{fieldName}\" типа \"{fieldType}\"", "dataClassConverterOverloads": "Ни одна перегрузка \"{funcName}\" не является допустимым преобразователем поля \"{fieldName}\" типа \"{fieldType}\"", + "dataClassDuplicateKwOnly": "\"{name}\" — повторяющийся разделитель KW_ONLY; в dataclass допускается только один", "dataClassFieldInheritedDefault": "\"{fieldName}\" переопределяет поле с тем же именем, но в нем отсутствует значение по умолчанию", "dataClassFieldWithDefault": "Поля без значений по умолчанию не могут отображаться после полей со значениями по умолчанию.", "dataClassFieldWithPrivateName": "Поле класса данных не может использовать закрытое имя", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Аргументы ключевых слов в нижних индексах не поддерживаются", "lambdaReturnTypePartiallyUnknown": "Тип возвращаемого лямбдой значения \"{returnType}\" частично неизвестен", "lambdaReturnTypeUnknown": "Тип значения, возвращаемого лямбдой, неизвестен", + "lazyImportIllegal": "Оператор импорта lazy требует Python версии 3.15 или более поздней", + "lazyImportWildcardIllegal": "Импорты с подстановочными знаками нельзя использовать с \"lazy\"", "listAssignmentMismatch": "Выражение с типом \"{type}\" нельзя присвоить целевому списку", "listInAnnotation": "List выражение не разрешено в выражении типа", "literalEmptyArgs": "Ожидается один или несколько аргументов типа после \"Literal\"", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "Вариант аргумента типа \"{typeVarName}\" несовместим с базовым классом \"{className}\"", "varianceMismatchForTypeAlias": "Отклонение аргумента типа \"{typeVarName}\" несовместимо с \"{typeAliasParam}\"" }, + "Rename": { + "cannotRenameNonUserCode": "Невозможно переименовать \"{symbolName}\", так как этот символ также объявлен в коде, недоступном для редактирования (в библиотеке или файле-заглушке), который нельзя изменить. Завершение переименования приведет к тому, что \"{symbolName}\" будет переименован только частично. Сначала устраните конфликтующие объявления:\r\n{locations}" + }, "Service": { "longOperation": "Перечисление исходных файлов рабочей области занимает много времени. Вместо этого рассмотрите возможность открыть вложенную папку. [Подробнее](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index 8086b8da39e6..7d8a0306aa08 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "Create Type Stub", "createTypeStubFor": "Create Type Stub For \"{moduleName}\"", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "Dondurulmuş sınıf, dondurulmuş olmayan bir sınıftan devralamaz", "dataClassConverterFunction": "\"{argType}\" türündeki bağımsız değişken, \"{fieldName}\" türündeki \"{fieldType}\" alanı için geçerli bir dönüştürücü değil", "dataClassConverterOverloads": "\"{funcName}\" işlevinin aşırı yüklemelerinden hiçbiri \"{fieldType}\" türündeki \"{fieldName}\" alanı için geçerli dönüştürücüler değil", + "dataClassDuplicateKwOnly": "\"{name}\" yinelenen bir KW_ONLY ayırıcısıdır; bir veri sınıfı içinde yalnızca bir tane kullanılabilir", "dataClassFieldInheritedDefault": "\"{fieldName}\", aynı ada sahip bir alanı geçersiz kılıyor ancak varsayılan değeri yok", "dataClassFieldWithDefault": "Varsayılan değerleri olmayan alanlar, varsayılan değerleri olan alanlardan sonra gelemez", "dataClassFieldWithPrivateName": "Veri sınıfı alanı özel ad kullanamıyor", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "Alt simge içindeki anahtar sözcük bağımsız değişkenleri desteklenmiyor", "lambdaReturnTypePartiallyUnknown": "Lambdanın \"{returnType}\" dönüş türü kısmen bilinmiyor", "lambdaReturnTypeUnknown": "Lambdanın dönüş türü bilinmiyor", + "lazyImportIllegal": "Gecikmeli içeri aktarma deyimi için Python 3.15 veya daha yeni bir sürümü gerekiyor", + "lazyImportWildcardIllegal": "Joker karakterli içeri aktarmalar 'lazy' ile birlikte kullanılamaz", "listAssignmentMismatch": "\"{type}\" türündeki ifade hedef listesine atanamaz", "listInAnnotation": "List expression not allowed in type expression", "literalEmptyArgs": "\"Literal\" sonrasında bir veya daha fazla tür bağımsız değişkeni bekleniyordu", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "\"{typeVarName}\" tür bağımsız değişkeni \"{className}\" taban sınıfıyla uyumsuz", "varianceMismatchForTypeAlias": "\"{typeVarName}\" tür bağımsız değişkeninin varyansı, \"{typeAliasParam}\" ile uyumsuz" }, + "Rename": { + "cannotRenameNonUserCode": "\"{symbolName}\" yeniden adlandırılamaz çünkü değiştirilemeyen düzenlenemez kodda da (bir kitaplık veya saplama dosyası) bildirilmiştir. Yeniden adlandırma tamamlanırsa \"{symbolName}\" kısmen yeniden adlandırılmış olarak kalır. Önce çakışan bildirimleri çözün:\r\n{locations}" + }, "Service": { "longOperation": "Çalışma alanı kaynak dosyalarının numaralandırılması uzun zaman alıyor. Bunun yerine bir alt klasör açabilirsiniz. [Daha fazla bilgi edinin](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.zh-cn.json b/packages/pyright-internal/src/localization/package.nls.zh-cn.json index 059249e7c772..4b929b2711c7 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "创建类型 Stub", "createTypeStubFor": "为 \"{moduleName}\" 创建类型 Stub", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "冻结类不能从未冻结的类继承", "dataClassConverterFunction": "类型“{argType}”的参数不是类型为“{fieldType}”的字段“{fieldName}”的有效转换器", "dataClassConverterOverloads": "“{funcName}”的重载不是类型为“{fieldType}”的字段“{fieldName}”的有效转换器", + "dataClassDuplicateKwOnly": "“{name}”是重复的 KW_ONLY 分隔符;在数据类中只允许一个", "dataClassFieldInheritedDefault": "“{fieldName}”替代同名字段,但缺少默认值", "dataClassFieldWithDefault": "没有默认值的字段不能出现在具有默认值的字段之后", "dataClassFieldWithPrivateName": "数据类字段不能使用专用名称", @@ -283,7 +289,7 @@ "internalTypeCheckingError": "类型检查文件“{file}”时发生内部错误:{message}", "invalidIdentifierChar": "标识符中的字符无效", "invalidStubStatement": "语句在类型 stub 文件中无意义", - "invalidTokenChars": "令牌中的字符\"{text}\"无效", + "invalidTokenChars": "标记中的字符“{text}”无效", "isInstanceInvalidType": "\"isinstance\" 的第二个参数必须是类或类的 tuple", "isSubclassInvalidType": "\"issubclass\" 的第二个参数必须是类或类的 tuple", "keyValueInSet": "不允许在 set 内使用键/值对", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "不支持下标中的关键字参数", "lambdaReturnTypePartiallyUnknown": "lambda 的返回类型“{returnType}”部分未知", "lambdaReturnTypeUnknown": "lambda 的返回类型未知", + "lazyImportIllegal": "延迟导入语句需要 Python 3.15 或更高版本", + "lazyImportWildcardIllegal": "通配符导入不能与 \"lazy\" 一起使用", "listAssignmentMismatch": "无法将 \"{type}\" 类型的表达式分配给目标列表", "listInAnnotation": "类型表达式中不允许使用 List 表达式", "literalEmptyArgs": "“Literal”后应有一个或多个类型参数", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "类型参数\"{typeVarName}\"的差异与基类\"{className}\"不兼容", "varianceMismatchForTypeAlias": "类型参数\"{typeVarName}\"的差异与\"{typeAliasParam}\"不兼容" }, + "Rename": { + "cannotRenameNonUserCode": "无法重命名“{symbolName}”,因为它也在不可编辑的代码中声明(无法修改的库或存根文件)。完成重命名会使“{symbolName}”处于部分重命名状态。请先解决存在冲突的声明:\r\n{locations}" + }, "Service": { "longOperation": "枚举工作区源文件需要很长时间。请考虑打开子文件夹。[了解详细信息](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/localization/package.nls.zh-tw.json b/packages/pyright-internal/src/localization/package.nls.zh-tw.json index 79db17a3b419..53b157c82bcf 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -1,4 +1,9 @@ { + "CallHierarchy": { + "library": "Library", + "standardLibrary": "Standard library", + "workspace": "Workspace" + }, "CodeAction": { "createTypeStub": "建立類型 Stub", "createTypeStubFor": "建立 \"{moduleName}\" 的類型 Stub", @@ -107,6 +112,7 @@ "dataClassBaseClassNotFrozen": "凍結的類別不能從未凍結的類別繼承", "dataClassConverterFunction": "類型 \"{argType}\" 的引數不是類型 \"{fieldType}\" 欄位 \"{fieldName}\" 的有效轉換程式", "dataClassConverterOverloads": "\"{funcName}\" 沒有任何多載是類型 \"{fieldType}\" 欄位 \"{fieldName}\" 的有效轉換程式", + "dataClassDuplicateKwOnly": "\"{name}\" 是重複的 KW_ONLY 分隔符號;在 dataclass 中只允許一個", "dataClassFieldInheritedDefault": "\"{fieldName}\" 覆寫相同名稱的欄位,但缺少預設值", "dataClassFieldWithDefault": "沒有預設值的欄位無法出現在具有預設值的欄位後面", "dataClassFieldWithPrivateName": "Dataclass 欄位不能使用私人名稱", @@ -283,7 +289,7 @@ "internalTypeCheckingError": "類型檢查檔案 \"{file}\" 時發生內部錯誤: {message}", "invalidIdentifierChar": "識別碼中的字元無效", "invalidStubStatement": "陳述式在類型 stub 檔案內沒有意義", - "invalidTokenChars": "權杖中的字元 \"{text}\" 無效", + "invalidTokenChars": "Token 中有無的字元「{text}」", "isInstanceInvalidType": "\"isinstance\" 的第二個引數必須是類別或類別的tuple", "isSubclassInvalidType": "\"issubclass\" 的第二個引數必須是類別的類別或 tuple", "keyValueInSet": "set 內不允許金鑰/值組", @@ -293,6 +299,8 @@ "keywordSubscriptIllegal": "不支援下標內的關鍵字引數", "lambdaReturnTypePartiallyUnknown": "Lambda 的傳回類型 \"{returnType}\" 部分未知", "lambdaReturnTypeUnknown": "Lambda 的傳回類型未知", + "lazyImportIllegal": "惰性匯入陳述式需要 Python 3.15 或更新版本", + "lazyImportWildcardIllegal": "萬用字元匯入不能與 'lazy' 一起使用", "listAssignmentMismatch": "類型 \"{type}\" 的運算式不能指派至目標清單", "listInAnnotation": "型別運算式中不允許 List 運算式", "literalEmptyArgs": "\"Literal\" 後面應有一或多個型別引數", @@ -608,7 +616,7 @@ "unaryOperationNotAllowed": "類型運算式中不允許一元運算子", "unexpectedAsyncToken": "預期為 \"def\"、\"with\" 或 \"for\" 來追蹤 \"async\"", "unexpectedEof": "未預期的 EOF", - "unexpectedExprToken": "運算式結尾未預期的權杖", + "unexpectedExprToken": "運算式結尾出現非預期的 Token", "unexpectedIndent": "未預期的縮排", "unexpectedUnindent": "取消縮排未預期", "unhashableDictKey": "字典索引鍵必須是可雜湊的", @@ -846,6 +854,9 @@ "varianceMismatchForClass": "型別引數 \"{typeVarName}\" 的變異數與基底類別 \"{className}\" 不相容", "varianceMismatchForTypeAlias": "型別引數 \"{typeVarName}\" 的變異數與 \"{typeAliasParam}\" 不相容" }, + "Rename": { + "cannotRenameNonUserCode": "無法重新命名「{symbolName}」,因為它也在無法修改的非可編輯程式碼中宣告,例如程式庫或 stub 檔案。完成重新命名會讓「{symbolName}」只完成部分重新命名。請先解決衝突的宣告:\r\n{locations}" + }, "Service": { "longOperation": "列舉工作區來源檔案需要很長的時間。請考慮改為開啟子資料夾。[深入了解](https://aka.ms/workspace-too-many-files)" } diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index b3d79d9a86e5..c36d10f5269a 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -9,6 +9,7 @@ */ import { TextRange } from '../common/textRange'; +import { emptyStringAnnotationInfo, StringAnnotationInfo } from './stringAnnotationInfo'; import { FStringEndToken, FStringMiddleToken, @@ -131,6 +132,38 @@ export const enum ErrorExpressionCategory { MaxDepthExceeded, } +export type ParseTreeKey = object; + +// Private cast host used to stash parser-derived string-annotation associations +// onto a parse tree's owner key (the module node for file parses, or a standalone +// key object for detached expression parses) without exposing the field on any node +// type. This mirrors how AnalyzerNodeInfo attaches owner-specific data to a node via +// a cast: the shape is invisible to `ParseNodeBase`/`ModuleNode` consumers, and the +// map is only created (attached) when the tree actually contains a quoted annotation. +interface StringAnnotationHost { + stringAnnotations?: StringAnnotationInfo; +} + +export function setParserStringAnnotationInfo(key: ParseTreeKey, stringAnnotations: StringAnnotationInfo): void { + (key as StringAnnotationHost).stringAnnotations = stringAnnotations; +} + +export function getParseTreeRoot(node: ParseNode): ModuleNode | undefined { + // The owner key is the module node itself for file parses (so its nodeType is + // Module), or a plain standalone key object for detached expression parses + // (nodeType is undefined). Only the former has a real parse-tree root. + const key = node.a as ParseNode; + return key.nodeType === ParseNodeType.Module ? key : undefined; +} + +export function getParserStringAnnotation(node: StringListNode): ExpressionNode | undefined { + return (node.a as StringAnnotationHost).stringAnnotations?.get(node); +} + +export function getParserStringAnnotationInfo(node: ParseNode): StringAnnotationInfo { + return (node.a as StringAnnotationHost).stringAnnotations ?? emptyStringAnnotationInfo; +} + export interface ParseNodeBase { readonly nodeType: T; readonly start: number; @@ -141,8 +174,8 @@ export interface ParseNodeBase { parent: ParseNode | undefined; - // A reference to information computed in later passes. - a: object | undefined; + // Opaque key used to retrieve binding information for this parse tree. + readonly a: ParseTreeKey; // Additional details that are specific to the parse node type. d: object; @@ -177,10 +210,13 @@ export namespace ModuleNode { nodeType: ParseNodeType.Module, id: _nextNodeId++, parent: undefined, - a: undefined, + a: undefined as unknown as ParseTreeKey, d: { statements: [] }, }; + // The module node is its own owner key; every structural node in a file + // parse shares this reference via its `a` field. + (node as { a: ParseTreeKey }).a = node; return node; } } @@ -193,14 +229,14 @@ export interface SuiteNode extends ParseNodeBase { } export namespace SuiteNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: SuiteNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Suite, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { statements: [], typeComment: undefined, @@ -221,14 +257,20 @@ export interface IfNode extends ParseNodeBase { } export namespace IfNode { - export function create(ifOrElifToken: Token, testExpr: ExpressionNode, ifSuite: SuiteNode, elseSuite?: SuiteNode) { + export function create( + key: ParseTreeKey, + ifOrElifToken: Token, + testExpr: ExpressionNode, + ifSuite: SuiteNode, + elseSuite?: SuiteNode + ) { const node: IfNode = { start: ifOrElifToken.start, length: ifOrElifToken.length, nodeType: ParseNodeType.If, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: ifOrElifToken, testExpr, @@ -261,14 +303,14 @@ export interface WhileNode extends ParseNodeBase { } export namespace WhileNode { - export function create(whileToken: Token, testExpr: ExpressionNode, whileSuite: SuiteNode) { + export function create(key: ParseTreeKey, whileToken: Token, testExpr: ExpressionNode, whileSuite: SuiteNode) { const node: WhileNode = { start: whileToken.start, length: whileToken.length, nodeType: ParseNodeType.While, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: whileToken, testExpr, @@ -300,6 +342,7 @@ export interface ForNode extends ParseNodeBase { export namespace ForNode { export function create( + key: ParseTreeKey, forToken: Token, targetExpr: ExpressionNode, iterableExpr: ExpressionNode, @@ -311,7 +354,7 @@ export namespace ForNode { nodeType: ParseNodeType.For, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: forToken, targetExpr, @@ -342,14 +385,19 @@ export interface ComprehensionForNode extends ParseNodeBase { } export namespace TryNode { - export function create(tryToken: Token, trySuite: SuiteNode) { + export function create(key: ParseTreeKey, tryToken: Token, trySuite: SuiteNode) { const node: TryNode = { start: tryToken.start, length: tryToken.length, nodeType: ParseNodeType.Try, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: tryToken, trySuite: trySuite, @@ -437,14 +485,14 @@ export interface ExceptNode extends ParseNodeBase { } export namespace ExceptNode { - export function create(exceptToken: Token, exceptSuite: SuiteNode, isExceptGroup: boolean) { + export function create(key: ParseTreeKey, exceptToken: Token, exceptSuite: SuiteNode, isExceptGroup: boolean) { const node: ExceptNode = { start: exceptToken.start, length: exceptToken.length, nodeType: ParseNodeType.Except, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { exceptSuite: exceptSuite, isExceptGroup: isExceptGroup, @@ -475,14 +523,20 @@ export interface FunctionNode extends ParseNodeBase { } export namespace FunctionNode { - export function create(defToken: Token, name: NameNode, suite: SuiteNode, typeParams?: TypeParameterListNode) { + export function create( + key: ParseTreeKey, + defToken: Token, + name: NameNode, + suite: SuiteNode, + typeParams?: TypeParameterListNode + ) { const node: FunctionNode = { start: defToken.start, length: defToken.length, nodeType: ParseNodeType.Function, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: defToken, decorators: [], @@ -526,14 +580,14 @@ export interface ParameterNode extends ParseNodeBase { } export namespace ParameterNode { - export function create(startToken: Token, paramCategory: ParamCategory) { + export function create(key: ParseTreeKey, startToken: Token, paramCategory: ParamCategory) { const node: ParameterNode = { start: startToken.start, length: startToken.length, nodeType: ParseNodeType.Parameter, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { category: paramCategory, name: undefined, @@ -559,14 +613,20 @@ export interface ClassNode extends ParseNodeBase { } export namespace ClassNode { - export function create(classToken: Token, name: NameNode, suite: SuiteNode, typeParams?: TypeParameterListNode) { + export function create( + key: ParseTreeKey, + classToken: Token, + name: NameNode, + suite: SuiteNode, + typeParams?: TypeParameterListNode + ) { const node: ClassNode = { start: classToken.start, length: classToken.length, nodeType: ParseNodeType.Class, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: classToken, decorators: [], @@ -592,14 +652,14 @@ export namespace ClassNode { // This variant is used to create a dummy class // when the parser encounters decorators with no // function or class declaration. - export function createDummyForDecorators(decorators: DecoratorNode[]) { + export function createDummyForDecorators(key: ParseTreeKey, decorators: DecoratorNode[]) { const node: ClassNode = { start: decorators[0].start, length: 0, nodeType: ParseNodeType.Class, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: { type: TokenType.Keyword, @@ -614,7 +674,7 @@ export namespace ClassNode { nodeType: ParseNodeType.Name, id: 0, parent: undefined, - a: undefined, + a: key, d: { token: { type: TokenType.Identifier, @@ -634,7 +694,7 @@ export namespace ClassNode { nodeType: ParseNodeType.Suite, id: 0, parent: undefined, - a: undefined, + a: key, d: { statements: [], typeComment: undefined }, }, }, @@ -664,14 +724,14 @@ export interface WithNode extends ParseNodeBase { } export namespace WithNode { - export function create(withToken: Token, suite: SuiteNode) { + export function create(key: ParseTreeKey, withToken: Token, suite: SuiteNode) { const node: WithNode = { start: withToken.start, length: withToken.length, nodeType: ParseNodeType.With, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: withToken, withItems: [], @@ -695,14 +755,14 @@ export interface WithItemNode extends ParseNodeBase { } export namespace WithItemNode { - export function create(expr: ExpressionNode) { + export function create(key: ParseTreeKey, expr: ExpressionNode) { const node: WithItemNode = { start: expr.start, length: expr.length, nodeType: ParseNodeType.WithItem, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { expr }, }; @@ -719,14 +779,14 @@ export interface DecoratorNode extends ParseNodeBase { } export namespace DecoratorNode { - export function create(atToken: Token, expr: ExpressionNode) { + export function create(key: ParseTreeKey, atToken: Token, expr: ExpressionNode) { const node: DecoratorNode = { start: atToken.start, length: atToken.length, nodeType: ParseNodeType.Decorator, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { expr }, }; @@ -746,14 +806,14 @@ export interface StatementListNode extends ParseNodeBase { export namespace ErrorNode { export function create( + key: ParseTreeKey, initialRange: TextRange, category: ErrorExpressionCategory, child?: ExpressionNode, @@ -871,7 +932,7 @@ export namespace ErrorNode { nodeType: ParseNodeType.Error, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { category, child, @@ -908,14 +969,14 @@ export interface UnaryOperationNode extends ParseNodeBase } export namespace AssignmentNode { - export function create(leftExpr: ExpressionNode, rightExpr: ExpressionNode) { + export function create(key: ParseTreeKey, leftExpr: ExpressionNode, rightExpr: ExpressionNode) { const node: AssignmentNode = { start: leftExpr.start, length: leftExpr.length, nodeType: ParseNodeType.Assignment, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { leftExpr, rightExpr, @@ -1059,6 +1121,7 @@ export interface TypeParameterNode extends ParseNodeBase { export namespace TypeAliasNode { export function create( + key: ParseTreeKey, typeToken: KeywordToken, name: NameNode, expr: ExpressionNode, @@ -1146,7 +1210,7 @@ export namespace TypeAliasNode { nodeType: ParseNodeType.TypeAlias, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: typeToken, name, @@ -1176,14 +1240,14 @@ export interface TypeAnnotationNode extends ParseNodeBase { } export namespace AwaitNode { - export function create(awaitToken: Token, expr: ExpressionNode) { + export function create(key: ParseTreeKey, awaitToken: Token, expr: ExpressionNode) { const node: AwaitNode = { start: awaitToken.start, length: awaitToken.length, nodeType: ParseNodeType.Await, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { expr, awaitToken, hasParens: false }, }; @@ -1321,14 +1387,19 @@ export interface TernaryNode extends ParseNodeBase { } export namespace TernaryNode { - export function create(ifExpr: ExpressionNode, testExpr: ExpressionNode, elseExpr: ExpressionNode) { + export function create( + key: ParseTreeKey, + ifExpr: ExpressionNode, + testExpr: ExpressionNode, + elseExpr: ExpressionNode + ) { const node: TernaryNode = { start: ifExpr.start, length: ifExpr.length, nodeType: ParseNodeType.Ternary, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { ifExpr, testExpr, @@ -1354,14 +1425,14 @@ export interface UnpackNode extends ParseNodeBase { } export namespace UnpackNode { - export function create(starToken: Token, expr: ExpressionNode) { + export function create(key: ParseTreeKey, starToken: Token, expr: ExpressionNode) { const node: UnpackNode = { start: starToken.start, length: starToken.length, nodeType: ParseNodeType.Unpack, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { expr, starToken, @@ -1384,14 +1455,14 @@ export interface TupleNode extends ParseNodeBase { } export namespace TupleNode { - export function create(range: TextRange, hasParens: boolean) { + export function create(key: ParseTreeKey, range: TextRange, hasParens: boolean) { const node: TupleNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Tuple, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { items: [], hasParens, @@ -1411,14 +1482,14 @@ export interface CallNode extends ParseNodeBase { } export namespace CallNode { - export function create(leftExpr: ExpressionNode, args: ArgumentNode[], trailingComma: boolean) { + export function create(key: ParseTreeKey, leftExpr: ExpressionNode, args: ArgumentNode[], trailingComma: boolean) { const node: CallNode = { start: leftExpr.start, length: leftExpr.length, nodeType: ParseNodeType.Call, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { leftExpr, args, @@ -1449,14 +1520,14 @@ export interface ComprehensionNode extends ParseNodeBase { export namespace IndexNode { export function create( + key: ParseTreeKey, leftExpr: ExpressionNode, items: ArgumentNode[], trailingComma: boolean, @@ -1492,7 +1564,7 @@ export namespace IndexNode { nodeType: ParseNodeType.Index, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { leftExpr, items, @@ -1520,14 +1592,14 @@ export interface SliceNode extends ParseNodeBase { } export namespace SliceNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: SliceNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Slice, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -1542,14 +1614,14 @@ export interface YieldNode extends ParseNodeBase { } export namespace YieldNode { - export function create(yieldToken: Token, expr?: ExpressionNode) { + export function create(key: ParseTreeKey, yieldToken: Token, expr?: ExpressionNode) { const node: YieldNode = { start: yieldToken.start, length: yieldToken.length, nodeType: ParseNodeType.Yield, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { expr }, }; @@ -1569,14 +1641,14 @@ export interface YieldFromNode extends ParseNodeBase { } export namespace YieldFromNode { - export function create(yieldToken: Token, expr: ExpressionNode) { + export function create(key: ParseTreeKey, yieldToken: Token, expr: ExpressionNode) { const node: YieldFromNode = { start: yieldToken.start, length: yieldToken.length, nodeType: ParseNodeType.YieldFrom, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { expr }, }; @@ -1596,14 +1668,14 @@ export interface MemberAccessNode extends ParseNodeBase { } export namespace LambdaNode { - export function create(lambdaToken: Token, expr: ExpressionNode) { + export function create(key: ParseTreeKey, lambdaToken: Token, expr: ExpressionNode) { const node: LambdaNode = { start: lambdaToken.start, length: lambdaToken.length, nodeType: ParseNodeType.Lambda, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { params: [], expr, @@ -1657,14 +1729,14 @@ export interface NameNode extends ParseNodeBase { } export namespace NameNode { - export function create(nameToken: IdentifierToken) { + export function create(key: ParseTreeKey, nameToken: IdentifierToken) { const node: NameNode = { start: nameToken.start, length: nameToken.length, nodeType: ParseNodeType.Name, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { token: nameToken, value: nameToken.value, @@ -1682,14 +1754,14 @@ export interface ConstantNode extends ParseNodeBase { } export namespace ConstantNode { - export function create(token: KeywordToken) { + export function create(key: ParseTreeKey, token: KeywordToken) { const node: ConstantNode = { start: token.start, length: token.length, nodeType: ParseNodeType.Constant, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { constType: token.keywordType }, }; @@ -1700,14 +1772,14 @@ export namespace ConstantNode { export interface EllipsisNode extends ParseNodeBase {} export namespace EllipsisNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: EllipsisNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Ellipsis, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -1724,14 +1796,14 @@ export interface NumberNode extends ParseNodeBase { } export namespace NumberNode { - export function create(token: NumberToken) { + export function create(key: ParseTreeKey, token: NumberToken) { const node: NumberNode = { start: token.start, length: token.length, nodeType: ParseNodeType.Number, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { value: token.value, isInteger: token.isInteger, @@ -1751,14 +1823,14 @@ export interface StringNode extends ParseNodeBase { } export namespace StringNode { - export function create(token: StringToken, value: string) { + export function create(key: ParseTreeKey, token: StringToken, value: string) { const node: StringNode = { start: token.start, length: token.length, nodeType: ParseNodeType.String, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { token, value, @@ -1784,6 +1856,7 @@ export interface FormatStringNode extends ParseNodeBase d: { strings: (StringNode | FormatStringNode)[]; - // If strings are found within the context of - // a type annotation, they are further parsed - // into an expression. - annotation: ExpressionNode | undefined; - // Indicates that the string list is enclosed in parens. hasParens: boolean; }; } export namespace StringListNode { - export function create(strings: (StringNode | FormatStringNode)[]) { + export function create(key: ParseTreeKey, strings: (StringNode | FormatStringNode)[]) { const node: StringListNode = { start: strings[0].start, length: strings[0].length, nodeType: ParseNodeType.StringList, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { strings, - annotation: undefined, hasParens: false, }, }; @@ -1875,14 +1942,14 @@ export interface DictionaryNode extends ParseNodeBase } export namespace DictionaryNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: DictionaryNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Dictionary, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { items: [], trailingCommaToken: undefined, @@ -1901,14 +1968,14 @@ export interface DictionaryKeyEntryNode extends ParseNodeBase { } export namespace SetNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: SetNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Set, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { items: [] }, }; @@ -1977,14 +2044,14 @@ export interface ListNode extends ParseNodeBase { } export namespace ListNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: ListNode = { start: range.start, length: range.length, nodeType: ParseNodeType.List, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { items: [] }, }; @@ -2007,14 +2074,19 @@ export interface ArgumentNode extends ParseNodeBase { } export namespace ArgumentNode { - export function create(startToken: Token | undefined, valueExpr: ExpressionNode, argCategory: ArgCategory) { + export function create( + key: ParseTreeKey, + startToken: Token | undefined, + valueExpr: ExpressionNode, + argCategory: ArgCategory + ) { const node: ArgumentNode = { start: startToken ? startToken.start : valueExpr.start, length: startToken ? startToken.length : valueExpr.length, nodeType: ParseNodeType.Argument, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { argCategory, name: undefined, @@ -2037,14 +2109,14 @@ export interface DelNode extends ParseNodeBase { } export namespace DelNode { - export function create(delToken: Token) { + export function create(key: ParseTreeKey, delToken: Token) { const node: DelNode = { start: delToken.start, length: delToken.length, nodeType: ParseNodeType.Del, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { targets: [] }, }; @@ -2055,14 +2127,14 @@ export namespace DelNode { export interface PassNode extends ParseNodeBase {} export namespace PassNode { - export function create(passToken: TextRange) { + export function create(key: ParseTreeKey, passToken: TextRange) { const node: PassNode = { start: passToken.start, length: passToken.length, nodeType: ParseNodeType.Pass, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -2079,14 +2151,14 @@ export interface ImportNode extends ParseNodeBase { } export namespace ImportNode { - export function create(importToken: TextRange) { + export function create(key: ParseTreeKey, importToken: TextRange) { const node: ImportNode = { start: importToken.start, length: importToken.length, nodeType: ParseNodeType.Import, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { list: [] }, }; @@ -2105,14 +2177,14 @@ export interface ModuleNameNode extends ParseNodeBase } export namespace ModuleNameNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: ModuleNameNode = { start: range.start, length: range.length, nodeType: ParseNodeType.ModuleName, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { leadingDots: 0, nameParts: [], @@ -2131,14 +2203,14 @@ export interface ImportAsNode extends ParseNodeBase { } export namespace ImportAsNode { - export function create(module: ModuleNameNode) { + export function create(key: ParseTreeKey, module: ModuleNameNode) { const node: ImportAsNode = { start: module.start, length: module.length, nodeType: ParseNodeType.ImportAs, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { module: module }, }; @@ -2162,14 +2234,14 @@ export interface ImportFromNode extends ParseNodeBase } export namespace ImportFromNode { - export function create(fromToken: Token, module: ModuleNameNode) { + export function create(key: ParseTreeKey, fromToken: Token, module: ModuleNameNode) { const node: ImportFromNode = { start: fromToken.start, length: fromToken.length, nodeType: ParseNodeType.ImportFrom, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { module, imports: [], @@ -2194,14 +2266,14 @@ export interface ImportFromAsNode extends ParseNodeBase { } export namespace GlobalNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: GlobalNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Global, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { targets: [] }, }; @@ -2240,14 +2312,14 @@ export interface NonlocalNode extends ParseNodeBase { } export namespace NonlocalNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: NonlocalNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Nonlocal, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { targets: [] }, }; @@ -2263,14 +2335,14 @@ export interface AssertNode extends ParseNodeBase { } export namespace AssertNode { - export function create(assertToken: Token, testExpr: ExpressionNode) { + export function create(key: ParseTreeKey, assertToken: Token, testExpr: ExpressionNode) { const node: AssertNode = { start: assertToken.start, length: assertToken.length, nodeType: ParseNodeType.Assert, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { testExpr }, }; @@ -2285,14 +2357,14 @@ export namespace AssertNode { export interface BreakNode extends ParseNodeBase {} export namespace BreakNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: BreakNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Break, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -2303,14 +2375,14 @@ export namespace BreakNode { export interface ContinueNode extends ParseNodeBase {} export namespace ContinueNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: ContinueNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Continue, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -2325,14 +2397,14 @@ export interface ReturnNode extends ParseNodeBase { } export namespace ReturnNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: ReturnNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Return, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -2348,14 +2420,14 @@ export interface RaiseNode extends ParseNodeBase { } export namespace RaiseNode { - export function create(range: TextRange) { + export function create(key: ParseTreeKey, range: TextRange) { const node: RaiseNode = { start: range.start, length: range.length, nodeType: ParseNodeType.Raise, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: {}, }; @@ -2372,14 +2444,14 @@ export interface MatchNode extends ParseNodeBase { } export namespace MatchNode { - export function create(matchToken: Token, expr: ExpressionNode) { + export function create(key: ParseTreeKey, matchToken: Token, expr: ExpressionNode) { const node: MatchNode = { start: matchToken.start, length: matchToken.length, nodeType: ParseNodeType.Match, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { firstToken: matchToken, expr, @@ -2406,6 +2478,7 @@ export interface CaseNode extends ParseNodeBase { export namespace CaseNode { export function create( + key: ParseTreeKey, caseToken: TextRange, pattern: PatternAtomNode, isIrrefutable: boolean, @@ -2418,7 +2491,7 @@ export namespace CaseNode { nodeType: ParseNodeType.Case, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { pattern, isIrrefutable, @@ -2448,7 +2521,7 @@ export interface PatternSequenceNode extends ParseNodeBase entry.d.orPatterns.length === 1 && @@ -2462,7 +2535,7 @@ export namespace PatternSequenceNode { nodeType: ParseNodeType.PatternSequence, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { entries, starEntryIndex: starEntryIndex >= 0 ? starEntryIndex : undefined, @@ -2489,14 +2562,14 @@ export interface PatternAsNode extends ParseNodeBase { } export namespace PatternAsNode { - export function create(orPatterns: PatternAtomNode[], target?: NameNode) { + export function create(key: ParseTreeKey, orPatterns: PatternAtomNode[], target?: NameNode) { const node: PatternAsNode = { start: orPatterns[0].start, length: orPatterns[0].length, nodeType: ParseNodeType.PatternAs, id: _nextNodeId++, parent: undefined, - a: undefined, + a: key, d: { orPatterns, target, @@ -2527,14 +2600,14 @@ export interface PatternLiteralNode extends ParseNodeBase ExpressionNode | undefined; + +export function getChildNodes( + node: ParseNode, + getStringAnnotation: StringAnnotationProvider = getParserStringAnnotation +): (ParseNode | undefined)[] { + switch (node.nodeType) { + case ParseNodeType.Error: + return [...(node.d.decorators ?? []), node.d.child]; + + case ParseNodeType.Argument: + return [node.d.name, node.d.valueExpr]; + + case ParseNodeType.Assert: + return [node.d.testExpr, node.d.exceptionExpr]; + + case ParseNodeType.AssignmentExpression: + return [node.d.name, node.d.rightExpr]; + + case ParseNodeType.Assignment: + return [node.d.leftExpr, node.d.rightExpr, node.d.annotationComment]; + + case ParseNodeType.AugmentedAssignment: + return [node.d.leftExpr, node.d.rightExpr]; + + case ParseNodeType.Await: + return [node.d.expr]; + + case ParseNodeType.BinaryOperation: + return [node.d.leftExpr, node.d.rightExpr]; + + case ParseNodeType.Break: + return []; + + case ParseNodeType.Call: + return [node.d.leftExpr, ...node.d.args]; + + case ParseNodeType.Case: + return [node.d.pattern, node.d.guardExpr, node.d.suite]; + + case ParseNodeType.Class: + return [...node.d.decorators, node.d.name, node.d.typeParams, ...node.d.arguments, node.d.suite]; + + case ParseNodeType.Comprehension: + return [node.d.expr, ...node.d.forIfNodes]; + + case ParseNodeType.ComprehensionFor: + return [node.d.targetExpr, node.d.iterableExpr]; + + case ParseNodeType.ComprehensionIf: + return [node.d.testExpr]; + + case ParseNodeType.Constant: + return []; + + case ParseNodeType.Continue: + return []; + + case ParseNodeType.Decorator: + return [node.d.expr]; + + case ParseNodeType.Del: + return node.d.targets; + + case ParseNodeType.Dictionary: + return node.d.items; + + case ParseNodeType.DictionaryExpandEntry: + return [node.d.expr]; + + case ParseNodeType.DictionaryKeyEntry: + return [node.d.keyExpr, node.d.valueExpr]; + + case ParseNodeType.Ellipsis: + return []; + + case ParseNodeType.If: + return [node.d.testExpr, node.d.ifSuite, node.d.elseSuite]; + + case ParseNodeType.Import: + return node.d.list; + + case ParseNodeType.ImportAs: + return [node.d.module, node.d.alias]; + + case ParseNodeType.ImportFrom: + return [node.d.module, ...node.d.imports]; + + case ParseNodeType.ImportFromAs: + return [node.d.name, node.d.alias]; + + case ParseNodeType.Index: + return [node.d.leftExpr, ...node.d.items]; + + case ParseNodeType.Except: + return [node.d.typeExpr, node.d.name, node.d.exceptSuite]; + + case ParseNodeType.For: + return [node.d.targetExpr, node.d.iterableExpr, node.d.forSuite, node.d.elseSuite]; + + case ParseNodeType.FormatString: + return [...node.d.fieldExprs, ...(node.d.formatExprs ?? [])]; + + case ParseNodeType.Function: + return [ + ...node.d.decorators, + node.d.name, + node.d.typeParams, + ...node.d.params, + node.d.returnAnnotation, + node.d.funcAnnotationComment, + node.d.suite, + ]; + + case ParseNodeType.FunctionAnnotation: + return [...node.d.paramAnnotations, node.d.returnAnnotation]; + + case ParseNodeType.Global: + return node.d.targets; + + case ParseNodeType.Lambda: + return [...node.d.params, node.d.expr]; + + case ParseNodeType.List: + return node.d.items; + + case ParseNodeType.Match: + return [node.d.expr, ...node.d.cases]; + + case ParseNodeType.MemberAccess: + return [node.d.leftExpr, node.d.member]; + + case ParseNodeType.ModuleName: + return node.d.nameParts; + + case ParseNodeType.Module: + return [...node.d.statements]; + + case ParseNodeType.Name: + return []; + + case ParseNodeType.Nonlocal: + return node.d.targets; + + case ParseNodeType.Number: + return []; + + case ParseNodeType.Parameter: + return [node.d.name, node.d.annotation, node.d.annotationComment, node.d.defaultValue]; + + case ParseNodeType.Pass: + return []; + + case ParseNodeType.PatternAs: + return [...node.d.orPatterns, node.d.target]; + + case ParseNodeType.PatternClass: + return [node.d.className, ...node.d.args]; + + case ParseNodeType.PatternClassArgument: + return [node.d.name, node.d.pattern]; + + case ParseNodeType.PatternCapture: + return [node.d.target]; + + case ParseNodeType.PatternLiteral: + return [node.d.expr]; + + case ParseNodeType.PatternMappingExpandEntry: + return [node.d.target]; + + case ParseNodeType.PatternMappingKeyEntry: + return [node.d.keyPattern, node.d.valuePattern]; + + case ParseNodeType.PatternMapping: + return [...node.d.entries]; + + case ParseNodeType.PatternSequence: + return [...node.d.entries]; + + case ParseNodeType.PatternValue: + return [node.d.expr]; + + case ParseNodeType.Raise: + return [node.d.expr, node.d.fromExpr]; + + case ParseNodeType.Return: + return [node.d.expr]; + + case ParseNodeType.Set: + return node.d.items; + + case ParseNodeType.Slice: + return [node.d.startValue, node.d.endValue, node.d.stepValue]; + + case ParseNodeType.StatementList: + return node.d.statements; + + case ParseNodeType.StringList: + return [getStringAnnotation(node), ...node.d.strings]; + + case ParseNodeType.String: + return []; + + case ParseNodeType.Suite: + return [...node.d.statements]; + + case ParseNodeType.Ternary: + return [node.d.ifExpr, node.d.testExpr, node.d.elseExpr]; + + case ParseNodeType.Tuple: + return node.d.items; + + case ParseNodeType.Try: + return [node.d.trySuite, ...node.d.exceptClauses, node.d.elseSuite, node.d.finallySuite]; + + case ParseNodeType.TypeAlias: + return [node.d.name, node.d.typeParams, node.d.expr]; + + case ParseNodeType.TypeAnnotation: + return [node.d.valueExpr, node.d.annotation]; + + case ParseNodeType.TypeParameter: + return [node.d.name, node.d.boundExpr, node.d.defaultExpr]; + + case ParseNodeType.TypeParameterList: + return [...node.d.params]; + + case ParseNodeType.UnaryOperation: + return [node.d.expr]; + + case ParseNodeType.Unpack: + return [node.d.expr]; + + case ParseNodeType.While: + return [node.d.testExpr, node.d.whileSuite, node.d.elseSuite]; + + case ParseNodeType.With: + return [...node.d.withItems, node.d.suite]; + + case ParseNodeType.WithItem: + return [node.d.expr, node.d.target]; + + case ParseNodeType.Yield: + return [node.d.expr]; + + case ParseNodeType.YieldFrom: + return [node.d.expr]; + + default: + debug.assertNever(node, `Unknown node type ${node}`); + } +} diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index ee6b04504644..73ac334654a0 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -91,6 +91,8 @@ import { ParameterNode, ParseNode, ParseNodeType, + ParseTreeKey, + setParserStringAnnotationInfo, PassNode, PatternAsNode, PatternAtomNode, @@ -131,6 +133,7 @@ import { extendRange, getNextNodeId, } from './parseNodes'; +import { createStringAnnotationInfo, StringAnnotationInfo } from './stringAnnotationInfo'; import * as StringTokenUtils from './stringTokenUtils'; import { Tokenizer, TokenizerOutput } from './tokenizer'; import { @@ -185,6 +188,7 @@ export class ParseOptions { export interface ParserOutput { parseTree: ModuleNode; + stringAnnotations: StringAnnotationInfo; importedModules: ModuleImport[]; futureImports: Set; containsWildcardImport: boolean; @@ -202,6 +206,7 @@ export interface ParseFileResults { export interface ParseExpressionTextResults { parseTree?: T | undefined; + stringAnnotations: StringAnnotationInfo; lines: TextRangeCollection; diagnostics: Diagnostic[]; } @@ -255,14 +260,20 @@ export class Parser { private _typingSymbolAliases: Map = new Map(); private _maxChildDepthMap = new Map(); private _hasTypeAnnotations = false; + private _ownerKey: ParseTreeKey | undefined; + private _createdOwnerKey = false; + private _stringAnnotations = createStringAnnotationInfo(); parseSourceFile(fileContents: string, parseOptions: ParseOptions, diagSink: DiagnosticSink): ParseFileResults { this._hasTypeAnnotations = false; + this._stringAnnotations = createStringAnnotationInfo(); timingStats.tokenizeFileTime.timeOperation(() => { this._startNewParse(fileContents, 0, fileContents.length, parseOptions, diagSink); }); const moduleNode = ModuleNode.create({ start: 0, length: fileContents.length }); + this._ownerKey = moduleNode.a; + this._createdOwnerKey = true; timingStats.parseFileTime.timeOperation(() => { while (!this._atEof()) { @@ -291,12 +302,15 @@ export class Parser { } }); + this._attachParserStringAnnotations(); + assert(this._tokenizerOutput !== undefined); return { text: fileContents, contentHash: hashString(fileContents), parserOutput: { parseTree: moduleNode, + stringAnnotations: this._stringAnnotations.info, importedModules: this._importedModules, futureImports: this._futureImports, containsWildcardImport: this._containsWildcardImport, @@ -315,7 +329,8 @@ export class Parser { parseOptions: ParseOptions, parseTextMode: ParseTextMode.Expression, initialParenDepth?: number, - typingSymbolAliases?: Map + typingSymbolAliases?: Map, + ownerKey?: ParseTreeKey ): ParseExpressionTextResults; parseTextExpression( fileContents: string, @@ -324,7 +339,8 @@ export class Parser { parseOptions: ParseOptions, parseTextMode: ParseTextMode.VariableAnnotation, initialParenDepth?: number, - typingSymbolAliases?: Map + typingSymbolAliases?: Map, + ownerKey?: ParseTreeKey ): ParseExpressionTextResults; parseTextExpression( fileContents: string, @@ -333,7 +349,8 @@ export class Parser { parseOptions: ParseOptions, parseTextMode: ParseTextMode.FunctionAnnotation, initialParenDepth?: number, - typingSymbolAliases?: Map + typingSymbolAliases?: Map, + ownerKey?: ParseTreeKey ): ParseExpressionTextResults; parseTextExpression( fileContents: string, @@ -342,8 +359,12 @@ export class Parser { parseOptions: ParseOptions, parseTextMode = ParseTextMode.Expression, initialParenDepth = 0, - typingSymbolAliases?: Map + typingSymbolAliases?: Map, + ownerKey?: ParseTreeKey ): ParseExpressionTextResults { + this._stringAnnotations = createStringAnnotationInfo(); + this._createdOwnerKey = ownerKey === undefined; + this._ownerKey = ownerKey ?? {}; const diagSink = new DiagnosticSink(); this._startNewParse(fileContents, textOffset, textLength, parseOptions, diagSink, initialParenDepth); @@ -381,13 +402,33 @@ export class Parser { this._addSyntaxError(LocMessage.unexpectedExprToken(), this._peekToken()); } + this._attachParserStringAnnotations(); + return { parseTree, + stringAnnotations: this._stringAnnotations.info, lines: this._tokenizerOutput!.lines, diagnostics: diagSink.fetchAndClear(), }; } + // Attaches parser-derived string annotations onto the owner key, but only when + // this parser instance created that key (top-level file parse, or a standalone + // expression parse with no inherited owner key) and only when the tree actually + // contains at least one quoted annotation. Nested re-parses inherit their + // parent's owner key and merge their annotations back into the parent, so they + // must not attach; the key-creating parser attaches the fully merged set. + private _attachParserStringAnnotations(): void { + if (this._createdOwnerKey && this._ownerKey !== undefined && this._stringAnnotations.info.size > 0) { + setParserStringAnnotationInfo(this._ownerKey, this._stringAnnotations.info); + } + } + + private _getOwnerKey(): ParseTreeKey { + assert(this._ownerKey !== undefined); + return this._ownerKey; + } + private _startNewParse( fileContents: string, textOffset: number, @@ -555,7 +596,7 @@ export class Parser { const nameToken = this._getTokenIfIdentifier(); assert(nameToken !== undefined); - const name = NameNode.create(nameToken); + const name = NameNode.create(this._getOwnerKey(), nameToken); let typeParameters: TypeParameterListNode | undefined; if (this._peekToken().type === TokenType.OpenBracket) { @@ -577,7 +618,7 @@ export class Parser { const expression = this._parseTestExpression(/* allowAssignmentExpression */ false); this._isParsingTypeAnnotation = wasParsingTypeAnnotation; - return TypeAliasNode.create(typeToken, name, expression, typeParameters); + return TypeAliasNode.create(this._getOwnerKey(), typeToken, name, expression, typeParameters); } // type_param_seq: '[' (type_param ',')+ ']' @@ -617,7 +658,7 @@ export class Parser { this._getNextToken(); } - return TypeParameterListNode.create(openBracketToken, closingToken, typeVariableNodes); + return TypeParameterListNode.create(this._getOwnerKey(), openBracketToken, closingToken, typeVariableNodes); } // type_param: ['*' | '**'] NAME [':' bound_expr] ['=' default_expr] @@ -635,7 +676,7 @@ export class Parser { return undefined; } - const name = NameNode.create(nameToken); + const name = NameNode.create(this._getOwnerKey(), nameToken); let boundExpression: ExpressionNode | undefined; if (this._consumeTokenIfType(TokenType.Colon)) { @@ -660,7 +701,13 @@ export class Parser { } } - return TypeParameterNode.create(name, typeParamCategory, boundExpression, defaultExpression); + return TypeParameterNode.create( + this._getOwnerKey(), + name, + typeParamCategory, + boundExpression, + defaultExpression + ); } // match_stmt: "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT @@ -703,7 +750,7 @@ export class Parser { ErrorExpressionCategory.MissingPatternSubject, () => LocMessage.expectedReturnExpr() ); - const matchNode = MatchNode.create(matchToken, subjectExpression); + const matchNode = MatchNode.create(this._getOwnerKey(), matchToken, subjectExpression); const nextToken = this._peekToken(); @@ -813,17 +860,17 @@ export class Parser { casePattern = patternList.parseError; } else if (patternList.list.length === 0) { this._addSyntaxError(LocMessage.expectedPatternExpr(), this._peekToken()); - casePattern = ErrorNode.create(caseToken, ErrorExpressionCategory.MissingPattern); + casePattern = ErrorNode.create(this._getOwnerKey(), caseToken, ErrorExpressionCategory.MissingPattern); } else if (patternList.list.length === 1 && !patternList.trailingComma) { const pattern = patternList.list[0].d.orPatterns[0]; if (pattern.nodeType === ParseNodeType.PatternCapture && pattern.d.isStar) { - casePattern = PatternSequenceNode.create(patternList.list[0], patternList.list); + casePattern = PatternSequenceNode.create(this._getOwnerKey(), patternList.list[0], patternList.list); } else { casePattern = patternList.list[0]; } } else { - casePattern = PatternSequenceNode.create(patternList.list[0], patternList.list); + casePattern = PatternSequenceNode.create(this._getOwnerKey(), patternList.list[0], patternList.list); } if (casePattern.nodeType !== ParseNodeType.Error) { @@ -838,7 +885,14 @@ export class Parser { } const suite = this._parseSuite(this._isInFunction); - return CaseNode.create(caseToken, casePattern, this._isPatternIrrefutable(casePattern), guardExpression, suite); + return CaseNode.create( + this._getOwnerKey(), + caseToken, + casePattern, + this._isPatternIrrefutable(casePattern), + guardExpression, + suite + ); } // PEP 634 defines the concept of an "irrefutable" pattern - a pattern that @@ -1044,7 +1098,7 @@ export class Parser { if (this._consumeTokenIfKeyword(KeywordType.As)) { const nameToken = this._getTokenIfIdentifier(); if (nameToken) { - target = NameNode.create(nameToken); + target = NameNode.create(this._getOwnerKey(), nameToken); } else { this._addSyntaxError(LocMessage.expectedNameAfterAs(), this._peekToken()); } @@ -1089,7 +1143,7 @@ export class Parser { } }); - return PatternAsNode.create(orPatterns, target); + return PatternAsNode.create(this._getOwnerKey(), orPatterns, target); } // pattern_atom: @@ -1127,7 +1181,7 @@ export class Parser { patternCaptureOrValue.nodeType === ParseNodeType.PatternCapture ? patternCaptureOrValue.d.target : patternCaptureOrValue.d.expr; - const classPattern = PatternClassNode.create(classNameExpr, args); + const classPattern = PatternClassNode.create(this._getOwnerKey(), classNameExpr, args); if (!this._consumeTokenIfType(TokenType.CloseParenthesis)) { this._addSyntaxError(LocMessage.expectedCloseParen(), openParenToken); @@ -1152,9 +1206,13 @@ export class Parser { const identifierToken = this._getTokenIfIdentifier(); if (!identifierToken) { this._addSyntaxError(LocMessage.expectedIdentifier(), this._peekToken()); - return ErrorNode.create(starToken, ErrorExpressionCategory.MissingExpression); + return ErrorNode.create(this._getOwnerKey(), starToken, ErrorExpressionCategory.MissingExpression); } else { - return PatternCaptureNode.create(NameNode.create(identifierToken), starToken); + return PatternCaptureNode.create( + this._getOwnerKey(), + NameNode.create(this._getOwnerKey(), identifierToken), + starToken + ); } } @@ -1173,14 +1231,14 @@ export class Parser { const pattern = patternList.list[0].d.orPatterns[0]; if (pattern.nodeType === ParseNodeType.PatternCapture && pattern.d.isStar) { - casePattern = PatternSequenceNode.create(startToken, patternList.list); + casePattern = PatternSequenceNode.create(this._getOwnerKey(), startToken, patternList.list); } else { casePattern = patternList.list[0]; } extendRange(casePattern, nextToken); } else { - casePattern = PatternSequenceNode.create(startToken, patternList.list); + casePattern = PatternSequenceNode.create(this._getOwnerKey(), startToken, patternList.list); } const endToken = this._peekToken(); @@ -1274,14 +1332,14 @@ export class Parser { ) { const classNameToken = this._getTokenIfIdentifier(); if (classNameToken !== undefined) { - keywordName = NameNode.create(classNameToken); + keywordName = NameNode.create(this._getOwnerKey(), classNameToken); this._getNextToken(); } } const pattern = this._parsePatternAs(); - return PatternClassArgumentNode.create(pattern, keywordName); + return PatternClassArgumentNode.create(this._getOwnerKey(), pattern, keywordName); } // literal_pattern: @@ -1311,7 +1369,7 @@ export class Parser { } }); - return PatternLiteralNode.create(stringList); + return PatternLiteralNode.create(this._getOwnerKey(), stringList); } if (nextToken.type === TokenType.Keyword) { @@ -1321,7 +1379,7 @@ export class Parser { keywordToken.keywordType === KeywordType.True || keywordToken.keywordType === KeywordType.None ) { - return PatternLiteralNode.create(this._parseAtom()); + return PatternLiteralNode.create(this._getOwnerKey(), this._parseAtom()); } } @@ -1364,7 +1422,7 @@ export class Parser { } } - return PatternLiteralNode.create(expression); + return PatternLiteralNode.create(this._getOwnerKey(), expression); } private _parsePatternMapping(firstToken: Token): PatternMappingNode | ErrorNode { @@ -1379,10 +1437,13 @@ export class Parser { this._addSyntaxError(LocMessage.duplicateStarStarPattern(), starStarEntries[1]); } - return PatternMappingNode.create(firstToken, itemList.list); + return PatternMappingNode.create(this._getOwnerKey(), firstToken, itemList.list); } - return itemList.parseError || ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingPattern); + return ( + itemList.parseError || + ErrorNode.create(this._getOwnerKey(), this._peekToken(), ErrorExpressionCategory.MissingPattern) + ); } // key_value_pattern: @@ -1396,15 +1457,15 @@ export class Parser { const identifierToken = this._getTokenIfIdentifier(); if (!identifierToken) { this._addSyntaxError(LocMessage.expectedIdentifier(), this._peekToken()); - return ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingPattern); + return ErrorNode.create(this._getOwnerKey(), this._peekToken(), ErrorExpressionCategory.MissingPattern); } - const nameNode = NameNode.create(identifierToken); + const nameNode = NameNode.create(this._getOwnerKey(), identifierToken); if (identifierToken.value === '_') { this._addSyntaxError(LocMessage.starStarWildcardNotAllowed(), nameNode); } - return PatternMappingExpandEntryNode.create(doubleStar, nameNode); + return PatternMappingExpandEntryNode.create(this._getOwnerKey(), doubleStar, nameNode); } const patternLiteral = this._parsePatternLiteral(); @@ -1417,25 +1478,37 @@ export class Parser { keyExpression = patternCaptureOrValue; } else { this._addSyntaxError(LocMessage.expectedPatternValue(), patternCaptureOrValue); - keyExpression = ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingPattern); + keyExpression = ErrorNode.create( + this._getOwnerKey(), + this._peekToken(), + ErrorExpressionCategory.MissingPattern + ); } } } if (!keyExpression) { this._addSyntaxError(LocMessage.expectedPatternExpr(), this._peekToken()); - keyExpression = ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingPattern); + keyExpression = ErrorNode.create( + this._getOwnerKey(), + this._peekToken(), + ErrorExpressionCategory.MissingPattern + ); } let valuePattern: PatternAtomNode | undefined; if (!this._consumeTokenIfType(TokenType.Colon)) { this._addSyntaxError(LocMessage.expectedColon(), this._peekToken()); - valuePattern = ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingPattern); + valuePattern = ErrorNode.create( + this._getOwnerKey(), + this._peekToken(), + ErrorExpressionCategory.MissingPattern + ); } else { valuePattern = this._parsePatternAs(); } - return PatternMappingKeyEntryNode.create(keyExpression, valuePattern); + return PatternMappingKeyEntryNode.create(this._getOwnerKey(), keyExpression, valuePattern); } private _parsePatternCaptureOrValue(): PatternCaptureNode | PatternValueNode | ErrorNode | undefined { @@ -1447,8 +1520,10 @@ export class Parser { while (true) { const identifierToken = this._getTokenIfIdentifier(); if (identifierToken) { - const nameNode = NameNode.create(identifierToken); - nameOrMember = nameOrMember ? MemberAccessNode.create(nameOrMember, nameNode) : nameNode; + const nameNode = NameNode.create(this._getOwnerKey(), identifierToken); + nameOrMember = nameOrMember + ? MemberAccessNode.create(this._getOwnerKey(), nameOrMember, nameNode) + : nameNode; } else { this._addSyntaxError(LocMessage.expectedIdentifier(), this._peekToken()); break; @@ -1461,14 +1536,14 @@ export class Parser { if (!nameOrMember) { this._addSyntaxError(LocMessage.expectedIdentifier(), this._peekToken()); - return ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingPattern); + return ErrorNode.create(this._getOwnerKey(), this._peekToken(), ErrorExpressionCategory.MissingPattern); } if (nameOrMember.nodeType === ParseNodeType.MemberAccess) { - return PatternValueNode.create(nameOrMember); + return PatternValueNode.create(this._getOwnerKey(), nameOrMember); } - return PatternCaptureNode.create(nameOrMember); + return PatternCaptureNode.create(this._getOwnerKey(), nameOrMember); } return undefined; @@ -1482,7 +1557,7 @@ export class Parser { const test = this._parseTestExpression(/* allowAssignmentExpression */ true); const suite = this._parseSuite(this._isInFunction); - const ifNode = IfNode.create(ifOrElifToken, test, suite); + const ifNode = IfNode.create(this._getOwnerKey(), ifOrElifToken, test, suite); if (this._consumeTokenIfKeyword(KeywordType.Else)) { ifNode.d.elseSuite = this._parseSuite(this._isInFunction); @@ -1545,7 +1620,7 @@ export class Parser { // suite: ':' (simple_stmt | NEWLINE INDENT stmt+ DEDENT) private _parseSuite(isFunction = false, skipBody = false, postColonCallback?: () => void): SuiteNode { const nextToken = this._peekToken(); - const suite = SuiteNode.create(nextToken); + const suite = SuiteNode.create(this._getOwnerKey(), nextToken); if (!this._consumeTokenIfType(TokenType.Colon)) { this._addSyntaxError(LocMessage.expectedColon(), nextToken); @@ -1624,6 +1699,34 @@ export class Parser { } while (true) { + // In notebook mode, an IPython magic or shell-escape line is consumed into a + // comment, which can leave a bare NewLine token at the start of a suite body. + // Skip such blank lines like the module-level loop does so they aren't misparsed + // as an empty statement (which would report a spurious "expected expression"). + if (this._parseOptions.useNotebookMode && this._peekTokenType() === TokenType.NewLine) { + this._getNextToken(); + + // If the magic/blank line(s) were the entire suite body, this is a valid empty + // suite. Report any indentation inconsistency on the terminating dedent (shared + // with the normal dedent branch below via _reportDedentInconsistencies), then consume + // the dedent so it doesn't bubble up to the enclosing scope (which would otherwise + // report a spurious "unindent not expected"). Unlike the normal dedent branch, + // which leaves an empty suite's dedent unconsumed for multi-level recovery, a + // magic-only suite is a valid empty suite and consumes its own dedent here. + if (this._peekTokenType() === TokenType.Dedent && suite.d.statements.length === 0) { + const dedentToken = this._peekToken() as DedentToken; + this._reportDedentInconsistencies(dedentToken); + this._getNextToken(); + extendRange(suite, dedentToken); + break; + } + + if (this._peekTokenType() === TokenType.EndOfStream) { + break; + } + continue; + } + // Handle a common error here and see if we can recover. const nextToken = this._peekToken(); if (nextToken.type === TokenType.Indent) { @@ -1637,12 +1740,7 @@ export class Parser { } else if (nextToken.type === TokenType.Dedent) { // When we see a dedent, stop before parsing the dedented statement. const dedentToken = nextToken as DedentToken; - if (!dedentToken.matchesIndent) { - this._addSyntaxError(LocMessage.inconsistentIndent(), dedentToken); - } - if (dedentToken.isDedentAmbiguous) { - this._addSyntaxError(LocMessage.inconsistentTabs(), dedentToken); - } + this._reportDedentInconsistencies(dedentToken); // When the suite is incomplete (no statements), leave the dedent token for // recovery. This allows a single dedent token to cause us to break out of @@ -1698,6 +1796,18 @@ export class Parser { return suite; } + // Reports indentation inconsistencies (inconsistent indent / ambiguous tabs) for a terminating + // dedent token. Shared by _parseSuite's notebook-mode empty-suite branch and its normal dedent + // branch so the two sites can't drift apart. + private _reportDedentInconsistencies(dedentToken: DedentToken) { + if (!dedentToken.matchesIndent) { + this._addSyntaxError(LocMessage.inconsistentIndent(), dedentToken); + } + if (dedentToken.isDedentAmbiguous) { + this._addSyntaxError(LocMessage.inconsistentTabs(), dedentToken); + } + } + // for_stmt: [async] 'for' exprlist 'in' testlist suite ['else' suite] private _parseForStatement(asyncToken?: KeywordToken): ForNode { const forToken = this._getKeywordToken(KeywordType.For); @@ -1714,7 +1824,7 @@ export class Parser { if (!this._consumeTokenIfKeyword(KeywordType.In)) { seqExpr = this._handleExpressionParseError(ErrorExpressionCategory.MissingIn, LocMessage.expectedIn()); - forSuite = SuiteNode.create(this._peekToken()); + forSuite = SuiteNode.create(this._getOwnerKey(), TextRange.create(this._peekToken().start, /* length */ 0)); } else { seqExpr = this._parseTestOrStarListAsExpression( /* allowAssignmentExpression */ false, @@ -1747,7 +1857,7 @@ export class Parser { } } - const forNode = ForNode.create(forToken, targetExpr, seqExpr, forSuite); + const forNode = ForNode.create(this._getOwnerKey(), forToken, targetExpr, seqExpr, forSuite); forNode.d.elseSuite = elseSuite; if (elseSuite) { extendRange(forNode, elseSuite); @@ -1781,7 +1891,7 @@ export class Parser { this._addSyntaxError(LocMessage.dictExpandIllegalInComprehension(), target); } - const compNode = ComprehensionNode.create(target, isGenerator); + const compNode = ComprehensionNode.create(this._getOwnerKey(), target, isGenerator); const forIfList: ComprehensionForIfNode[] = [compFor]; while (true) { @@ -1838,7 +1948,12 @@ export class Parser { }); } - const compForNode = ComprehensionForNode.create(asyncToken || forToken, targetExpr, seqExpr!); + const compForNode = ComprehensionForNode.create( + this._getOwnerKey(), + asyncToken || forToken, + targetExpr, + seqExpr! + ); if (asyncToken) { compForNode.d.isAsync = true; @@ -1860,7 +1975,7 @@ export class Parser { this._tryParseLambdaExpression() || this._parseAssignmentExpression(/* disallowAssignmentExpression */ true); - const compIfNode = ComprehensionIfNode.create(ifToken, ifExpr); + const compIfNode = ComprehensionIfNode.create(this._getOwnerKey(), ifToken, ifExpr); return compIfNode; } @@ -1870,6 +1985,7 @@ export class Parser { const whileToken = this._getKeywordToken(KeywordType.While); const whileNode = WhileNode.create( + this._getOwnerKey(), whileToken, this._parseTestExpression(/* allowAssignmentExpression */ true), this._parseLoopSuite() @@ -1893,7 +2009,7 @@ export class Parser { private _parseTryStatement(): TryNode { const tryToken = this._getKeywordToken(KeywordType.Try); const trySuite = this._parseSuite(this._isInFunction); - const tryNode = TryNode.create(tryToken, trySuite); + const tryNode = TryNode.create(this._getOwnerKey(), tryToken, trySuite); let sawCatchAllExcept = false; let reportedExceptGroupMismatch = false; @@ -1977,14 +2093,14 @@ export class Parser { } const exceptSuite = this._parseExceptSuite(isExceptGroup, () => this._parseSuite(this._isInFunction)); - const exceptNode = ExceptNode.create(exceptToken, exceptSuite, isExceptGroup); + const exceptNode = ExceptNode.create(this._getOwnerKey(), exceptToken, exceptSuite, isExceptGroup); if (typeExpr) { exceptNode.d.typeExpr = typeExpr; exceptNode.d.typeExpr.parent = exceptNode; } if (symbolName) { - exceptNode.d.name = NameNode.create(symbolName); + exceptNode.d.name = NameNode.create(this._getOwnerKey(), symbolName); exceptNode.d.name.parent = exceptNode; } @@ -2033,6 +2149,7 @@ export class Parser { if (!nameToken) { this._addSyntaxError(LocMessage.expectedFunctionName(), defToken); return ErrorNode.create( + this._getOwnerKey(), defToken, ErrorExpressionCategory.MissingFunctionParameterList, undefined, @@ -2056,9 +2173,10 @@ export class Parser { if (!this._consumeTokenIfType(TokenType.OpenParenthesis)) { this._addSyntaxError(LocMessage.expectedOpenParen(), this._peekToken()); return ErrorNode.create( + this._getOwnerKey(), nameToken, ErrorExpressionCategory.MissingFunctionParameterList, - NameNode.create(nameToken), + NameNode.create(this._getOwnerKey(), nameToken), decorators ); } @@ -2094,7 +2212,13 @@ export class Parser { this._isInFinallyBlock = wasInFinallyBlock; this._isInFinallyLoop = wasInFinallyLoop; - const functionNode = FunctionNode.create(defToken, NameNode.create(nameToken), suite, typeParameters); + const functionNode = FunctionNode.create( + this._getOwnerKey(), + defToken, + NameNode.create(this._getOwnerKey(), nameToken), + suite, + typeParameters + ); if (asyncToken) { functionNode.d.isAsync = true; extendRange(functionNode, asyncToken); @@ -2286,10 +2410,10 @@ export class Parser { const paramName = this._getTokenIfIdentifier(); if (!paramName) { if (starCount === 1) { - const paramNode = ParameterNode.create(firstToken, ParamCategory.ArgsList); + const paramNode = ParameterNode.create(this._getOwnerKey(), firstToken, ParamCategory.ArgsList); return paramNode; } else if (slashCount === 1) { - const paramNode = ParameterNode.create(firstToken, ParamCategory.Simple); + const paramNode = ParameterNode.create(this._getOwnerKey(), firstToken, ParamCategory.Simple); return paramNode; } @@ -2311,9 +2435,9 @@ export class Parser { } else if (starCount === 2) { paramType = ParamCategory.KwargsDict; } - const paramNode = ParameterNode.create(firstToken, paramType); + const paramNode = ParameterNode.create(this._getOwnerKey(), firstToken, paramType); if (paramName) { - paramNode.d.name = NameNode.create(paramName); + paramNode.d.name = NameNode.create(this._getOwnerKey(), paramName); paramNode.d.name.parent = paramNode; extendRange(paramNode, paramName); } @@ -2417,7 +2541,7 @@ export class Parser { typeComment = comment; } }); - const withNode = WithNode.create(withToken, withSuite); + const withNode = WithNode.create(this._getOwnerKey(), withToken, withSuite); if (asyncToken) { withNode.d.isAsync = true; withNode.d.asyncToken = asyncToken; @@ -2439,7 +2563,7 @@ export class Parser { // with_item: test ['as' expr] private _parseWithItem(): WithItemNode { const expr = this._parseTestExpression(/* allowAssignmentExpression */ true); - const itemNode = WithItemNode.create(expr); + const itemNode = WithItemNode.create(this._getOwnerKey(), expr); if (this._consumeTokenIfKeyword(KeywordType.As)) { itemNode.d.target = this._parseExpression(/* allowUnpack */ false); @@ -2484,7 +2608,7 @@ export class Parser { // Return a dummy class declaration so the completion provider has // some parse nodes to work with. - return ClassNode.createDummyForDecorators(decoratorList); + return ClassNode.createDummyForDecorators(this._getOwnerKey(), decoratorList); } // decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE @@ -2512,7 +2636,7 @@ export class Parser { } } - const decoratorNode = DecoratorNode.create(atOperator, expression); + const decoratorNode = DecoratorNode.create(this._getOwnerKey(), atOperator, expression); if (!this._consumeTokenIfType(TokenType.NewLine)) { this._addSyntaxError(LocMessage.expectedDecoratorNewline(), this._peekToken()); @@ -2567,7 +2691,13 @@ export class Parser { const suite = this._parseSuite(/* isFunction */ false, this._parseOptions.skipFunctionAndClassBody); - const classNode = ClassNode.create(classToken, NameNode.create(nameToken), suite, typeParameters); + const classNode = ClassNode.create( + this._getOwnerKey(), + classToken, + NameNode.create(this._getOwnerKey(), nameToken), + suite, + typeParameters + ); classNode.d.arguments = argList; argList.forEach((arg) => { arg.parent = classNode; @@ -2587,7 +2717,7 @@ export class Parser { } private _parsePassStatement(): PassNode { - return PassNode.create(this._getKeywordToken(KeywordType.Pass)); + return PassNode.create(this._getOwnerKey(), this._getKeywordToken(KeywordType.Pass)); } private _parseBreakStatement(): BreakNode { @@ -2603,7 +2733,7 @@ export class Parser { this._addSyntaxError(LocMessage.finallyBreak(), breakToken); } - return BreakNode.create(breakToken); + return BreakNode.create(this._getOwnerKey(), breakToken); } private _parseContinueStatement(): ContinueNode { @@ -2619,14 +2749,14 @@ export class Parser { this._addSyntaxError(LocMessage.finallyContinue(), continueToken); } - return ContinueNode.create(continueToken); + return ContinueNode.create(this._getOwnerKey(), continueToken); } // return_stmt: 'return' [testlist] private _parseReturnStatement(): ReturnNode { const returnToken = this._getKeywordToken(KeywordType.Return); - const returnNode = ReturnNode.create(returnToken); + const returnNode = ReturnNode.create(this._getOwnerKey(), returnToken); if (!this._isInFunction) { this._addSyntaxError(LocMessage.returnOutsideFunction(), returnToken); @@ -2662,7 +2792,7 @@ export class Parser { const fromToken = this._getKeywordToken(KeywordType.From); const modName = this._parseDottedModuleName(/* allowJustDots */ true); - const importFromNode = ImportFromNode.create(fromToken, modName); + const importFromNode = ImportFromNode.create(this._getOwnerKey(), fromToken, modName); // Handle imports from __future__ specially because they can // change the way we interpret the rest of the file. @@ -2700,14 +2830,17 @@ export class Parser { trailingCommaToken = undefined; - const importFromAsNode = ImportFromAsNode.create(NameNode.create(importName)); + const importFromAsNode = ImportFromAsNode.create( + this._getOwnerKey(), + NameNode.create(this._getOwnerKey(), importName) + ); if (this._consumeTokenIfKeyword(KeywordType.As)) { const aliasName = this._getTokenIfIdentifier(); if (!aliasName) { this._addSyntaxError(LocMessage.expectedImportAlias(), this._peekToken()); } else { - importFromAsNode.d.alias = NameNode.create(aliasName); + importFromAsNode.d.alias = NameNode.create(this._getOwnerKey(), aliasName); importFromAsNode.d.alias.parent = importFromAsNode; extendRange(importFromAsNode, aliasName); } @@ -2788,17 +2921,17 @@ export class Parser { private _parseImportStatement(): ImportNode { const importToken = this._getKeywordToken(KeywordType.Import); - const importNode = ImportNode.create(importToken); + const importNode = ImportNode.create(this._getOwnerKey(), importToken); while (true) { const modName = this._parseDottedModuleName(); - const importAsNode = ImportAsNode.create(modName); + const importAsNode = ImportAsNode.create(this._getOwnerKey(), modName); if (this._consumeTokenIfKeyword(KeywordType.As)) { const aliasToken = this._getTokenIfIdentifier(); if (aliasToken) { - importAsNode.d.alias = NameNode.create(aliasToken); + importAsNode.d.alias = NameNode.create(this._getOwnerKey(), aliasToken); importAsNode.d.alias.parent = importAsNode; extendRange(importAsNode, importAsNode.d.alias); } else { @@ -2861,7 +2994,7 @@ export class Parser { // ('.' | '...')* dotted_name | ('.' | '...')+ // dotted_name: NAME ('.' NAME)* private _parseDottedModuleName(allowJustDots = false): ModuleNameNode { - const moduleNameNode = ModuleNameNode.create(this._peekToken()); + const moduleNameNode = ModuleNameNode.create(this._getOwnerKey(), this._peekToken()); while (true) { const token = this._getTokenIfType(TokenType.Ellipsis) ?? this._getTokenIfType(TokenType.Dot); @@ -2888,7 +3021,7 @@ export class Parser { break; } - const namePart = NameNode.create(identifier); + const namePart = NameNode.create(this._getOwnerKey(), identifier); moduleNameNode.d.nameParts.push(namePart); namePart.parent = moduleNameNode; extendRange(moduleNameNode, namePart); @@ -2908,7 +3041,7 @@ export class Parser { private _parseGlobalStatement(): GlobalNode { const globalToken = this._getKeywordToken(KeywordType.Global); - const globalNode = GlobalNode.create(globalToken); + const globalNode = GlobalNode.create(this._getOwnerKey(), globalToken); globalNode.d.targets = this._parseNameList(); if (globalNode.d.targets.length > 0) { globalNode.d.targets.forEach((name) => { @@ -2922,7 +3055,7 @@ export class Parser { private _parseNonlocalStatement(): NonlocalNode { const nonlocalToken = this._getKeywordToken(KeywordType.Nonlocal); - const nonlocalNode = NonlocalNode.create(nonlocalToken); + const nonlocalNode = NonlocalNode.create(this._getOwnerKey(), nonlocalToken); nonlocalNode.d.targets = this._parseNameList(); if (nonlocalNode.d.targets.length > 0) { nonlocalNode.d.targets.forEach((name) => { @@ -2943,7 +3076,7 @@ export class Parser { break; } - nameList.push(NameNode.create(name)); + nameList.push(NameNode.create(this._getOwnerKey(), name)); if (!this._consumeTokenIfType(TokenType.Comma)) { break; @@ -2958,7 +3091,7 @@ export class Parser { private _parseRaiseStatement(): RaiseNode { const raiseToken = this._getKeywordToken(KeywordType.Raise); - const raiseNode = RaiseNode.create(raiseToken); + const raiseNode = RaiseNode.create(this._getOwnerKey(), raiseToken); if (!this._isNextTokenNeverExpression()) { raiseNode.d.expr = this._parseTestExpression(/* allowAssignmentExpression */ true); raiseNode.d.expr.parent = raiseNode; @@ -2979,7 +3112,7 @@ export class Parser { const assertToken = this._getKeywordToken(KeywordType.Assert); const expr = this._parseTestExpression(/* allowAssignmentExpression */ false); - const assertNode = AssertNode.create(assertToken, expr); + const assertNode = AssertNode.create(this._getOwnerKey(), assertToken, expr); if (this._consumeTokenIfType(TokenType.Comma)) { const exceptionExpr = this._parseTestExpression(/* allowAssignmentExpression */ false); @@ -2999,7 +3132,7 @@ export class Parser { if (!exprListResult.parseError && exprListResult.list.length === 0) { this._addSyntaxError(LocMessage.expectedDelExpr(), this._peekToken()); } - const delNode = DelNode.create(delToken); + const delNode = DelNode.create(this._getOwnerKey(), delToken); delNode.d.targets = exprListResult.list; if (delNode.d.targets.length > 0) { delNode.d.targets.forEach((expr) => { @@ -3020,7 +3153,11 @@ export class Parser { if (PythonVersion.isLessThan(this._getLanguageVersion(), pythonVersion3_3)) { this._addSyntaxError(LocMessage.yieldFromIllegal(), nextToken); } - return YieldFromNode.create(yieldToken, this._parseTestExpression(/* allowAssignmentExpression */ false)); + return YieldFromNode.create( + this._getOwnerKey(), + yieldToken, + this._parseTestExpression(/* allowAssignmentExpression */ false) + ); } let exprList: ExpressionNode | undefined; @@ -3034,7 +3171,7 @@ export class Parser { this._reportConditionalErrorForStarTupleElement(exprList); } - return YieldNode.create(yieldToken, exprList); + return YieldNode.create(this._getOwnerKey(), yieldToken, exprList); } private _tryParseYieldExpression(): YieldNode | YieldFromNode | undefined { @@ -3047,7 +3184,7 @@ export class Parser { // simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE private _parseSimpleStatement(): StatementListNode { - const statement = StatementListNode.create(this._peekToken()); + const statement = StatementListNode.create(this._getOwnerKey(), this._peekToken()); while (true) { // Swallow invalid tokens to make sure we make forward progress. @@ -3215,7 +3352,7 @@ export class Parser { const tupleStartRange: TextRange = exprListResult.list.length > 0 ? exprListResult.list[0] : this._peekToken(-1); - const tupleNode = TupleNode.create(tupleStartRange, enclosedInParens); + const tupleNode = TupleNode.create(this._getOwnerKey(), tupleStartRange, enclosedInParens); tupleNode.d.items = exprListResult.list; if (exprListResult.list.length > 0) { exprListResult.list.forEach((expr) => { @@ -3234,7 +3371,7 @@ export class Parser { ): ExpressionNode { if (this._isNextTokenNeverExpression()) { this._addSyntaxError(getErrorString(), errorToken); - return ErrorNode.create(errorToken, errorCategory); + return ErrorNode.create(this._getOwnerKey(), errorToken, errorCategory); } const exprListResult = this._parseExpressionList(/* allowStar */ true); @@ -3316,7 +3453,7 @@ export class Parser { const startToken = this._peekToken(); if (allowUnpack && this._consumeTokenIfOperator(OperatorType.Multiply)) { - return UnpackNode.create(startToken, this._parseExpression(/* allowUnpack */ false)); + return UnpackNode.create(this._getOwnerKey(), startToken, this._parseExpression(/* allowUnpack */ false)); } return this._parseBitwiseOrExpression(); @@ -3353,6 +3490,7 @@ export class Parser { if (!this._consumeTokenIfKeyword(KeywordType.Else)) { return TernaryNode.create( + this._getOwnerKey(), ifExpr, testExpr, this._handleExpressionParseError(ErrorExpressionCategory.MissingElse, LocMessage.expectedElse()) @@ -3361,7 +3499,7 @@ export class Parser { const elseExpr = this._parseTestExpression(/* allowAssignmentExpression */ true); - return TernaryNode.create(ifExpr, testExpr, elseExpr); + return TernaryNode.create(this._getOwnerKey(), ifExpr, testExpr, elseExpr); } // assign_expr: NAME := test @@ -3390,7 +3528,7 @@ export class Parser { const rightExpr = this._parseTestExpression(/* allowAssignmentExpression */ false); - return AssignmentExpressionNode.create(leftExpr, walrusToken, rightExpr); + return AssignmentExpressionNode.create(this._getOwnerKey(), leftExpr, walrusToken, rightExpr); } // or_test: and_test ('or' and_test)* @@ -3695,7 +3833,12 @@ export class Parser { this._isParsingTypeAnnotation = false; const argListResult = this._parseArgList(); - const callNode = CallNode.create(atomExpression, argListResult.args, argListResult.trailingComma); + const callNode = CallNode.create( + this._getOwnerKey(), + atomExpression, + argListResult.args, + argListResult.trailingComma + ); if (argListResult.args.length > 1 || argListResult.trailingComma) { argListResult.args.forEach((arg) => { @@ -3728,7 +3871,11 @@ export class Parser { const maxDepth = this._maxChildDepthMap.get(atomExpression.id) ?? 0; if (maxDepth >= maxChildNodeDepth) { - atomExpression = ErrorNode.create(callNode, ErrorExpressionCategory.MaxDepthExceeded); + atomExpression = ErrorNode.create( + this._getOwnerKey(), + callNode, + ErrorExpressionCategory.MaxDepthExceeded + ); this._addSyntaxError(LocMessage.maxParseDepthExceeded(), atomExpression); } else { atomExpression = callNode; @@ -3763,6 +3910,7 @@ export class Parser { const closingToken = this._peekToken(); const indexNode = IndexNode.create( + this._getOwnerKey(), atomExpression, subscriptList.list, subscriptList.trailingComma, @@ -3783,7 +3931,11 @@ export class Parser { const maxDepth = this._maxChildDepthMap.get(atomExpression.id) ?? 0; if (maxDepth >= maxChildNodeDepth) { - atomExpression = ErrorNode.create(indexNode, ErrorExpressionCategory.MaxDepthExceeded); + atomExpression = ErrorNode.create( + this._getOwnerKey(), + indexNode, + ErrorExpressionCategory.MaxDepthExceeded + ); this._addSyntaxError(LocMessage.maxParseDepthExceeded(), atomExpression); } else { atomExpression = indexNode; @@ -3802,11 +3954,19 @@ export class Parser { ); } - const memberAccessNode = MemberAccessNode.create(atomExpression, NameNode.create(memberName)); + const memberAccessNode = MemberAccessNode.create( + this._getOwnerKey(), + atomExpression, + NameNode.create(this._getOwnerKey(), memberName) + ); const maxDepth = this._maxChildDepthMap.get(atomExpression.id) ?? 0; if (maxDepth >= maxChildNodeDepth) { - atomExpression = ErrorNode.create(memberAccessNode, ErrorExpressionCategory.MaxDepthExceeded); + atomExpression = ErrorNode.create( + this._getOwnerKey(), + memberAccessNode, + ErrorExpressionCategory.MaxDepthExceeded + ); this._addSyntaxError(LocMessage.maxParseDepthExceeded(), atomExpression); } else { atomExpression = memberAccessNode; @@ -3818,7 +3978,7 @@ export class Parser { } if (awaitToken) { - return AwaitNode.create(awaitToken, atomExpression); + return AwaitNode.create(this._getOwnerKey(), awaitToken, atomExpression); } return atomExpression; @@ -3876,9 +4036,9 @@ export class Parser { } } - const argNode = ArgumentNode.create(firstToken, valueExpr, argType); + const argNode = ArgumentNode.create(this._getOwnerKey(), firstToken, valueExpr, argType); if (nameIdentifier) { - argNode.d.name = NameNode.create(nameIdentifier); + argNode.d.name = NameNode.create(this._getOwnerKey(), nameIdentifier); argNode.d.name.parent = argNode; } @@ -3925,7 +4085,7 @@ export class Parser { /* childNode */ undefined, [TokenType.CloseBracket] ); - argList.push(ArgumentNode.create(this._peekToken(), errorNode, ArgCategory.Simple)); + argList.push(ArgumentNode.create(this._getOwnerKey(), this._peekToken(), errorNode, ArgCategory.Simple)); } return { @@ -3969,10 +4129,14 @@ export class Parser { return sliceExpressions[0]; } - return ErrorNode.create(this._peekToken(), ErrorExpressionCategory.MissingIndexOrSlice); + return ErrorNode.create( + this._getOwnerKey(), + this._peekToken(), + ErrorExpressionCategory.MissingIndexOrSlice + ); } - const sliceNode = SliceNode.create(firstToken); + const sliceNode = SliceNode.create(this._getOwnerKey(), firstToken); sliceNode.d.startValue = sliceExpressions[0]; if (sliceNode.d.startValue) { sliceNode.d.startValue.parent = sliceNode; @@ -4073,9 +4237,9 @@ export class Parser { } } - const argNode = ArgumentNode.create(firstToken, valueExpr, argType); + const argNode = ArgumentNode.create(this._getOwnerKey(), firstToken, valueExpr, argType); if (nameIdentifier) { - argNode.d.name = NameNode.create(nameIdentifier); + argNode.d.name = NameNode.create(this._getOwnerKey(), nameIdentifier); argNode.d.name.parent = argNode; } @@ -4090,15 +4254,15 @@ export class Parser { const nextToken = this._peekToken(); if (nextToken.type === TokenType.Ellipsis) { - return EllipsisNode.create(this._getNextToken()); + return EllipsisNode.create(this._getOwnerKey(), this._getNextToken()); } if (nextToken.type === TokenType.Number) { - return NumberNode.create(this._getNextToken() as NumberToken); + return NumberNode.create(this._getOwnerKey(), this._getNextToken() as NumberToken); } if (nextToken.type === TokenType.Identifier) { - return NameNode.create(this._getNextToken() as IdentifierToken); + return NameNode.create(this._getOwnerKey(), this._getNextToken() as IdentifierToken); } if (nextToken.type === TokenType.String || nextToken.type === TokenType.FStringStart) { @@ -4159,13 +4323,13 @@ export class Parser { keywordToken.keywordType === KeywordType.Debug || keywordToken.keywordType === KeywordType.None ) { - return ConstantNode.create(this._getNextToken() as KeywordToken); + return ConstantNode.create(this._getOwnerKey(), this._getNextToken() as KeywordToken); } // Make an identifier out of the keyword. const keywordAsIdentifier = this._getTokenIfIdentifier(); if (keywordAsIdentifier) { - return NameNode.create(keywordAsIdentifier); + return NameNode.create(this._getOwnerKey(), keywordAsIdentifier); } } @@ -4196,7 +4360,7 @@ export class Parser { const initialRange: TextRange = stopTokens.some((k) => nextToken.type === k) ? targetToken ?? childNode ?? TextRange.create(nextToken.start, /* length */ 0) : nextToken; - const expr = ErrorNode.create(initialRange, category, childNode); + const expr = ErrorNode.create(this._getOwnerKey(), initialRange, category, childNode); this._consumeTokensUntilType(stopTokens); return expr; @@ -4219,7 +4383,7 @@ export class Parser { testExpr = this._tryParseLambdaExpression(/* allowConditional */ false) || this._parseOrTest(); } - const lambdaNode = LambdaNode.create(lambdaToken, testExpr); + const lambdaNode = LambdaNode.create(this._getOwnerKey(), lambdaToken, testExpr); lambdaNode.d.params = argList; argList.forEach((arg) => { arg.parent = lambdaNode; @@ -4281,6 +4445,7 @@ export class Parser { private _parseListAtom(): ListNode | ErrorNode { const startBracket = this._getNextToken(); assert(startBracket.type === TokenType.OpenBracket); + const ownerKey = this._getOwnerKey(); const exprListResult = this._parseTestListWithComprehension(/* isGenerator */ false); const closeBracket: Token | undefined = this._peekToken(); @@ -4296,7 +4461,7 @@ export class Parser { return _createList(); function _createList() { - const listAtom = ListNode.create(startBracket); + const listAtom = ListNode.create(ownerKey, startBracket); if (closeBracket) { extendRange(listAtom, closeBracket); @@ -4403,7 +4568,11 @@ export class Parser { if (isSet) { this._addSyntaxError(LocMessage.keyValueInSet(), valueExpression); } else { - const keyEntryNode = DictionaryKeyEntryNode.create(keyExpression, valueExpression); + const keyEntryNode = DictionaryKeyEntryNode.create( + this._getOwnerKey(), + keyExpression, + valueExpression + ); let dictEntry: DictionaryEntryNode = keyEntryNode; const comprehension = this._tryParseComprehension(keyEntryNode, /* isGenerator */ false); if (comprehension) { @@ -4421,7 +4590,7 @@ export class Parser { if (isSet) { this._addSyntaxError(LocMessage.unpackInSet(), doubleStarExpression); } else { - const listEntryNode = DictionaryExpandEntryNode.create(doubleStarExpression); + const listEntryNode = DictionaryExpandEntryNode.create(this._getOwnerKey(), doubleStarExpression); extendRange(listEntryNode, doubleStar); let expandEntryNode: DictionaryEntryNode = listEntryNode; const comprehension = this._tryParseComprehension(listEntryNode, /* isGenerator */ false); @@ -4441,10 +4610,15 @@ export class Parser { if (keyExpression) { if (isDictionary) { const missingValueErrorNode = ErrorNode.create( + this._getOwnerKey(), this._peekToken(), ErrorExpressionCategory.MissingDictValue ); - const keyEntryNode = DictionaryKeyEntryNode.create(keyExpression, missingValueErrorNode); + const keyEntryNode = DictionaryKeyEntryNode.create( + this._getOwnerKey(), + keyExpression, + missingValueErrorNode + ); dictionaryEntries.push(keyEntryNode); this._addSyntaxError(LocMessage.dictKeyValuePairs(), keyExpression); } else { @@ -4484,7 +4658,7 @@ export class Parser { } if (isSet) { - const setAtom = SetNode.create(startBrace); + const setAtom = SetNode.create(this._getOwnerKey(), startBrace); if (closeCurlyBrace) { extendRange(setAtom, closeCurlyBrace); } @@ -4501,7 +4675,7 @@ export class Parser { return setAtom; } - const dictionaryAtom = DictionaryNode.create(startBrace); + const dictionaryAtom = DictionaryNode.create(this._getOwnerKey(), startBrace); if (trailingCommaToken) { dictionaryAtom.d.trailingCommaToken = trailingCommaToken; @@ -4581,7 +4755,7 @@ export class Parser { // Is this a type annotation assignment? if (this._consumeTokenIfType(TokenType.Colon)) { annotationExpr = this._parseTypeAnnotation(); - leftExpr = TypeAnnotationNode.create(leftExpr, annotationExpr); + leftExpr = TypeAnnotationNode.create(this._getOwnerKey(), leftExpr, annotationExpr); if ( !this._parseOptions.isStubFile && @@ -4616,7 +4790,7 @@ export class Parser { this._isParsingTypeAnnotation = wasParsingTypeAnnotation; - return AssignmentNode.create(leftExpr, rightExpr); + return AssignmentNode.create(this._getOwnerKey(), leftExpr, rightExpr); } // Is this a simple assignment? @@ -4641,7 +4815,13 @@ export class Parser { const destExpr = Object.assign({}, leftExpr); destExpr.id = getNextNodeId(); - return AugmentedAssignmentNode.create(leftExpr, rightExpr, operatorToken.operatorType, destExpr); + return AugmentedAssignmentNode.create( + this._getOwnerKey(), + leftExpr, + rightExpr, + operatorToken.operatorType, + destExpr + ); } return leftExpr; @@ -4676,7 +4856,7 @@ export class Parser { // Create a tree of assignment expressions starting with the first one. // The final RHS value is assigned to the targets left to right in Python. - let assignmentNode = AssignmentNode.create(assignmentTargets[0], rightExpr); + let assignmentNode = AssignmentNode.create(this._getOwnerKey(), assignmentTargets[0], rightExpr); // Look for a type annotation comment at the end of the line. const typeAnnotationComment = this._parseVariableTypeAnnotationComment(); @@ -4696,7 +4876,7 @@ export class Parser { assignmentTargets.forEach((target, index) => { if (index > 0) { - assignmentNode = AssignmentNode.create(target, assignmentNode); + assignmentNode = AssignmentNode.create(this._getOwnerKey(), target, assignmentNode); } }); @@ -4753,7 +4933,13 @@ export class Parser { isParamListEllipsis = true; } - return FunctionAnnotationNode.create(openParenToken, isParamListEllipsis, paramAnnotations, returnType); + return FunctionAnnotationNode.create( + this._getOwnerKey(), + openParenToken, + isParamListEllipsis, + paramAnnotations, + returnType + ); } private _parseTypeAnnotation(allowUnpack = false): ExpressionNode { @@ -4777,7 +4963,7 @@ export class Parser { let result = this._parseTestExpression(/* allowAssignmentExpression */ false); if (isUnpack) { - result = UnpackNode.create(startToken, result); + result = UnpackNode.create(this._getOwnerKey(), startToken, result); } this._isParsingTypeAnnotation = wasParsingTypeAnnotation; @@ -4834,7 +5020,7 @@ export class Parser { private _makeStringNode(stringToken: StringToken): StringNode { const unescapedResult = StringTokenUtils.getUnescapedString(stringToken); this._reportStringTokenErrors(stringToken, unescapedResult); - return StringNode.create(stringToken, unescapedResult.value); + return StringNode.create(this._getOwnerKey(), stringToken, unescapedResult.value); } private _getTypeAnnotationCommentText(): StringToken | undefined { @@ -4884,7 +5070,7 @@ export class Parser { } const stringNode = this._makeStringNode(stringToken); - const stringListNode = StringListNode.create([stringNode]); + const stringListNode = StringListNode.create(this._getOwnerKey(), [stringNode]); const parser = new Parser(); const parseResults = parser.parseTextExpression( this._fileContents!, @@ -4893,7 +5079,8 @@ export class Parser { this._parseOptions, ParseTextMode.VariableAnnotation, /* initialParenDepth */ undefined, - this._typingSymbolAliases + this._typingSymbolAliases, + this._getOwnerKey() ); parseResults.diagnostics.forEach((diag) => { @@ -4904,12 +5091,13 @@ export class Parser { return undefined; } + this._stringAnnotations.writer.addAll(parseResults.stringAnnotations); return parseResults.parseTree; } private _parseFunctionTypeAnnotationComment(stringToken: StringToken, functionNode: FunctionNode): void { const stringNode = this._makeStringNode(stringToken); - const stringListNode = StringListNode.create([stringNode]); + const stringListNode = StringListNode.create(this._getOwnerKey(), [stringNode]); const parser = new Parser(); const parseResults = parser.parseTextExpression( this._fileContents!, @@ -4918,7 +5106,8 @@ export class Parser { this._parseOptions, ParseTextMode.FunctionAnnotation, /* initialParenDepth */ undefined, - this._typingSymbolAliases + this._typingSymbolAliases, + this._getOwnerKey() ); parseResults.diagnostics.forEach((diag) => { @@ -4929,6 +5118,7 @@ export class Parser { return; } + this._stringAnnotations.writer.addAll(parseResults.stringAnnotations); const functionAnnotation = parseResults.parseTree; functionNode.d.funcAnnotationComment = functionAnnotation; @@ -5099,7 +5289,14 @@ export class Parser { this._reportStringTokenErrors(startToken); - return FormatStringNode.create(startToken, endToken, middleTokens, fieldExpressions, formatExpressions); + return FormatStringNode.create( + this._getOwnerKey(), + startToken, + endToken, + middleTokens, + fieldExpressions, + formatExpressions + ); } private _createBinaryOperationNode( @@ -5108,7 +5305,13 @@ export class Parser { operatorToken: Token, operator: OperatorType ) { - const binaryNode = BinaryOperationNode.create(leftExpression, rightExpression, operatorToken, operator); + const binaryNode = BinaryOperationNode.create( + this._getOwnerKey(), + leftExpression, + rightExpression, + operatorToken, + operator + ); // Determine if we're exceeding the max parse depth. If so, replace // the subnode with an error node. Otherwise we risk crashing in the binder @@ -5118,7 +5321,7 @@ export class Parser { if (leftMaxDepth >= maxChildNodeDepth || rightMaxDepth >= maxChildNodeDepth) { this._addSyntaxError(LocMessage.maxParseDepthExceeded(), binaryNode); - return ErrorNode.create(binaryNode, ErrorExpressionCategory.MaxDepthExceeded); + return ErrorNode.create(this._getOwnerKey(), binaryNode, ErrorExpressionCategory.MaxDepthExceeded); } this._maxChildDepthMap.set(binaryNode.id, Math.max(leftMaxDepth, rightMaxDepth) + 1); @@ -5126,7 +5329,7 @@ export class Parser { } private _createUnaryOperationNode(operatorToken: Token, expression: ExpressionNode, operator: OperatorType) { - const unaryNode = UnaryOperationNode.create(operatorToken, expression, operator); + const unaryNode = UnaryOperationNode.create(this._getOwnerKey(), operatorToken, expression, operator); // Determine if we're exceeding the max parse depth. If so, replace // the subnode with an error node. Otherwise we risk crashing in the binder @@ -5135,7 +5338,7 @@ export class Parser { const maxDepth = this._maxChildDepthMap.get(expression.id) ?? 0; if (maxDepth >= maxChildNodeDepth) { this._addSyntaxError(LocMessage.maxParseDepthExceeded(), unaryNode); - return ErrorNode.create(unaryNode, ErrorExpressionCategory.MaxDepthExceeded); + return ErrorNode.create(this._getOwnerKey(), unaryNode, ErrorExpressionCategory.MaxDepthExceeded); } this._maxChildDepthMap.set(unaryNode.id, maxDepth + 1); @@ -5156,7 +5359,7 @@ export class Parser { } } - const stringNode = StringListNode.create(stringList); + const stringNode = StringListNode.create(this._getOwnerKey(), stringList); // If we're parsing a type annotation, parse the contents of the string. if (this._isParsingTypeAnnotation) { @@ -5202,7 +5405,8 @@ export class Parser { this._parseOptions, ParseTextMode.VariableAnnotation, (stringNode.d.strings[0].d.token.flags & StringTokenFlags.Triplicate) !== 0 ? 1 : 0, - this._typingSymbolAliases + this._typingSymbolAliases, + this._getOwnerKey() ); if ( @@ -5214,8 +5418,9 @@ export class Parser { }); if (parseResults.parseTree) { - stringNode.d.annotation = parseResults.parseTree; - stringNode.d.annotation.parent = stringNode; + this._stringAnnotations.writer.set(stringNode, parseResults.parseTree); + this._stringAnnotations.writer.addAll(parseResults.stringAnnotations); + parseResults.parseTree.parent = stringNode; } } } diff --git a/packages/pyright-internal/src/parser/stringAnnotationInfo.ts b/packages/pyright-internal/src/parser/stringAnnotationInfo.ts new file mode 100644 index 000000000000..9562cdd33ede --- /dev/null +++ b/packages/pyright-internal/src/parser/stringAnnotationInfo.ts @@ -0,0 +1,39 @@ +import type { ExpressionNode, StringListNode } from './parseNodes'; + +export interface StringAnnotationInfo { + readonly size: number; + get(node: StringListNode): ExpressionNode | undefined; + forEach(callback: (annotation: ExpressionNode, node: StringListNode) => void): void; +} + +interface StringAnnotationInfoWriter { + set(node: StringListNode, annotation: ExpressionNode): void; + addAll(info: StringAnnotationInfo): void; +} + +export function createStringAnnotationInfo(): { + readonly info: StringAnnotationInfo; + readonly writer: StringAnnotationInfoWriter; +} { + const annotations = new Map(); + + return { + info: { + get size() { + return annotations.size; + }, + get: (node) => annotations.get(node), + forEach: (callback) => annotations.forEach(callback), + }, + writer: { + set: (node, annotation) => annotations.set(node, annotation), + addAll: (info) => info.forEach((annotation, node) => annotations.set(node, annotation)), + }, + }; +} + +export const emptyStringAnnotationInfo: StringAnnotationInfo = Object.freeze({ + size: 0, + get: () => undefined, + forEach: () => {}, +}); diff --git a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts index 9c167bd4adad..dfdd2d668cec 100644 --- a/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts +++ b/packages/pyright-internal/src/readonlyAugmentedFileSystem.ts @@ -9,35 +9,21 @@ import type * as fs from 'fs'; -import { FileSystem, MkDirOptions, Stats, VirtualDirent } from './common/fileSystem'; +import { FileSystem, MkDirOptions, Stats } from './common/fileSystem'; import { FileWatcher, FileWatcherEventHandler } from './common/fileWatcher'; import { Uri } from './common/uri/uri'; -import { UriMap } from './common/uri/uriMap'; -import { tryStat } from './common/uri/uriUtils'; import { Disposable } from 'vscode-jsonrpc'; - -interface MappedEntry { - mappedUri: Uri; - originalUri: Uri; - filter: (uri: Uri, fs: FileSystem) => boolean; -} +import { createFileSystemMapping, FileSystemMapping } from './fileSystemMapping'; export class ReadOnlyAugmentedFileSystem implements FileSystem { - // Mapped (fake location) directory to original directory map - private readonly _entryMap = new UriMap(); + private readonly _mapping: FileSystemMapping; - // Original directory to mapped (fake location) directory map - private readonly _reverseEntryMap = new UriMap(); - - constructor(protected realFS: FileSystem) {} + constructor(protected readonly realFS: FileSystem) { + this._mapping = createFileSystemMapping(realFS); + } existsSync(uri: Uri): boolean { - if (this._isOriginalPath(uri)) { - // Pretend original files don't exist anymore. They are only in their mapped location. - return false; - } - - return this.realFS.existsSync(this._getInternalOriginalUri(uri)); + return this._mapping.existsSync(uri); } mkdirSync(uri: Uri, options?: MkDirOptions): void { @@ -49,60 +35,7 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } readdirEntriesSync(uri: Uri): fs.Dirent[] { - // Stick all entries in a map by name to make sure we don't have duplicates. - const entries = new Map(); - - // Handle the case where the directory has children that are remappings. - // Example: - // uri: /lib/site-packages - // mapping: /lib/site-packages/foo -> /lib/site-packages/foo-stubs - // We should show 'foo' as a directory in this case. - for (const [key] of this._entryMap.entries()) { - if (key.isChild(uri) && key.getRelativePathComponents(uri).length === 1) { - entries.set(key.fileName, new VirtualDirent(key.fileName, false, uri.getFilePath())); - } - } - - // Handle the case where we're looking at a mapped directory (or a child). - // Example: - // uri: /lib/site-packages/foo/module - // mapping: /lib/site-packages/foo -> /lib/site-packages/foo-stubs - // We should list all of the children of /lib/site-packages/foo-stubs/module. - const mappedEntry = this._getOriginalEntry(uri); - if (mappedEntry) { - const originalUri = this._getInternalOriginalUri(uri); - for (const entry of this.realFS.readdirEntriesSync(originalUri)) { - const originalEntryUri = originalUri.combinePaths(entry.name); - if (!mappedEntry.filter(originalEntryUri, this.realFS)) { - continue; - } - - // Mapped entries are virtual, so resolve types that readdir cannot classify, including symlinks and - // DT_UNKNOWN entries. - const target = entry.isFile() || entry.isDirectory() ? entry : tryStat(this.realFS, originalEntryUri); - if (!target || (!target.isFile() && !target.isDirectory())) { - continue; - } - - entries.set(entry.name, new VirtualDirent(entry.name, target.isFile(), uri.getFilePath())); - } - } - - if (this.realFS.existsSync(uri)) { - // Get our real entries, but filter out entries that are mapped to a different location. - // Example: - // uri: /lib/site-packages/foo-stubs - // mapping: /lib/site-packages/foo -> /lib/site-packages/foo-stubs - // We should list all of the children of /lib/site-packages/foo-stubs but only if they don't match the filter - const filteredEntries = this.realFS - .readdirEntriesSync(uri) - .filter((e) => !this._isOriginalPath(uri.combinePaths(e.name))); - for (const entry of filteredEntries) { - entries.set(entry.name, entry); - } - } - - return [...entries.values()]; + return this._mapping.readdirEntriesSync(uri); } readdirSync(uri: Uri): string[] { @@ -112,7 +45,10 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { readFileSync(uri: Uri, encoding?: null): Buffer; readFileSync(uri: Uri, encoding: BufferEncoding): string; readFileSync(uri: Uri, encoding?: BufferEncoding | null): string | Buffer { - return this.realFS.readFileSync(this._getInternalOriginalUri(uri), encoding); + // The branch narrows encoding so TypeScript selects the matching FileSystemMapping overload. + return encoding === null || encoding === undefined + ? this._mapping.readFileSync(uri, encoding) + : this._mapping.readFileSync(uri, encoding); } writeFileSync(uri: Uri, data: string | Buffer, encoding: BufferEncoding | null): void { @@ -120,11 +56,7 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } statSync(uri: Uri): Stats { - if (this._isOriginalPath(uri)) { - // Pretend original files don't exist anymore. They are only in their mapped location. - throw new Error('ENOENT: path does not exist'); - } - return this.realFS.statSync(this._getInternalOriginalUri(uri)); + return this._mapping.statSync(uri); } rmdirSync(uri: Uri): void { @@ -136,11 +68,7 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } realpathSync(uri: Uri): Uri { - if (this._entryMap.has(uri)) { - return uri; - } - - return this.realFS.realpathSync(uri); + return this._mapping.realpathSync(uri); } getModulePath(): Uri { @@ -152,7 +80,7 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } createReadStream(uri: Uri): fs.ReadStream { - return this.realFS.createReadStream(this._getInternalOriginalUri(uri)); + return this._mapping.createReadStream(uri); } createWriteStream(uri: Uri): fs.WriteStream { @@ -165,11 +93,11 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { // Async I/O readFile(uri: Uri): Promise { - return this.realFS.readFile(this._getInternalOriginalUri(uri)); + return this._mapping.readFile(uri); } readFileText(uri: Uri, encoding?: BufferEncoding): Promise { - return this.realFS.readFileText(this._getInternalOriginalUri(uri), encoding); + return this._mapping.readFileText(uri, encoding); } realCasePath(uri: Uri): Uri { @@ -178,26 +106,17 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { // See whether the file is mapped to another location. isMappedUri(fileUri: Uri): boolean { - if (this._getOriginalEntry(fileUri) !== undefined) { - return true; - } - return this.realFS.isMappedUri(fileUri); + return this._mapping.isMappedUri(fileUri); } // Get original filepath if the given filepath is mapped. getOriginalUri(mappedFileUri: Uri) { - const internalUri = this._getInternalOriginalUri(mappedFileUri); - return this.realFS.getOriginalUri(internalUri); + return this._mapping.getOriginalUri(mappedFileUri); } // Get mapped filepath if the given filepath is mapped. getMappedUri(originalFileUri: Uri) { - const entry = this._getMappedEntry(originalFileUri); - if (!entry) { - return this.realFS.getMappedUri(originalFileUri); - } - const relative = entry.originalUri.getRelativePathComponents(originalFileUri); - return entry.mappedUri.combinePaths(...relative); + return this._mapping.getMappedUri(originalFileUri); } isInZip(uri: Uri): boolean { @@ -205,75 +124,6 @@ export class ReadOnlyAugmentedFileSystem implements FileSystem { } mapDirectory(mappedUri: Uri, originalUri: Uri, filter?: (originalUri: Uri, fs: FileSystem) => boolean): Disposable { - const entry: MappedEntry = { originalUri, mappedUri, filter: filter ?? (() => true) }; - this._entryMap.set(mappedUri, entry); - this._reverseEntryMap.set(originalUri, entry); - return { - dispose: () => { - this._entryMap.delete(mappedUri); - this._reverseEntryMap.delete(originalUri); - }, - }; - } - - protected clear() { - this._entryMap.clear(); - this._reverseEntryMap.clear(); - } - - private _findClosestMatch(uri: Uri, map: UriMap): MappedEntry | undefined { - // Search through the map of directories to find the closest match. The - // closest match is the longest path that is a parent of the uri. - while (true) { - const entry = map.get(uri); - if (entry) { - return entry; - } - - const parent = uri.getDirectory(); - if (parent.equals(uri)) { - return undefined; - } - - uri = parent; - } - } - - private _getOriginalEntry(uri: Uri): MappedEntry | undefined { - return this._findClosestMatch(uri, this._entryMap); - } - - // Returns the original uri if the given uri is a mapped uri in this file system's - // internal mapping. getOriginalUri is different in that it will also ask the realFS - // if it has a mapping too. - private _getInternalOriginalUri(uri: Uri): Uri { - const entry = this._getOriginalEntry(uri); - if (!entry) { - return uri; - } - const relative = entry.mappedUri.getRelativePathComponents(uri); - const original = entry.originalUri.combinePaths(...relative); - - // Make sure this original URI passes the filter too. - if (entry.filter(original, this.realFS)) { - return original; - } - - return uri; - } - - private _getMappedEntry(uri: Uri): MappedEntry | undefined { - const reverseMatch = this._findClosestMatch(uri, this._reverseEntryMap); - - // Uri in this case is an original Uri. It should also match the filter. - if (reverseMatch && reverseMatch.filter(uri, this.realFS)) { - return reverseMatch; - } - return undefined; - } - - private _isOriginalPath(uri: Uri): boolean { - // If the uri is a child of any reverse entry or equals a reversed entry, then it is an original entry. - return this._getMappedEntry(uri) !== undefined; + return this._mapping.mapDirectory(mappedUri, originalUri, filter); } } diff --git a/packages/pyright-internal/src/server.ts b/packages/pyright-internal/src/server.ts index 53fba8625987..4df8c50e53c4 100644 --- a/packages/pyright-internal/src/server.ts +++ b/packages/pyright-internal/src/server.ts @@ -26,7 +26,7 @@ import { getCancellationFolderName } from './common/cancellationUtils'; import { ConfigOptions, SignatureDisplayType } from './common/configOptions'; import { ConsoleWithLogLevel, LogLevel, convertLogLevel } from './common/console'; import { isDebugMode, isDefined, isString } from './common/core'; -import { resolvePathWithEnvVariables } from './common/envVarUtils'; +import { resolvePathStringWithEnvVariables, resolvePathWithEnvVariables } from './common/envVarUtils'; import { FileBasedCancellationProvider } from './common/fileBasedCancellationUtils'; import { FileSystem } from './common/fileSystem'; import { FullAccessHost } from './common/fullAccessHost'; @@ -166,9 +166,9 @@ export class PyrightServer extends LanguageServerBase { const extraPaths = pythonAnalysisSection.extraPaths; if (extraPaths && Array.isArray(extraPaths) && extraPaths.length > 0) { - serverSettings.extraPaths = extraPaths + serverSettings.extraPathFileSpecs = extraPaths .filter((p) => p && isString(p)) - .map((p) => resolvePathWithEnvVariables(workspace, p, workspaces)) + .map((p) => resolvePathStringWithEnvVariables(workspace, p, workspaces)) .filter(isDefined); } diff --git a/packages/pyright-internal/src/tests/analyzerNodeInfo.test.ts b/packages/pyright-internal/src/tests/analyzerNodeInfo.test.ts new file mode 100644 index 000000000000..fc57acb5d983 --- /dev/null +++ b/packages/pyright-internal/src/tests/analyzerNodeInfo.test.ts @@ -0,0 +1,97 @@ +/* + * analyzerNodeInfo.test.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + */ + +import assert from 'assert'; + +import { AnalyzerFileInfo } from '../analyzer/analyzerFileInfo'; +import { AnalyzerNodeInfoContextImpl, AnalyzerNodeInfoStore } from '../analyzer/analyzerNodeInfo'; +import { DiagnosticSink } from '../common/diagnosticSink'; +import { ModuleNode } from '../parser/parseNodes'; +import * as TestUtils from './testUtils'; + +test('store keeps node information independent across parse trees', () => { + const firstRoot = parseModule('first = 1'); + const secondRoot = parseModule('second = 2'); + const store = new AnalyzerNodeInfoStore(); + + store.getOrCreate(firstRoot).codeFlowComplexity = 1; + store.getOrCreate(secondRoot).codeFlowComplexity = 2; + + assert.equal(store.get(firstRoot)?.codeFlowComplexity, 1); + assert.equal(store.get(secondRoot)?.codeFlowComplexity, 2); +}); + +test('context preserves layered lookup behavior across overlay enter/discard', () => { + const root = parseModule('value = 1'); + const context = new AnalyzerNodeInfoContextImpl(); + const baseStore = createStore(root, 1); + const overlayStore = createStore(root, 2); + + context.registerStore(root, baseStore); + context.enterOverlay(); + assert.equal(context.get(root)?.codeFlowComplexity, 1); + + context.registerStore(root, overlayStore); + assert.equal(context.get(root)?.codeFlowComplexity, 2); + + context.discardOverlay(); + assert.equal(context.get(root)?.codeFlowComplexity, 1); + + context.enterOverlay(); + context.remove(root); + assert.equal(context.get(root), undefined); + context.discardOverlay(); + assert.equal(context.get(root)?.codeFlowComplexity, 1); +}); + +test('context fast path returns undefined after base-layer remove and recovers on reregister', () => { + const root = parseModule('value = 1'); + const context = new AnalyzerNodeInfoContextImpl(); + + // Only the base layer exists here, so these operations exercise the single-layer fast path. + context.registerStore(root, createStore(root, 1)); + assert.equal(context.get(root)?.codeFlowComplexity, 1); + + context.remove(root); + assert.equal(context.get(root), undefined); + + context.registerStore(root, createStore(root, 3)); + assert.equal(context.get(root)?.codeFlowComplexity, 3); +}); + +test('context getFileInfo fast path handles base-layer register/remove/reregister', () => { + const root = parseModule('value = 1'); + const context = new AnalyzerNodeInfoContextImpl(); + + // Only the base layer exists here, so these operations exercise the single-layer + // fast path in getFileInfo (the removedKeys tombstone check is skipped). + const firstFileInfo = {} as AnalyzerFileInfo; + context.registerStore(root, createStoreWithFileInfo(root, firstFileInfo)); + assert.equal(context.getFileInfo(root), firstFileInfo); + + context.remove(root); + assert.equal(context.getFileInfo(root), undefined); + + const secondFileInfo = {} as AnalyzerFileInfo; + context.registerStore(root, createStoreWithFileInfo(root, secondFileInfo)); + assert.equal(context.getFileInfo(root), secondFileInfo); +}); + +function parseModule(code: string): ModuleNode { + return TestUtils.parseText(code, new DiagnosticSink()).parserOutput.parseTree; +} + +function createStore(root: ModuleNode, complexity: number) { + const store = new AnalyzerNodeInfoStore(); + store.getOrCreate(root).codeFlowComplexity = complexity; + return store; +} + +function createStoreWithFileInfo(root: ModuleNode, fileInfo: AnalyzerFileInfo) { + const store = new AnalyzerNodeInfoStore(); + store.setFileInfo(root, fileInfo); + return store; +} diff --git a/packages/pyright-internal/src/tests/collectionUtils.test.ts b/packages/pyright-internal/src/tests/collectionUtils.test.ts index 0308aba09980..34fd31aee1b6 100644 --- a/packages/pyright-internal/src/tests/collectionUtils.test.ts +++ b/packages/pyright-internal/src/tests/collectionUtils.test.ts @@ -160,6 +160,59 @@ test('getNestedProperty', () => { assert.deepEqual(utils.getNestedProperty(undefined, ''), undefined); }); +test('createMapFromItems groups by key preserving order and identity', () => { + const a = { id: 1, k: 'x' }; + const b = { id: 2, k: 'y' }; + const c = { id: 3, k: 'x' }; + const map = utils.createMapFromItems([a, b, c], (t) => t.k); + + // Keys appear in first-occurrence order. + assert.deepEqual([...map.keys()], ['x', 'y']); + // Items keep their original order within a key, and the exact references are stored. + assert.equal(map.get('x')!.length, 2); + assert.strictEqual(map.get('x')![0], a); + assert.strictEqual(map.get('x')![1], c); + assert.strictEqual(map.get('y')![0], b); +}); + +test('createMapFromItems handles empty input', () => { + const map = utils.createMapFromItems([], (t) => String(t)); + assert.equal(map.size, 0); +}); + +test('createMapFromItems keeps duplicate identical references', () => { + const dup = { id: 'dup' }; + const map = utils.createMapFromItems([dup, dup, dup], () => 'k'); + assert.equal(map.get('k')!.length, 3); + assert.strictEqual(map.get('k')![0], dup); + assert.strictEqual(map.get('k')![2], dup); +}); + +test('createMapFromItems matches legacy concat-based semantics', () => { + assertCreateMapParity([], (t) => String(t)); + assertCreateMapParity([{ v: 'a' }, { v: 'b' }, { v: 'a' }], (t) => t.v); + assertCreateMapParity(['aa', 'bb', 'aa', 'cc'], (t) => t[0]); + assertCreateMapParity([1, 2, 12, 22, 3], (t) => String(t % 10)); + assertCreateMapParity([{ v: '' }, { v: '0' }, { v: 'undefined' }, { v: 'ключ' }, { v: '' }], (t) => t.v); +}); + +// Oracle that reproduces the pre-rewrite concat-based implementation, so any +// behavioral drift for the non-array items every caller passes is caught. +function assertCreateMapParity(items: T[], keyGetter: (t: T) => string) { + const legacy = items + .map((t) => keyGetter(t)) + .reduce((m, key, i) => { + m.set(key, (m.get(key) || []).concat(items[i])); + return m; + }, new Map()); + const actual = utils.createMapFromItems(items, keyGetter); + + assert.deepEqual([...actual.keys()], [...legacy.keys()]); + for (const key of legacy.keys()) { + assert.deepEqual(actual.get(key), legacy.get(key)); + } +} + class B { value: number; diff --git a/packages/pyright-internal/src/tests/completions.test.ts b/packages/pyright-internal/src/tests/completions.test.ts index 0c31b8401542..9b1a101397f6 100644 --- a/packages/pyright-internal/src/tests/completions.test.ts +++ b/packages/pyright-internal/src/tests/completions.test.ts @@ -387,6 +387,7 @@ test('include literals in expression completion', async () => { { kind: CompletionItemKind.Constant, label: "'A'", + detail: 'str', textEdit: { range: state.getPositionRange('marker'), newText: "'A'" }, }, ], @@ -416,6 +417,7 @@ test('include literals in set key', async () => { { kind: CompletionItemKind.Constant, label: "'A'", + detail: 'str', textEdit: { range: state.getPositionRange('marker'), newText: "'A'" }, }, ], @@ -445,6 +447,7 @@ test('include literals in dict key', async () => { { kind: CompletionItemKind.Constant, label: '"A"', + detail: 'str', textEdit: { range: state.getPositionRange('marker'), newText: '"A"' }, }, ], @@ -1448,6 +1451,33 @@ test('typed dict key constructor completion', async () => { }); }); +test('functional NamedTuple fields are included in class completions', async () => { + const code = ` +// @filename: test.py +//// from typing import Any, NamedTuple +//// +//// Point = NamedTuple("Point", [("x", Any), ("y", Any)]) +//// Point.[|/*marker*/|] + `; + + const state = parseAndGetTestState(code).state; + + await state.verifyCompletion('included', MarkupKind.Markdown, { + marker: { + completions: [ + { + label: 'x', + kind: CompletionItemKind.Variable, + }, + { + label: 'y', + kind: CompletionItemKind.Variable, + }, + ], + }, + }); +}); + test('import from completion for namespace package', async () => { const code = ` // @filename: test.py @@ -1957,11 +1987,13 @@ test('nested TypedDict completion with Unpack - without other fields', async () { kind: CompletionItemKind.Constant, label: "'a'", + detail: 'int', textEdit: { range: state.getPositionRange('marker'), newText: "'a'" }, }, { kind: CompletionItemKind.Constant, label: "'b'", + detail: 'str', textEdit: { range: state.getPositionRange('marker'), newText: "'b'" }, }, ], @@ -1996,11 +2028,13 @@ test('nested TypedDict completion with Unpack - with other fields', async () => { kind: CompletionItemKind.Constant, label: '"a"', + detail: 'int', textEdit: { range: state.getPositionRange('marker'), newText: '"a"' }, }, { kind: CompletionItemKind.Constant, label: '"b"', + detail: 'str', textEdit: { range: state.getPositionRange('marker'), newText: '"b"' }, }, ], @@ -2031,11 +2065,13 @@ test('simple nested TypedDict completion - no Unpack', async () => { { kind: CompletionItemKind.Constant, label: "'a'", + detail: 'int', textEdit: { range: state.getPositionRange('marker'), newText: "'a'" }, }, { kind: CompletionItemKind.Constant, label: "'b'", + detail: 'str', textEdit: { range: state.getPositionRange('marker'), newText: "'b'" }, }, ], @@ -2069,6 +2105,7 @@ test('TypedDict subscript completion with Literal assignment target', async () = { kind: CompletionItemKind.Constant, label: '"value"', + detail: 'SomeLiterals', textEdit: { range: state.getPositionRange('marker'), newText: '"value"' }, }, ], diff --git a/packages/pyright-internal/src/tests/config.test.ts b/packages/pyright-internal/src/tests/config.test.ts index 9c438169591a..eb2c95eb7211 100644 --- a/packages/pyright-internal/src/tests/config.test.ts +++ b/packages/pyright-internal/src/tests/config.test.ts @@ -9,6 +9,7 @@ import assert from 'assert'; +import { ImportResolver } from '../analyzer/importResolver'; import { AnalyzerService } from '../analyzer/service'; import { deserialize, serialize } from '../backgroundThreadBase'; import { CommandLineOptions, DiagnosticSeverityOverrides } from '../common/commandLineOptions'; @@ -78,7 +79,113 @@ describe(`config test'}`, () => { assert.deepStrictEqual(fileNames, ['sample1.py', 'sample2.py', 'sample3.py']); }); - test('FindFilesVirtualEnvAutoDetectInclude', () => { + test('FindFilesExcludesEditableInstallShadow', () => { + // Build the project entirely in an in-memory vfs (no explicit 'exclude'), so the service + // default excludes apply. This runs the real AnalyzerService.setOptions path (which runs + // `_ensureDefaultOptions`) rather than the fourslash harness, which constructs ConfigOptions + // directly and never applies the service default excludes. + const projectRoot = normalizeSlashes('/src'); + const fs = new TestFileSystem(/* ignoreCase */ true, { + cwd: normalizeSlashes('/'), + files: { + [normalizeSlashes('/src/sample.py')]: 'x = 1\n', + // Name merely contains the substring `__editable__`; must NOT match `**/__editable__.*`. + [normalizeSlashes('/src/not__editable__helper.py')]: 'y = 2\n', + // `build/` itself is not excluded, only the `__editable__.*` directory under it. + [normalizeSlashes('/src/build/keep.py')]: 'z = 3\n', + // Auto-generated PEP 660 "strict" editable-install shadow copy; must be excluded. + [normalizeSlashes('/src/build/__editable__.mypkg-1.0/mypkg/__init__.py')]: '', + [normalizeSlashes('/src/build/__editable__.mypkg-1.0/mypkg/mod.py')]: + 'def target() -> int:\n return 1\n', + }, + }); + + const cons = new NullConsole(); + const serviceProvider = createServiceProvider(fs, cons, tempFile); + const host = new TestAccessHost(); + const service = new AnalyzerService('', serviceProvider, { + console: cons, + hostFactory: () => host, + shouldRunAnalysis: () => false, + }); + + try { + const commandLineOptions = new CommandLineOptions(projectRoot, /* fromLanguageServer */ true); + service.setOptions(commandLineOptions); + + const fileNames = service + .test_getFileNamesFromFileSpecs() + .map((p) => p.fileName) + .sort(); + assert.deepStrictEqual(fileNames, ['keep.py', 'not__editable__helper.py', 'sample.py']); + } finally { + service.dispose(); + } + }); + + test('EditableInstallShadowExcludedButImportable', () => { + // Locks the invariant asserted by the `**/__editable__.*` default-exclude comment in + // `_ensureDefaultOptions`: excluding the PEP 660 "strict" editable-install shadow tree from + // project enumeration must NOT make its modules un-importable. The strict `.pth` keeps the + // shadow dir on the import search path, so `import mypkg.mod` still resolves through search + // paths even though the shadow files are no longer tracked as project source files. + const projectRoot = normalizeSlashes('/src'); + const shadowRoot = normalizeSlashes('/src/build/__editable__.mypkg-1.0'); + const shadowModPath = normalizeSlashes('/src/build/__editable__.mypkg-1.0/mypkg/mod.py'); + const fs = new TestFileSystem(/* ignoreCase */ true, { + cwd: normalizeSlashes('/'), + files: { + [normalizeSlashes('/src/sample.py')]: 'import mypkg.mod\n', + [normalizeSlashes('/src/build/__editable__.mypkg-1.0/mypkg/__init__.py')]: '', + [shadowModPath]: 'def target() -> int:\n return 1\n', + }, + }); + + const cons = new NullConsole(); + const serviceProvider = createServiceProvider(fs, cons, tempFile); + const host = new TestAccessHost(); + const service = new AnalyzerService('', serviceProvider, { + console: cons, + hostFactory: () => host, + shouldRunAnalysis: () => false, + }); + + try { + const commandLineOptions = new CommandLineOptions(projectRoot, /* fromLanguageServer */ true); + service.setOptions(commandLineOptions); + + // Enumeration: the shadow tree is excluded, so only the real project file is tracked. + const enumerated = service.test_getFileNamesFromFileSpecs(); + assert.deepStrictEqual(enumerated.map((p) => p.fileName).sort(), ['sample.py']); + assert.ok( + !enumerated.some((p) => p.getFilePath().includes('__editable__.mypkg-1.0')), + 'the editable-install shadow tree must not be enumerated' + ); + + // Importability: with the shadow dir on the import search path (as the strict `.pth` + // provides), `import mypkg.mod` still resolves into the shadow tree even though it was + // excluded from enumeration above. + const configOptions = new ConfigOptions(UriEx.file(projectRoot)); + configOptions.defaultExtraPaths = [UriEx.file(shadowRoot)]; + const importResolver = new ImportResolver(serviceProvider, configOptions, host); + const sampleUri = UriEx.file(normalizeSlashes('/src/sample.py')); + const importResult = importResolver.resolveImport(sampleUri, configOptions.findExecEnvironment(sampleUri), { + leadingDots: 0, + nameParts: ['mypkg', 'mod'], + importedSymbols: new Set(), + }); + + assert.ok(importResult.isImportFound, 'the excluded shadow module must remain importable via search paths'); + assert.strictEqual( + importResult.resolvedUris.filter((f) => !f.isEmpty() && f.getFilePath() === shadowModPath).length, + 1 + ); + } finally { + service.dispose(); + } + }); + + test('FindFilesVirtualEnvAutoDetectWithUserExclude', () => { const cwd = normalizePath(process.cwd()); const service = createAnalyzer(); const commandLineOptions = new CommandLineOptions(cwd, /* fromLanguageServer */ true); @@ -86,12 +193,33 @@ describe(`config test'}`, () => { service.setOptions(commandLineOptions); - // Config file defines 'exclude' folder so virtual env will be included + // The config file defines an 'exclude' folder. Virtual env auto-detection remains + // enabled even when the user specifies custom excludes (the excludes are additive), + // so myVenv is still auto-excluded. const fileList = service.test_getFileNamesFromFileSpecs(); // There are 3 python files in the workspace, outside of myVenv - // There is 1 more python file in excluded folder - // There is 1 python file in myVenv, which should be included + // There is 1 more python file in the user-excluded folder (excluded) + // There is 1 python file in myVenv, which is auto-excluded + const fileNames = fileList.map((p) => p.fileName).sort(); + assert.deepStrictEqual(fileNames, ['sample1.py', 'sample2.py', 'sample3.py']); + }); + + test('FindFilesVirtualEnvNotAutoDetectedWhenDefaultExcludesDisabled', () => { + const cwd = normalizePath(process.cwd()); + const service = createAnalyzer(); + const commandLineOptions = new CommandLineOptions(cwd, /* fromLanguageServer */ true); + commandLineOptions.configFilePath = 'src/tests/samples/project_with_venv_auto_detect_include'; + // Turn off the built-in default excludes; virtual-environment auto-detection is disabled + // along with them, so myVenv is scanned again. + commandLineOptions.configSettings.useDefaultExcludes = false; + + service.setOptions(commandLineOptions); + + const fileList = service.test_getFileNamesFromFileSpecs(); + + // myVenv is no longer auto-excluded, so library1.py is scanned. The user-specified + // 'exclude' folder is still excluded (explicit user excludes are unaffected by the setting). const fileNames = fileList.map((p) => p.fileName).sort(); assert.deepStrictEqual(fileNames, ['library1.py', 'sample1.py', 'sample2.py', 'sample3.py']); }); @@ -135,9 +263,10 @@ describe(`config test'}`, () => { const configOptions = service.test_getConfigOptions(commandLineOptions); // The config file specifies four file specs in the include array - // and one in the exclude array. + // and one in the exclude array. The 4 default excludes are always applied + // additively, so the exclude array contains 1 user + 4 defaults = 5. assert.strictEqual(configOptions.include.length, 4, `failed creating options from ${cwd}`); - assert.strictEqual(configOptions.exclude.length, 1); + assert.strictEqual(configOptions.exclude.length, 5); assert.strictEqual( configOptions.projectRoot.getFilePath(), service.fs @@ -151,6 +280,24 @@ describe(`config test'}`, () => { assert.strictEqual(fileList.length, 2); }); + test('DefaultExcludesDisabledByUseDefaultExcludes', () => { + const cwd = normalizePath(process.cwd()); + const nullConsole = new NullConsole(); + const service = createAnalyzer(nullConsole); + const commandLineOptions = new CommandLineOptions(cwd, /* fromLanguageServer */ false); + commandLineOptions.configFilePath = 'src/tests/samples/project4'; + // Turn off the built-in default excludes. + commandLineOptions.configSettings.useDefaultExcludes = false; + service.setOptions(commandLineOptions); + + const configOptions = service.test_getConfigOptions(commandLineOptions); + + // Only the user's single exclude remains; none of the 4 default excludes are added. + assert.strictEqual(configOptions.exclude.length, 1); + // Virtual-environment auto-detection is disabled along with the default excludes. + assert.strictEqual(configOptions.autoExcludeVenv, false); + }); + test('ConfigBadJson', () => { const cwd = normalizePath(process.cwd()); const nullConsole = new NullConsole(); diff --git a/packages/pyright-internal/src/tests/extraPathGlob.test.ts b/packages/pyright-internal/src/tests/extraPathGlob.test.ts new file mode 100644 index 000000000000..f3a378aae90f --- /dev/null +++ b/packages/pyright-internal/src/tests/extraPathGlob.test.ts @@ -0,0 +1,555 @@ +/* + * extraPathGlob.test.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Unit tests for glob expansion of `extraPaths` entries. + */ + +import assert from 'assert'; + +import { ConfigOptions } from '../common/configOptions'; +import { NullConsole } from '../common/console'; +import { + containsWildcard, + expandExtraPaths, + extraPathWatchTargetCovers, + getExtraPathWatchTargets, +} from '../common/extraPathGlob'; +import { normalizeSlashes } from '../common/pathUtils'; +import { createServiceProvider } from '../common/serviceProviderExtensions'; +import { Uri } from '../common/uri/uri'; +import { TestAccessHost } from './harness/testAccessHost'; +import { TestFileSystem } from './harness/vfs/filesystem'; + +describe('extraPath glob expansion', () => { + test('containsWildcard detects glob characters', () => { + assert.strictEqual(containsWildcard('libs/shared/src'), false); + assert.strictEqual(containsWildcard('libs/*/src'), true); + assert.strictEqual(containsWildcard('external/**/site-packages'), true); + assert.strictEqual(containsWildcard('pkg?/x'), true); + }); + + test('single glob expands to matching directories, sorted ascending', () => { + const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']); + assert.deepStrictEqual(expand(fs, ['libs/*/src']), [ + '/proj/libs/auth/src', + '/proj/libs/core/src', + '/proj/libs/shared/src', + ]); + }); + + test('glob results use a culture- and OS-invariant ordinal sort', () => { + // These names sort differently under an ordinal comparison of the decoded + // path than under (a) a locale-aware comparison or (b) an ordinal + // comparison of the percent-encoded URI string: + // - Ordinal-by-path orders all uppercase ASCII before lowercase, places + // `_` (U+005F) between `Z` (U+005A) and `a` (U+0061), and places the + // non-ASCII `é` (U+00E9) after every ASCII character. + // - Locale-aware collation is roughly case-insensitive and reorders + // punctuation/accents. + // - Sorting the encoded URI string would place `é` FIRST, because it + // encodes to `%C3%A9` and `%` (U+0025) precedes every ASCII letter. + // Expected ordinal-by-path order of the leaf names is B < Z < _ < a < é. + // Pinning this guards against a switch to a culture-sensitive comparison + // or back to the encoded-string key, either of which would make the + // expanded extra-path list depend on the user's locale/OS. + const fs = makeFs([ + '/proj/pkgs/Zebra/src', + '/proj/pkgs/_internal/src', + '/proj/pkgs/apple/src', + '/proj/pkgs/Beta/src', + '/proj/pkgs/\u00e9moji/src', + ]); + assert.deepStrictEqual(expand(fs, ['pkgs/*/src']), [ + '/proj/pkgs/Beta/src', + '/proj/pkgs/Zebra/src', + '/proj/pkgs/_internal/src', + '/proj/pkgs/apple/src', + '/proj/pkgs/\u00e9moji/src', + ]); + }); + + test('sort is invariant to Unicode normalization form (NFD vs NFC)', () => { + // macOS stores file names as NFD (decomposed) while Linux/Windows commonly + // use NFC (composed). The same logical name `café` is `caf\u00e9` in NFC but + // `cafe\u0301` (e + combining acute) in NFD. Without NFC normalization the + // decomposed form would sort BEFORE `cafz` (its 4th code unit `e` U+0065 < + // `z` U+007A); with NFC normalization it sorts AFTER `cafz` (composed `é` + // U+00E9 > `z`). Pinning the composed ordering proves the sort key is + // normalized so directory order does not depend on the on-disk form. + const fs = makeFs(['/proj/pkgs/cafz/src', '/proj/pkgs/cafe\u0301/src']); + assert.deepStrictEqual(expand(fs, ['pkgs/*/src']), ['/proj/pkgs/cafz/src', '/proj/pkgs/cafe\u0301/src']); + }); + + test('NFC-equal but byte-distinct sibling directories get a deterministic total order', () => { + // Both an NFD (`cafe` + U+0301) and an NFC (`caf` + U+00E9) spelling of `café` + // exist as separate directories. They are byte-distinct (so both are kept), + // but their NFC-normalized sort keys are equal, so ordering falls back to the + // raw decoded path (NFD `e` U+0065 < NFC `é` U+00E9). Pinning this proves the + // order is a deterministic total order rather than dependent on directory + // enumeration order. + const fs = makeFs(['/proj/pkgs/caf\u00e9/src', '/proj/pkgs/cafe\u0301/src']); + assert.deepStrictEqual(expand(fs, ['pkgs/*/src']), ['/proj/pkgs/cafe\u0301/src', '/proj/pkgs/caf\u00e9/src']); + }); + + test('literal entry wins over a glob that covers it and keeps its front position', () => { + const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']); + assert.deepStrictEqual(expand(fs, ['libs/shared/src', 'libs/*/src']), [ + '/proj/libs/shared/src', + '/proj/libs/auth/src', + '/proj/libs/core/src', + ]); + }); + + test('literal after a glob keeps its own (later) slot', () => { + const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']); + assert.deepStrictEqual(expand(fs, ['libs/*/src', 'libs/shared/src']), [ + '/proj/libs/auth/src', + '/proj/libs/core/src', + '/proj/libs/shared/src', + ]); + }); + + test('two overlapping globs: the earlier glob wins the overlap', () => { + const fs = makeFs([ + '/proj/external/pip310_numpy/site-packages', + '/proj/external/pip310_pandas/site-packages', + '/proj/external/pip311_numpy/site-packages', + ]); + assert.deepStrictEqual(expand(fs, ['external/pip310_*/site-packages', 'external/pip3??_numpy/site-packages']), [ + '/proj/external/pip310_numpy/site-packages', + '/proj/external/pip310_pandas/site-packages', + '/proj/external/pip311_numpy/site-packages', + ]); + }); + + test('multiple literals mixed with multiple globs (documented example)', () => { + const fs = makeFs([ + '/proj/stubs', + '/proj/packages/api/src', + '/proj/packages/auth/src', + '/proj/packages/core/src', + '/proj/packages/shared/src', + '/proj/vendor/grpc/python', + '/proj/vendor/legacy/python', + '/proj/vendor/proto/python', + ]); + assert.deepStrictEqual( + expand(fs, ['stubs', 'packages/core/src', 'packages/*/src', 'vendor/proto/python', 'vendor/*/python']), + [ + '/proj/stubs', + '/proj/packages/core/src', + '/proj/packages/api/src', + '/proj/packages/auth/src', + '/proj/packages/shared/src', + '/proj/vendor/proto/python', + '/proj/vendor/grpc/python', + '/proj/vendor/legacy/python', + ] + ); + }); + + test('** matches any number of segments', () => { + const fs = makeFs(['/proj/external/a/site-packages', '/proj/external/b/c/site-packages']); + assert.deepStrictEqual(expand(fs, ['external/**/site-packages']), [ + '/proj/external/a/site-packages', + '/proj/external/b/c/site-packages', + ]); + }); + + test('? matches exactly one character', () => { + const fs = makeFs(['/proj/pkg1/x', '/proj/pkg2/x', '/proj/pkg10/x']); + assert.deepStrictEqual(expand(fs, ['pkg?/x']), ['/proj/pkg1/x', '/proj/pkg2/x']); + }); + + test('a glob that matches nothing contributes nothing', () => { + const fs = makeFs(['/proj/libs/auth/src']); + assert.deepStrictEqual(expand(fs, ['nope/*/src']), []); + }); + + test('a literal entry is emitted even if it does not exist', () => { + const fs = makeFs(['/proj/libs/auth/src']); + assert.deepStrictEqual(expand(fs, ['does/not/exist']), ['/proj/does/not/exist']); + }); + + test('de-duplication is case-sensitive: case-variant paths both survive', () => { + // Real directory uses a capital "S"; the literal entry uses lowercase. + const fs = makeFs(['/proj/libs/Shared/src'], /* ignoreCase */ false); + const result = expand(fs, ['libs/shared/src', 'libs/*/src']); + assert.deepStrictEqual(result, ['/proj/libs/shared/src', '/proj/libs/Shared/src']); + }); + + test('identical literal entries keep the first occurrence only', () => { + const fs = makeFs(['/proj/a/src']); + assert.deepStrictEqual(expand(fs, ['a/src', 'a/src']), ['/proj/a/src']); + }); + + test('symbolic-link cycles are guarded and do not cause infinite recursion', () => { + const fs = makeFs(['/proj/root/a']); + // Create a cycle: /proj/root/a/loop -> /proj/root + fs.symlinkSync('/proj/root', '/proj/root/a/loop'); + + const result = expand(fs, ['root/**']); + // The walk terminates and emits exactly the real directories: the cycle + // guard drops the "loop" symlink before it re-enters /proj/root. Pinning + // the full array catches a regression in the guard (extra entries or a + // broken ordering) that a partial `includes` check would miss. + assert.deepStrictEqual(result, ['/proj/root', '/proj/root/a']); + }); + + test('ensureDefaultExtraPaths expands globs for the settings origin', () => { + const fs = makeFs(['/proj/pkgs/a/src', '/proj/pkgs/b/src']); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + + configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['pkgs/*/src']); + + const result = (configOptions.defaultExtraPaths ?? []).map((uri) => normalizeSlashes(uri.getFilePath(), '/')); + assert.deepStrictEqual(result, ['/proj/pkgs/a/src', '/proj/pkgs/b/src']); + }); + + test('initializeFromJson retains config-file extraPaths glob specs for watching', () => { + const fs = makeFs(['/proj/pkgs/a/src', '/proj/pkgs/b/src']); + const rootUri = Uri.file('/proj', fs); + const configOptions = new ConfigOptions(rootUri); + + configOptions.initializeFromJson( + { extraPaths: ['pkgs/*/src', 'libs/shared'] }, + rootUri, + createServiceProvider(fs, new NullConsole()), + new TestAccessHost() + ); + + // Only the wildcard entry is retained (as an absolute, glob-preserving spec) so a file + // watcher can be registered for it; the literal entry needs no glob watcher. + assert.deepStrictEqual( + configOptions.extraPathGlobFileSpecs.map((s) => normalizeSlashes(s, '/')), + ['/proj/pkgs/*/src'] + ); + }); + + test('ensureDefaultExtraPaths de-duplicates realCasePath-collapsed entries on a case-insensitive FS', () => { + // On a case-insensitive file system, expandExtraPaths keeps case-variant + // entries distinct (case-sensitive de-dup), but realCasePath then collapses + // them to the same on-disk directory. The settings origin must not emit the + // resulting duplicate. + const fs = makeFs(['/proj/libs/foo'], /* ignoreCase */ true); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + + configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['libs/foo', 'Libs/*']); + + const result = (configOptions.defaultExtraPaths ?? []).map((uri) => normalizeSlashes(uri.getFilePath(), '/')); + assert.deepStrictEqual(result, ['/proj/libs/foo']); + }); + + test('initializeFromJson expands globs in the config-file extraPaths', () => { + const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src', '/proj/libs/shared/src']); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + const serviceProvider = createServiceProvider(fs); + + configOptions.initializeFromJson( + { extraPaths: ['libs/shared/src', 'libs/*/src'] }, + Uri.file('/proj', fs), + serviceProvider, + new TestAccessHost() + ); + + const result = (configOptions.defaultExtraPaths ?? []).map((uri) => normalizeSlashes(uri.getFilePath(), '/')); + assert.deepStrictEqual(result, ['/proj/libs/shared/src', '/proj/libs/auth/src', '/proj/libs/core/src']); + }); + + test('setupExecutionEnvironments expands globs in an execution environment', () => { + const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src']); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + + configOptions.setupExecutionEnvironments( + { executionEnvironments: [{ root: 'app', extraPaths: ['libs/*/src'] }] }, + Uri.file('/proj', fs), + new NullConsole(), + fs + ); + + assert.strictEqual(configOptions.executionEnvironments.length, 1); + const result = configOptions.executionEnvironments[0].extraPaths.map((uri) => + normalizeSlashes(uri.getFilePath(), '/') + ); + assert.deepStrictEqual(result, ['/proj/libs/auth/src', '/proj/libs/core/src']); + }); + + test('an execution environment extraPaths overrides (does not merge with) a non-empty default', () => { + // Establish a non-empty default first, then give the exec env its own + // extraPaths. The result must contain ONLY the exec env's expanded globs; + // `/proj/other` (the default) must be excluded. Without a non-empty default + // the override-vs-merge distinction is untestable (vacuous pass). + const fs = makeFs(['/proj/other', '/proj/libs/auth/src', '/proj/libs/core/src']); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['other']); + + configOptions.setupExecutionEnvironments( + { executionEnvironments: [{ root: 'app', extraPaths: ['libs/*/src'] }] }, + Uri.file('/proj', fs), + new NullConsole(), + fs + ); + + const result = configOptions.executionEnvironments[0].extraPaths.map((uri) => + normalizeSlashes(uri.getFilePath(), '/') + ); + assert.deepStrictEqual(result, ['/proj/libs/auth/src', '/proj/libs/core/src']); + }); + + test('an execution environment without extraPaths inherits the expanded default', () => { + // The exec env omits `extraPaths`, so it inherits the default. The default + // is stored already-expanded, so the inherited list is the concrete + // directories, not the raw `libs/*/src` glob. + const fs = makeFs(['/proj/libs/auth/src', '/proj/libs/core/src']); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['libs/*/src']); + + configOptions.setupExecutionEnvironments( + { executionEnvironments: [{ root: 'app' }] }, + Uri.file('/proj', fs), + new NullConsole(), + fs + ); + + const result = configOptions.executionEnvironments[0].extraPaths.map((uri) => + normalizeSlashes(uri.getFilePath(), '/') + ); + assert.deepStrictEqual(result, ['/proj/libs/auth/src', '/proj/libs/core/src']); + }); + + test('a literal that resolves via ".." to a glob match still wins and de-duplicates', () => { + // `libs/../libs/shared/src` normalizes to `/proj/libs/shared/src`, the same + // directory the glob matches. The literal keeps its front position and the + // glob-produced duplicate is dropped. + const fs = makeFs(['/proj/libs/shared/src', '/proj/libs/auth/src']); + assert.deepStrictEqual(expand(fs, ['libs/../libs/shared/src', 'libs/*/src']), [ + '/proj/libs/shared/src', + '/proj/libs/auth/src', + ]); + }); + + test('a zero-match settings glob records its watch spec exactly once across repeated calls', () => { + // A glob that currently matches nothing is still recorded so a watcher can + // observe directories that appear later. Because a zero-match glob leaves + // `defaultExtraPaths` unset, the caller's `!defaultExtraPaths` guard can invoke + // `ensureDefaultExtraPaths` again; the spec must be recorded only once. + const fs = makeFs(['/proj/other']); // nothing matches `pkgs/*/src` + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + + configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['pkgs/*/src']); + configOptions.ensureDefaultExtraPaths(fs, /* autoSearchPaths */ false, ['pkgs/*/src']); + + assert.strictEqual(configOptions.defaultExtraPaths, undefined); + assert.deepStrictEqual( + configOptions.extraPathGlobFileSpecs.map((s) => normalizeSlashes(s, '/')), + ['/proj/pkgs/*/src'] + ); + }); + + // ---- Adversarial / corner-case coverage ---- + + test('** matches zero segments (direct child of the base)', () => { + // The direct `/proj/external/site-packages` proves the zero-segment branch. + const fs = makeFs(['/proj/external/site-packages', '/proj/external/a/b/site-packages']); + assert.deepStrictEqual(expand(fs, ['external/**/site-packages']), [ + '/proj/external/a/b/site-packages', + '/proj/external/site-packages', + ]); + }); + + test('leading ** matches at the base and at any depth', () => { + const fs = makeFs(['/proj/site-packages', '/proj/a/site-packages']); + assert.deepStrictEqual(expand(fs, ['**/site-packages']), ['/proj/a/site-packages', '/proj/site-packages']); + }); + + test('trailing ** includes the base directory and every descendant', () => { + const fs = makeFs(['/proj/libs', '/proj/libs/a', '/proj/libs/a/b']); + assert.deepStrictEqual(expand(fs, ['libs/**']), ['/proj/libs', '/proj/libs/a', '/proj/libs/a/b']); + }); + + test('bare * matches only immediate child directories', () => { + const fs = makeFs(['/proj/libs', '/proj/libs/a', '/proj/other']); + assert.deepStrictEqual(expand(fs, ['*']), ['/proj/libs', '/proj/other']); + }); + + test('bare ** matches the base and all descendants', () => { + const fs = makeFs(['/proj/a', '/proj/a/b']); + assert.deepStrictEqual(expand(fs, ['**']), ['/proj', '/proj/a', '/proj/a/b']); + }); + + test('consecutive ** terminates and does not duplicate matches', () => { + const fs = makeFs(['/proj/a/x/b']); + assert.deepStrictEqual(expand(fs, ['a/**/**/b']), ['/proj/a/x/b']); + }); + + test('? matches exactly one character and not zero', () => { + const fs = makeFs(['/proj/pkg', '/proj/pkg1']); + assert.deepStrictEqual(expand(fs, ['pkg?']), ['/proj/pkg1']); + }); + + test('regex metacharacters and Bazel-style names are matched literally', () => { + const fs = makeFs([ + '/proj/ext/rules_python~~pip~pip_310_numpy/site-packages', + '/proj/ext/rules_python~~pip~pip_311_pandas/site-packages', + '/proj/ext/a+b(c)', + ]); + assert.deepStrictEqual(expand(fs, ['ext/rules_python~~pip~pip_*_numpy/site-packages']), [ + '/proj/ext/rules_python~~pip~pip_310_numpy/site-packages', + ]); + // `+` and `(` in the pattern must be treated literally, not as regex operators. + assert.deepStrictEqual(expand(fs, ['ext/a+b*']), ['/proj/ext/a+b(c)']); + }); + + test('symbolic links are followed but the matched path is not resolved', () => { + const fs = makeFs(['/proj/real/pkg']); + fs.symlinkSync('/proj/real', '/proj/link'); + // The result keeps the symlink path "/proj/link/pkg" rather than "/proj/real/pkg". + assert.deepStrictEqual(expand(fs, ['link/*']), ['/proj/link/pkg']); + }); + + test('a symlink diamond emits each logical path (symlinks are not resolved)', () => { + const fs = makeFs(['/proj/real/pkg']); + fs.symlinkSync('/proj/real', '/proj/link1'); + fs.symlinkSync('/proj/real', '/proj/link2'); + assert.deepStrictEqual(expand(fs, ['link1/*', 'link2/*']), ['/proj/link1/pkg', '/proj/link2/pkg']); + }); + + test('a single glob over two symlinks to the same target emits both aliases', () => { + // Regression guard: the (logical directory, tailIndex) traversal memo must be + // keyed on the logical path, not the real path. Two symlink aliases that + // resolve to the same real directory at the same tail depth must both survive + // a single glob entry (the second must not be dropped as an already-visited + // real path). This is the Bazel `external/*/site-packages` symlink-forest case. + const fs = makeFs(['/proj/real']); + fs.symlinkSync('/proj/real', '/proj/link1'); + fs.symlinkSync('/proj/real', '/proj/link2'); + assert.deepStrictEqual(expand(fs, ['*']), ['/proj/link1', '/proj/link2', '/proj/real']); + }); + + test('a broken symlink is skipped during expansion', () => { + const fs = makeFs(['/proj/realdir']); + fs.symlinkSync('/proj/nonexistent', '/proj/broken'); + assert.deepStrictEqual(expand(fs, ['*']), ['/proj/realdir']); + }); + + test('a directory claimed by an explicit entry is dropped from every glob', () => { + const fs = makeFs(['/proj/pkgs/a']); + assert.deepStrictEqual(expand(fs, ['pkgs/a', 'pkgs/*', 'pkgs/a*']), ['/proj/pkgs/a']); + }); + + test('normalized-equal literal entries de-duplicate to a single path', () => { + const fs = makeFs(['/proj/libs/shared/src']); + assert.deepStrictEqual(expand(fs, ['libs/shared/src/', './libs/shared/src', 'libs/../libs/shared/src']), [ + '/proj/libs/shared/src', + ]); + }); + + test('empty and whitespace-only entries are ignored; "." resolves to the base', () => { + const fs = makeFs(['/proj/x']); + assert.deepStrictEqual(expand(fs, ['']), []); + assert.deepStrictEqual(expand(fs, [' ']), []); + assert.deepStrictEqual(expand(fs, ['.']), ['/proj']); + assert.deepStrictEqual(expand(fs, ['', 'x', ' ']), ['/proj/x']); + }); + + test('an empty entries list produces an empty result', () => { + const fs = makeFs(['/proj/x']); + assert.deepStrictEqual(expand(fs, []), []); + }); + + test('KNOWN LIMITATION: on a case-insensitive file system a mis-cased glob root produces a duplicate', () => { + // De-duplication is intentionally case-sensitive (see the component docs). + // On a case-insensitive file system, a glob whose non-wildcard root is typed + // in a different case than on disk emits that typed case, which does not + // de-duplicate against a correctly-cased literal. This is an accepted + // limitation for now (import-root case-insensitivity is out of scope). + const fs = makeFs(['/proj/libs/foo'], /* ignoreCase */ true); + assert.deepStrictEqual(expand(fs, ['libs/foo', 'Libs/*']), ['/proj/libs/foo', '/proj/Libs/foo']); + }); + + test('initializeFromJson without a file system falls back to literal resolution', () => { + const fs = makeFs(['/proj/libs/auth/src']); + const configOptions = new ConfigOptions(Uri.file('/proj', fs)); + + // A service provider without a registered file system cannot expand globs; + // entries are resolved literally (the glob character is left in the path). + configOptions.initializeFromJson( + { extraPaths: ['libs/*/src'] }, + Uri.file('/proj', fs), + createServiceProvider(), + new TestAccessHost() + ); + + const result = (configOptions.defaultExtraPaths ?? []).map((uri) => normalizeSlashes(uri.getFilePath(), '/')); + assert.deepStrictEqual(result, ['/proj/libs/*/src']); + }); +}); + +describe('extraPath glob watch targets', () => { + test('a non-wildcard URI produces no watch target', () => { + assert.deepStrictEqual(targetsOf(['/proj/libs/shared/src']), []); + }); + + test('a single-segment glob yields the non-wildcard root and the tail pattern', () => { + assert.deepStrictEqual(targetsOf(['/proj/libs/*/src']), [{ root: '/proj/libs', dirPattern: '*/src' }]); + }); + + test('a trailing wildcard yields the parent root and a "*" pattern', () => { + assert.deepStrictEqual(targetsOf(['/proj/libs/*']), [{ root: '/proj/libs', dirPattern: '*' }]); + }); + + test('a "**" glob preserves the recursive tail relative to the root', () => { + assert.deepStrictEqual(targetsOf(['/proj/packages/**/lib']), [ + { root: '/proj/packages', dirPattern: '**/lib' }, + ]); + }); + + test('a "?" glob is kept in the tail pattern', () => { + assert.deepStrictEqual(targetsOf(['/proj/env/pip3??/site-packages']), [ + { root: '/proj/env', dirPattern: 'pip3??/site-packages' }, + ]); + }); + + test('only wildcard URIs contribute targets; literals are skipped', () => { + assert.deepStrictEqual(targetsOf(['/proj/stubs', '/proj/libs/*/src', '/proj/vendor/**']), [ + { root: '/proj/libs', dirPattern: '*/src' }, + { root: '/proj/vendor', dirPattern: '**' }, + ]); + }); + + test('extraPathWatchTargetCovers matches directories the glob resolves to', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + const [target] = getExtraPathWatchTargets(['/proj/libs/*/src'], fs); + + // Directories the glob matches (and those beneath them) are covered. + assert.strictEqual(extraPathWatchTargetCovers(target, Uri.file('/proj/libs/auth/src', fs)), true); + assert.strictEqual(extraPathWatchTargetCovers(target, Uri.file('/proj/libs/auth/src/nested', fs)), true); + + // Sibling directories that the glob does not match are not covered. + assert.strictEqual(extraPathWatchTargetCovers(target, Uri.file('/proj/libs/auth/docs', fs)), false); + assert.strictEqual(extraPathWatchTargetCovers(target, Uri.file('/proj/other', fs)), false); + }); + + function targetsOf(paths: string[]): { root: string; dirPattern: string }[] { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + return getExtraPathWatchTargets(paths, fs).map((t) => ({ + root: normalizeSlashes(t.root.getFilePath(), '/'), + dirPattern: t.dirPattern, + })); + } +}); + +function makeFs(dirs: string[], ignoreCase = false): TestFileSystem { + const fs = new TestFileSystem(ignoreCase, { cwd: '/' }); + for (const dir of dirs) { + fs.mkdirpSync(dir); + } + return fs; +} + +function expand(fs: TestFileSystem, entries: string[], base = '/proj'): string[] { + const baseUri = Uri.file(base, fs); + return expandExtraPaths(fs, baseUri, entries).map((uri) => normalizeSlashes(uri.getFilePath(), '/')); +} diff --git a/packages/pyright-internal/src/tests/fileSystemMapping.test.ts b/packages/pyright-internal/src/tests/fileSystemMapping.test.ts new file mode 100644 index 000000000000..5c5b11def06f --- /dev/null +++ b/packages/pyright-internal/src/tests/fileSystemMapping.test.ts @@ -0,0 +1,552 @@ +import type { Dirent, ReadStream } from 'fs'; + +import { FileSystem, Stats } from '../common/fileSystem'; +import { normalizeSlashes } from '../common/pathUtils'; +import { Uri } from '../common/uri/uri'; +import { UriEx } from '../common/uri/uriUtils'; +import { + createFileSystemMapping, + createFileSystemMappingState, + FileSystemMapping, + FileSystemMappingState, +} from '../fileSystemMapping'; +import { PyrightFileSystem } from '../pyrightFileSystem'; +import { TestFileSystem } from './harness/vfs/filesystem'; + +type ExpectedMappingKey = + | 'existsSync' + | 'readdirEntriesSync' + | 'readFileSync' + | 'statSync' + | 'realpathSync' + | 'createReadStream' + | 'readFile' + | 'readFileText' + | 'isMappedUri' + | 'getOriginalUri' + | 'getMappedUri' + | 'mapDirectory'; + +type Assert = T; +type IsEqual = (() => V extends T ? 1 : 2) extends () => V extends U ? 1 : 2 ? true : false; +type MappingKeysAreExact = Assert>; +type MappingSignaturesMatch = Assert< + { + [K in keyof FileSystemMapping]: IsEqual; + }[keyof FileSystemMapping] extends true + ? true + : false +>; +type MappingIsNotFileSystem = Assert; +type MappingStateKeysAreExact = Assert>; +type MappingStateBindIsExact = Assert< + IsEqual FileSystemMapping> +>; + +test('file system mapping type surface is exact', () => { + const assertions: [ + MappingKeysAreExact, + MappingSignaturesMatch, + MappingIsNotFileSystem, + MappingStateKeysAreExact, + MappingStateBindIsExact + ] = [true, true, true, true, true]; + expect(assertions).toStrictEqual([true, true, true, true, true]); +}); + +test('mapping state shares registrations while each view uses its own downstream filesystem', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const publicFile = publicRoot.combinePaths('file.py'); + const originalFile = originalRoot.combinePaths('file.py'); + const firstFs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [originalFile.getFilePath()]: 'first' }, + }); + const secondFs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [originalFile.getFilePath()]: 'second' }, + }); + const state = createFileSystemMappingState(); + const first = state.bind(firstFs); + const second = state.bind(secondFs); + const filterCalls: Array<{ uri: Uri; fileSystem: FileSystem }> = []; + const mapping = first.mapDirectory(publicRoot, originalRoot, (uri, fileSystem) => { + filterCalls.push({ uri, fileSystem }); + return true; + }); + + expect(first.isMappedUri(publicFile)).toBe(true); + expect(second.isMappedUri(publicFile)).toBe(true); + expect(first.readFileSync(publicFile, 'utf8')).toBe('first'); + expect(second.readFileSync(publicFile, 'utf8')).toBe('second'); + expect(filterCalls.some((call) => call.uri.equals(originalFile) && call.fileSystem === firstFs)).toBe(true); + expect(filterCalls.some((call) => call.uri.equals(originalFile) && call.fileSystem === secondFs)).toBe(true); + + mapping.dispose(); + expect(first.isMappedUri(publicFile)).toBe(false); + expect(second.isMappedUri(publicFile)).toBe(false); +}); + +test('mapping state invalidates shared cached misses for sync and async reads when a mapping is added', async () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const publicFile = publicRoot.combinePaths('file.py'); + const originalFile = originalRoot.combinePaths('file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [publicFile.getFilePath()]: 'public', + [originalFile.getFilePath()]: 'original', + }, + }); + const state = createFileSystemMappingState(); + const first = state.bind(fs); + const second = state.bind(fs); + + expect(first.readFileSync(publicFile, 'utf8')).toBe('public'); + expect((await second.readFile(publicFile)).toString()).toBe('public'); + await expect(second.readFileText(publicFile, 'utf8')).resolves.toBe('public'); + + first.mapDirectory(publicRoot, originalRoot); + + expect(second.readFileSync(publicFile, 'utf8')).toBe('original'); + expect((await first.readFile(publicFile)).toString()).toBe('original'); + await expect(first.readFileText(publicFile, 'utf8')).resolves.toBe('original'); +}); + +test('mapping state preserves replacement and stale-handle disposal across bound views', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const firstOriginal = UriEx.file(normalizeSlashes('/original/first')); + const secondOriginal = UriEx.file(normalizeSlashes('/original/second')); + const publicFile = publicRoot.combinePaths('file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [publicFile.getFilePath()]: 'public', + [firstOriginal.combinePaths('file.py').getFilePath()]: 'first', + [secondOriginal.combinePaths('file.py').getFilePath()]: 'second', + }, + }); + const state = createFileSystemMappingState(); + const first = state.bind(fs); + const second = state.bind(fs); + const stale = first.mapDirectory(publicRoot, firstOriginal); + expect(second.readFileSync(publicFile, 'utf8')).toBe('first'); + + second.mapDirectory(publicRoot, secondOriginal); + expect(first.readFileSync(publicFile, 'utf8')).toBe('second'); + + stale.dispose(); + expect(first.isMappedUri(publicFile)).toBe(false); + expect(second.isMappedUri(publicFile)).toBe(false); + expect(second.readFileSync(publicFile, 'utf8')).toBe('public'); +}); + +test('independent mapping states remain isolated over the same downstream filesystem', () => { + const firstPublic = UriEx.file(normalizeSlashes('/public/first')); + const secondPublic = UriEx.file(normalizeSlashes('/public/second')); + const firstOriginal = UriEx.file(normalizeSlashes('/original/first')); + const secondOriginal = UriEx.file(normalizeSlashes('/original/second')); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [firstOriginal.combinePaths('file.py').getFilePath()]: 'first', + [secondOriginal.combinePaths('file.py').getFilePath()]: 'second', + }, + }); + const first = createFileSystemMappingState().bind(fs); + const second = createFileSystemMappingState().bind(fs); + first.mapDirectory(firstPublic, firstOriginal); + second.mapDirectory(secondPublic, secondOriginal); + + expect(first.isMappedUri(firstPublic)).toBe(true); + expect(first.isMappedUri(secondPublic)).toBe(false); + expect(second.isMappedUri(firstPublic)).toBe(false); + expect(second.isMappedUri(secondPublic)).toBe(true); +}); + +test('compatibility mapping factory creates isolated state for every call', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const publicFile = publicRoot.combinePaths('file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [originalRoot.combinePaths('file.py').getFilePath()]: 'content' }, + }); + const first = createFileSystemMapping(fs); + const second = createFileSystemMapping(fs); + + first.mapDirectory(publicRoot, originalRoot); + + expect(first.isMappedUri(publicFile)).toBe(true); + expect(second.isMappedUri(publicFile)).toBe(false); +}); + +test('file system mapping translates children, filters originals, and disposes mappings', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const publicFile = publicRoot.combinePaths('file.py'); + const originalFile = originalRoot.combinePaths('file.py'); + const deniedPublic = publicRoot.combinePaths('denied.py'); + const deniedOriginal = originalRoot.combinePaths('denied.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [originalFile.getFilePath()]: 'original', + [deniedOriginal.getFilePath()]: 'denied original', + [deniedPublic.getFilePath()]: 'public fallback', + }, + }); + const mapping = createFileSystemMapping(fs); + const filterCalls: Array<{ uri: Uri; fileSystem: FileSystem }> = []; + const disposable = mapping.mapDirectory(publicRoot, originalRoot, (uri, fileSystem) => { + filterCalls.push({ uri, fileSystem }); + return !uri.equals(deniedOriginal); + }); + + const equalPublicFile = UriEx.file(publicFile.getFilePath()); + expect(equalPublicFile).not.toBe(publicFile); + expect(mapping.isMappedUri(equalPublicFile)).toBe(true); + expect(mapping.getOriginalUri(equalPublicFile).equals(originalFile)).toBe(true); + expect(mapping.getMappedUri(UriEx.file(originalFile.getFilePath())).equals(publicFile)).toBe(true); + expect(mapping.readFileSync(publicFile, 'utf8')).toBe('original'); + expect(mapping.existsSync(originalFile)).toBe(false); + expect(() => mapping.statSync(originalFile)).toThrow('ENOENT: path does not exist'); + + expect(mapping.isMappedUri(deniedPublic)).toBe(true); + expect(mapping.getMappedUri(deniedOriginal).equals(deniedOriginal)).toBe(true); + expect(mapping.existsSync(deniedOriginal)).toBe(true); + expect(mapping.readFileSync(deniedPublic, 'utf8')).toBe('public fallback'); + expect(filterCalls.some((call) => call.uri.equals(originalFile) && call.fileSystem === fs)).toBe(true); + expect(filterCalls.some((call) => call.uri.equals(deniedOriginal) && call.fileSystem === fs)).toBe(true); + + disposable.dispose(); + expect(mapping.isMappedUri(publicFile)).toBe(false); + expect(mapping.existsSync(originalFile)).toBe(true); +}); + +test('file system mapping follows URI case-sensitivity semantics', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: normalizeSlashes('/') }); + const mapping = createFileSystemMapping(fs); + const sensitiveMapped = UriEx.file(normalizeSlashes('/Public/Sensitive'), /* isCaseSensitive */ true); + const sensitiveOriginal = UriEx.file(normalizeSlashes('/Original/Sensitive'), true); + const insensitiveMapped = UriEx.file(normalizeSlashes('/Public/Insensitive'), /* isCaseSensitive */ false); + const insensitiveOriginal = UriEx.file(normalizeSlashes('/Original/Insensitive'), false); + mapping.mapDirectory(sensitiveMapped, sensitiveOriginal); + mapping.mapDirectory(insensitiveMapped, insensitiveOriginal); + + const sensitiveMismatch = UriEx.file(normalizeSlashes('/public/sensitive/file.py'), true); + const insensitiveAlias = UriEx.file(normalizeSlashes('/PUBLIC/INSENSITIVE/file.py'), false); + + expect(mapping.getOriginalUri(sensitiveMismatch)).toBe(sensitiveMismatch); + expect( + mapping + .getOriginalUri(insensitiveAlias) + .equals(UriEx.file(normalizeSlashes('/Original/Insensitive/file.py'), false)) + ).toBe(true); +}); + +test('file system mapping uses closest parents and exact-root realpath behavior', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const nestedPublic = publicRoot.combinePaths('nested'); + const nestedOriginal = UriEx.file(normalizeSlashes('/nested-source')); + const nestedFile = nestedPublic.combinePaths('file.py'); + const siblingFile = publicRoot.combinePaths('nestedish', 'file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [nestedOriginal.combinePaths('file.py').getFilePath()]: 'nested', + [originalRoot.combinePaths('nested', 'file.py').getFilePath()]: 'parent nested', + [originalRoot.combinePaths('nestedish', 'file.py').getFilePath()]: 'sibling', + }, + }); + const realpathSync = jest.spyOn(fs, 'realpathSync').mockImplementation((uri) => uri); + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory(publicRoot, originalRoot); + expect(mapping.readFileSync(nestedFile, 'utf8')).toBe('parent nested'); + + const nested = mapping.mapDirectory(nestedPublic, nestedOriginal); + + expect(mapping.readFileSync(nestedFile, 'utf8')).toBe('nested'); + expect(mapping.readFileSync(siblingFile, 'utf8')).toBe('sibling'); + expect(mapping.realpathSync(publicRoot)).toBe(publicRoot); + expect(mapping.realpathSync(nestedFile)).toBe(nestedFile); + expect(realpathSync).toHaveBeenCalledTimes(1); + expect(realpathSync).toHaveBeenCalledWith(nestedFile); + + nested.dispose(); + expect(mapping.readFileSync(nestedFile, 'utf8')).toBe('parent nested'); +}); + +test('file system mapping preserves stale and independent disposable behavior', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const firstOriginal = UriEx.file(normalizeSlashes('/original/first')); + const secondOriginal = UriEx.file(normalizeSlashes('/original/second')); + const otherPublic = UriEx.file(normalizeSlashes('/public/other')); + const otherOriginal = UriEx.file(normalizeSlashes('/original/other')); + const publicFile = publicRoot.combinePaths('file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [publicFile.getFilePath()]: 'public', + [firstOriginal.combinePaths('file.py').getFilePath()]: 'first', + [secondOriginal.combinePaths('file.py').getFilePath()]: 'second', + [otherOriginal.combinePaths('file.py').getFilePath()]: 'other', + }, + }); + const mapping = createFileSystemMapping(fs); + const stale = mapping.mapDirectory(publicRoot, firstOriginal); + expect(mapping.readFileSync(publicFile, 'utf8')).toBe('first'); + mapping.mapDirectory(publicRoot, secondOriginal); + expect(mapping.readFileSync(publicFile, 'utf8')).toBe('second'); + const other = mapping.mapDirectory(otherPublic, otherOriginal); + + stale.dispose(); + expect(mapping.isMappedUri(publicFile)).toBe(false); + expect(mapping.readFileSync(publicFile, 'utf8')).toBe('public'); + expect(mapping.readFileSync(otherPublic.combinePaths('file.py'), 'utf8')).toBe('other'); + other.dispose(); + expect(mapping.existsSync(otherOriginal.combinePaths('file.py'))).toBe(true); +}); + +test('file system mapping synthesizes and merges classified directory entries', () => { + const publicParent = UriEx.file(normalizeSlashes('/public')); + const publicRoot = publicParent.combinePaths('pkg'); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const linkedTarget = UriEx.file(normalizeSlashes('/targets/linked.pyi')); + const linkedPath = originalRoot.combinePaths('linked.pyi').getFilePath(); + const missingPath = originalRoot.combinePaths('missing.pyi').getFilePath(); + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: normalizeSlashes('/') }); + fs.mkdirpSync(originalRoot.getFilePath()); + fs.mkdirpSync(publicRoot.getFilePath()); + fs.mkdirpSync(linkedTarget.getDirectory().getFilePath()); + fs.mkdirpSync(originalRoot.combinePaths('subdir').getFilePath()); + fs.writeFileSync(linkedTarget, 'linked'); + fs.writeFileSync(originalRoot.combinePaths('dup.pyi'), 'mapped duplicate'); + fs.writeFileSync(publicRoot.combinePaths('dup.pyi'), 'real duplicate'); + fs.writeFileSync(publicRoot.combinePaths('real.py'), 'real'); + fs.symlinkSync(linkedTarget.getFilePath(), linkedPath); + fs.symlinkSync(normalizeSlashes('/targets/missing.pyi'), missingPath); + const originalEntries = fs.readdirEntriesSync(originalRoot); + const publicEntries = fs.readdirEntriesSync(publicRoot); + const parentEntriesFromBase = fs.readdirEntriesSync(publicParent); + const realDuplicate = publicEntries.find((entry) => entry.name === 'dup.pyi'); + jest.spyOn(fs, 'readdirEntriesSync').mockImplementation((uri) => { + if (uri.equals(originalRoot)) { + return originalEntries; + } + if (uri.equals(publicRoot)) { + return publicEntries; + } + if (uri.equals(publicParent)) { + return parentEntriesFromBase; + } + return []; + }); + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory( + publicRoot, + originalRoot, + (uri) => uri.equals(originalRoot) || uri.fileName === 'subdir' || uri.fileName.endsWith('.pyi') + ); + + const parentEntries = mapping.readdirEntriesSync(publicParent); + expect(parentEntries.map((entry) => entry.name)).toStrictEqual(['pkg']); + expect(parentEntries[0].isDirectory()).toBe(true); + expect((parentEntries[0] as { parentPath?: string }).parentPath).toBe(publicParent.getFilePath()); + + const entries = mapping.readdirEntriesSync(publicRoot); + expect(entries.map((entry) => entry.name)).toStrictEqual(['dup.pyi', 'linked.pyi', 'subdir', 'real.py']); + expect(entries[0]).toBe(realDuplicate); + expect(entries[1].isFile()).toBe(true); + expect(entries[1].isSymbolicLink()).toBe(false); + expect(entries[2].isDirectory()).toBe(true); + expect(entries.some((entry) => entry.name === 'missing.pyi')).toBe(false); +}); + +test('file system mapping synthesizes a mapped child with no public backing directory', () => { + const publicParent = UriEx.file(normalizeSlashes('/public')); + const publicRoot = publicParent.combinePaths('pkg'); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [originalRoot.combinePaths('file.py').getFilePath()]: 'content' }, + }); + expect(fs.existsSync(publicParent)).toBe(false); + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory(publicRoot, originalRoot); + + const entries = mapping.readdirEntriesSync(publicParent); + expect(entries).toHaveLength(1); + expect(entries[0].name).toBe('pkg'); + expect(entries[0].isDirectory()).toBe(true); + expect(entries[0].isFile()).toBe(false); + expect((entries[0] as { parentPath?: string }).parentPath).toBe(publicParent.getFilePath()); +}); + +test('file system mapping synthesizes only direct mapped children', () => { + const publicParent = UriEx.file(normalizeSlashes('/public')); + const intermediate = publicParent.combinePaths('a'); + const mappedRoot = intermediate.combinePaths('pkg'); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [originalRoot.combinePaths('file.py').getFilePath()]: 'content' }, + }); + fs.mkdirpSync(intermediate.getFilePath()); + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory(mappedRoot, originalRoot); + + expect(mapping.readdirEntriesSync(publicParent).map((entry) => entry.name)).toStrictEqual(['a']); +}); + +test('file system mapping hides allowed original roots from their real parent listing', () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalParent = UriEx.file(normalizeSlashes('/original')); + const originalRoot = originalParent.combinePaths('pkg'); + const visibleSibling = originalParent.combinePaths('visible'); + const fs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { + [originalRoot.combinePaths('file.py').getFilePath()]: 'content', + [visibleSibling.combinePaths('file.py').getFilePath()]: 'visible', + }, + }); + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory(publicRoot, originalRoot); + + expect(mapping.readdirEntriesSync(originalParent).map((entry) => entry.name)).toStrictEqual(['visible']); +}); + +test('file system mapping preserves read, metadata, stream, and promise identities', async () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const publicFile = publicRoot.combinePaths('file.py'); + const originalFile = originalRoot.combinePaths('file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: normalizeSlashes('/') }); + const bufferResult = Buffer.from('binary'); + const statResult = {} as Stats; + const streamResult = {} as ReadStream; + const readPromise = Promise.resolve(bufferResult); + const textPromise = Promise.resolve('text'); + const readFileSync = jest + .spyOn(fs, 'readFileSync') + .mockImplementation((_uri, encoding) => (encoding ? 'text' : bufferResult)); + const statSync = jest.spyOn(fs, 'statSync').mockReturnValue(statResult as never); + const createReadStream = jest.spyOn(fs, 'createReadStream').mockReturnValue(streamResult); + const readFile = jest.spyOn(fs, 'readFile').mockReturnValue(readPromise); + const readFileText = jest.spyOn(fs, 'readFileText').mockReturnValue(textPromise); + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory(publicRoot, originalRoot); + + expect(mapping.readFileSync(publicFile)).toBe(bufferResult); + expect(mapping.readFileSync(publicFile, null)).toBe(bufferResult); + expect(mapping.readFileSync(publicFile, 'latin1')).toBe('text'); + expect(mapping.statSync(publicFile)).toBe(statResult); + expect(mapping.createReadStream(publicFile)).toBe(streamResult); + expect(mapping.readFile(publicFile)).toBe(readPromise); + expect(mapping.readFileText(publicFile)).toBe(textPromise); + expect(mapping.readFileText(publicFile, 'latin1')).toBe(textPromise); + expect(readFileSync.mock.calls).toStrictEqual([ + [originalFile, undefined], + [originalFile, null], + [originalFile, 'latin1'], + ]); + expect(statSync).toHaveBeenCalledTimes(1); + expect(statSync).toHaveBeenCalledWith(originalFile); + expect(createReadStream).toHaveBeenCalledTimes(1); + expect(createReadStream).toHaveBeenCalledWith(originalFile); + expect(readFile).toHaveBeenCalledTimes(1); + expect(readFile).toHaveBeenCalledWith(originalFile); + expect(readFileText.mock.calls).toStrictEqual([ + [originalFile, undefined], + [originalFile, 'latin1'], + ]); + + const syncFailure = new Error('sync failure'); + readFileSync.mockImplementation(() => { + throw syncFailure; + }); + expect(captureThrownValue(() => mapping.readFileSync(publicFile, 'utf8'))).toBe(syncFailure); + const rejection = new Error('rejection'); + const rejectedRead = Promise.reject(rejection); + readFile.mockReturnValue(rejectedRead); + const actualRejectedRead = mapping.readFile(publicFile); + expect(actualRejectedRead).toBe(rejectedRead); + await expect(actualRejectedRead).rejects.toBe(rejection); +}); + +test('cached structural resolutions evaluate live filters for every sync and async read', async () => { + const publicRoot = UriEx.file(normalizeSlashes('/public/pkg')); + const originalRoot = UriEx.file(normalizeSlashes('/original/pkg')); + const publicFile = publicRoot.combinePaths('file.py'); + const originalFile = originalRoot.combinePaths('file.py'); + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: normalizeSlashes('/') }); + const readFileSync = jest.spyOn(fs, 'readFileSync').mockReturnValue('content'); + const readFile = jest.spyOn(fs, 'readFile').mockResolvedValue(Buffer.from('content')); + const readFileText = jest.spyOn(fs, 'readFileText').mockResolvedValue('content'); + const filterCalls: Uri[] = []; + let visible = true; + const mapping = createFileSystemMapping(fs); + mapping.mapDirectory(publicRoot, originalRoot, (uri) => { + filterCalls.push(uri); + return visible; + }); + + expect(mapping.readFileSync(publicFile, 'utf8')).toBe('content'); + await expect(mapping.readFile(publicFile)).resolves.toEqual(Buffer.from('content')); + await expect(mapping.readFileText(publicFile, 'utf8')).resolves.toBe('content'); + visible = false; + expect(mapping.readFileSync(publicFile, 'utf8')).toBe('content'); + await expect(mapping.readFile(publicFile)).resolves.toEqual(Buffer.from('content')); + await expect(mapping.readFileText(publicFile, 'utf8')).resolves.toBe('content'); + + expect(filterCalls).toStrictEqual([ + originalFile, + originalFile, + originalFile, + originalFile, + originalFile, + originalFile, + ]); + expect(readFileSync.mock.calls.map(([uri]) => uri)).toStrictEqual([originalFile, publicFile]); + expect(readFile.mock.calls.map(([uri]) => uri)).toStrictEqual([originalFile, publicFile]); + expect(readFileText.mock.calls.map(([uri]) => uri)).toStrictEqual([originalFile, publicFile]); +}); + +test('file system mapping keeps internal reads distinct from chained public URI translation', () => { + const physicalRoot = UriEx.file(normalizeSlashes('/physical/pkg')); + const innerPublicRoot = UriEx.file(normalizeSlashes('/inner/pkg')); + const outerPublicRoot = UriEx.file(normalizeSlashes('/outer/pkg')); + const physicalFile = physicalRoot.combinePaths('file.py'); + const innerPublicFile = innerPublicRoot.combinePaths('file.py'); + const outerPublicFile = outerPublicRoot.combinePaths('file.py'); + const raw = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [physicalFile.getFilePath()]: 'physical' }, + }); + const inner = new PyrightFileSystem(raw); + inner.mapDirectory(innerPublicRoot, physicalRoot); + const getOriginalUri = jest.spyOn(inner, 'getOriginalUri'); + const mapping = createFileSystemMapping(inner); + mapping.mapDirectory(outerPublicRoot, innerPublicRoot); + + expect(mapping.isMappedUri(innerPublicFile)).toBe(true); + expect(mapping.getMappedUri(physicalFile).equals(innerPublicFile)).toBe(true); + expect(mapping.readFileSync(outerPublicFile, 'utf8')).toBe('physical'); + expect(getOriginalUri).not.toHaveBeenCalled(); + expect(mapping.getOriginalUri(outerPublicFile).equals(physicalFile)).toBe(true); + expect(getOriginalUri).toHaveBeenCalledTimes(1); + expect(getOriginalUri).toHaveBeenCalledWith(innerPublicFile); +}); + +function captureThrownValue(callback: () => unknown): unknown { + try { + callback(); + } catch (error) { + return error; + } + throw new Error('Expected callback to throw'); +} diff --git a/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.fourslash.ts index c1ddc679eb6a..c3a8a5446945 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.fourslash.ts @@ -66,11 +66,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker1Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker1Range, newText: "'age'" }, }, ], @@ -83,6 +85,7 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker3Range, newText: "'age'" }, }, ], @@ -92,6 +95,7 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker4Range, newText: "'age'" }, }, ], @@ -104,6 +108,7 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker6Range, newText: "'name'" }, }, ], @@ -113,11 +118,13 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker8Range, newText: "'age'" }, }, { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker8Range, newText: "'name'" }, }, ], @@ -127,21 +134,25 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker9Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker9Range, newText: "'age'" }, }, { label: "'title'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker9Range, newText: "'title'" }, }, { label: "'score'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker9Range, newText: "'score'" }, }, ], @@ -151,21 +162,25 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker10Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker10Range, newText: "'age'" }, }, { label: "'title'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker10Range, newText: "'title'" }, }, { label: "'score'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker10Range, newText: "'score'" }, }, ], @@ -175,6 +190,7 @@ { label: "'score'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker11Range, newText: "'score'" }, }, ], @@ -187,11 +203,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker13Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker13Range, newText: "'age'" }, }, ], @@ -201,11 +219,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker14Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker14Range, newText: "'age'" }, }, ], @@ -221,6 +241,7 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker17Range, newText: "'age'" }, }, ], @@ -234,11 +255,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker7Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker7Range, newText: "'age'" }, }, ], diff --git a/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts index b6e7131e5d31..a5ad7e230630 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts @@ -60,11 +60,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker3Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker3Range, newText: "'age'" }, }, ], @@ -74,11 +76,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker4Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker4Range, newText: "'age'" }, }, ], @@ -88,11 +92,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker5Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker5Range, newText: "'age'" }, }, ], @@ -102,11 +108,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker6Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker6Range, newText: "'age'" }, }, ], @@ -116,11 +124,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker7Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker7Range, newText: "'age'" }, }, ], @@ -133,11 +143,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker9Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker9Range, newText: "'age'" }, }, ], @@ -150,11 +162,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker11Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker11Range, newText: "'age'" }, }, ], diff --git a/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts index e16d2187c066..965f2193099b 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts @@ -46,11 +46,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker1Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker1Range, newText: "'age'" }, }, ], @@ -60,11 +62,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker2Range, newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker2Range, newText: "'age'" }, }, ], @@ -81,6 +85,7 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker3Range, newText: "'age'" }, }, ], @@ -90,6 +95,7 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker4Range, newText: "'age'" }, }, ], @@ -99,6 +105,7 @@ { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker5Range, newText: "'age'" }, }, ], diff --git a/packages/pyright-internal/src/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.ts new file mode 100644 index 000000000000..4786be4d4261 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/completions.callSite.isinstanceNarrowing.fourslash.ts @@ -0,0 +1,41 @@ +/// + +// @filename: test.py +//// class Geometry: +//// def geo_method(self): ... +//// class Document: +//// def newfolder(self): ... +//// def newschema(self): ... +//// class Container: +//// def _newfeature(self, cls, **kwargs): +//// feat = cls(**kwargs) +//// # The isinstance narrowing below must not suppress call-site return +//// # type inference, so member completions on the result still include +//// # the concrete Document members. +//// if isinstance(feat, Geometry): +//// pass +//// return feat +//// def newdocument(self, **kwargs): +//// return self._newfeature(Document, **kwargs) +//// doc = Container().newdocument() +//// doc.[|/*marker*/|] + +{ + helper.openFiles(helper.getMarkers().map((m) => m.fileName)); + + // @ts-ignore + await helper.verifyCompletion('included', 'markdown', { + marker: { + completions: [ + { + label: 'newfolder', + kind: Consts.CompletionItemKind.Method, + }, + { + label: 'newschema', + kind: Consts.CompletionItemKind.Method, + }, + ], + }, + }); +} diff --git a/packages/pyright-internal/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts index 0ef1af1e54f3..f38d3e1f4cf5 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts @@ -148,11 +148,13 @@ { label: 'b"key"', kind: Consts.CompletionItemKind.Constant, + textEdit: { range: helper.getPositionRange('marker7'), newText: 'b"key"' }, detail: Consts.IndexValueDetail, }, { label: 'b"key2"', kind: Consts.CompletionItemKind.Constant, + textEdit: { range: helper.getPositionRange('marker7'), newText: 'b"key2"' }, detail: Consts.IndexValueDetail, }, ], diff --git a/packages/pyright-internal/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts index b1d353da80c5..f21eae60b211 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts @@ -30,11 +30,13 @@ { label: "'name'", kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: helper.getPositionRange('marker1'), newText: "'name'" }, }, { label: "'age'", kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: helper.getPositionRange('marker1'), newText: "'age'" }, }, ], @@ -44,11 +46,13 @@ { label: '"name"', kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: helper.getPositionRange('marker2'), newText: '"name"' }, }, { label: '"age"', kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: helper.getPositionRange('marker2'), newText: '"age"' }, }, ], @@ -58,6 +62,7 @@ { label: '"age"', kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: helper.getPositionRange('marker3'), newText: '"age"' }, }, ], diff --git a/packages/pyright-internal/src/tests/fourslash/completions.stringLiteral.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/completions.stringLiteral.fourslash.ts index 183a72568727..0d488d48d5d8 100644 --- a/packages/pyright-internal/src/tests/fourslash/completions.stringLiteral.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/completions.stringLiteral.fourslash.ts @@ -38,11 +38,13 @@ { label: '"name"', kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker2Range, newText: '"name"' }, }, { label: '"age"', kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker2Range, newText: '"age"' }, }, ], @@ -66,11 +68,13 @@ { label: '"name"', kind: Consts.CompletionItemKind.Constant, + detail: 'str', textEdit: { range: marker4Range, newText: '"name"' }, }, { label: '"age"', kind: Consts.CompletionItemKind.Constant, + detail: 'int', textEdit: { range: marker4Range, newText: '"age"' }, }, ], diff --git a/packages/pyright-internal/src/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.ts new file mode 100644 index 000000000000..9ed8db4bb571 --- /dev/null +++ b/packages/pyright-internal/src/tests/fourslash/findallreferences.protocolMemberVariable.fourslash.ts @@ -0,0 +1,49 @@ +/// + +// DRIFT-TRIPWIRE ONLY — this test provides NO behavioral regression coverage. It pins the observable +// pyright-internal Find-All-References result at the exact location of a local `documentSymbolCollector` +// divergence (`_getSubclassMemberVariableDeclarations`, called from `_getDeclarationsForNonModuleNameNode`) +// so that an upstream `subrepo.py pull` which conflicts with or regresses the surrounding member-access +// resolution fails loudly in Pyright's own suite. The behaviorally-authoritative coverage for the fix +// lives in the Pylance harness (`protocolMixinMemberVariable.common.ts`). +// +// Why this is only a tripwire, not real coverage: deleting `_getSubclassMemberVariableDeclarations` +// leaves this reference set unchanged. Pyright's own MRO-walk fallback already resolves the unannotated +// `A.self.a` sites to the protocol decl `P.a`, so the FAR result here is identical with the seed-helper +// enabled or disabled (verified by toggling it off). The seed-helper only becomes load-bearing inside +// Pylance, where `ProtocolMemberUsageProvider` narrows the seed to the protocol declaration. +// +// Scenario: `A` fuses a `Protocol` base `P` (declaring `a`) with a coincidental mixin (defining +// `self.a`) and also assigns its own `self.a`. Seeding from the concrete-instance usage `obj.a`, the +// reference set covers the fused slot on `A`: `P.a`, `A.self.a`, and the `obj.a` usage. The coincidental +// `Mixin.self.a` is intentionally NOT reached here — cross-sibling linking is a Pylance-only +// override-provider behavior, not part of this Pyright-core change. + +// @filename: test.py +//// from typing import Protocol +//// +//// class P(Protocol): +//// [|a|]: int +//// +//// class Mixin: +//// def __init__(self): +//// self.a = 2 +//// +//// class A(P, Mixin): +//// def __init__(self): +//// self.[|a|] = 3 +//// +//// obj = A() +//// print(obj.[|/*marker*/a|]) + +{ + const ranges = helper.getRanges(); + + helper.verifyFindAllReferences({ + marker: { + references: ranges.map((r) => { + return { path: r.fileName, range: helper.convertPositionRange(r) }; + }), + }, + }); +} diff --git a/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts index 92e1c80dc769..c848955468a4 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts @@ -55,9 +55,15 @@ helper.verifyHover('markdown', { child_a_method1_docs: '```python\n(method) def method1() -> bool\n```\n---\nA.method1 docs', - child_a_docs: '```python\nclass ChildA()\n```', + // A subclass with no docstring of its own inherits the nearest base class + // docstring (approximating Python's `inspect.getdoc`, excluding builtins). + child_a_docs: '```python\nclass ChildA()\n```\n---\nA docs', + // The constructor (`__init__`) docstring still takes priority over the class + // docstring; `ChildB.__init__` inherits `B init docs`, so the class-docstring + // fallback is not reached here. child_b_docs: '```python\nclass ChildB()\n```\n---\nB init docs', child_b_init_docs: '```python\n(method) def __init__() -> None\n```\n---\nB init docs', - secondDerived_docs: '```python\nclass Derived2()\n```', + // Multi-level inheritance: the nearest base in the MRO with a docstring wins. + secondDerived_docs: '```python\nclass Derived2()\n```\n---\nBase docs', secondDerived_method_docs: '```python\n(method) def method() -> None\n```\n---\nBase.method docs', }); diff --git a/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts index ae7a355fb685..7244f44ad6bf 100644 --- a/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts @@ -36,7 +36,10 @@ helper.verifyHover('markdown', { child_a_method1_docs: '```python\n(method) def method1() -> bool\n```\n---\nA.method1 docs', - child_a_docs: '```python\nclass ChildA()\n```', - child_a_inner_docs: '```python\nclass ChildInner()\n```', + // A subclass with no docstring of its own inherits the nearest base class + // docstring from the stub (approximating Python's `inspect.getdoc`, + // excluding builtins). + child_a_docs: '```python\nclass ChildA()\n```\n---\nA docs', + child_a_inner_docs: '```python\nclass ChildInner()\n```\n---\nA.Inner docs', child_a_inner_method1_docs: '```python\n(method) def method1() -> bool\n```\n---\nA.Inner.method1 docs', }); diff --git a/packages/pyright-internal/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts b/packages/pyright-internal/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts index f082e399c5f2..40203b96c399 100644 --- a/packages/pyright-internal/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +++ b/packages/pyright-internal/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts @@ -23,7 +23,7 @@ { label: '(x: int) -> int', parameters: ['x: int'], - documentation: 'This is a docstring on the first overload.', + documentation: undefined, }, ], activeParameters: [undefined, 0], @@ -41,7 +41,7 @@ { label: '(x: int) -> int', parameters: ['x: int'], - documentation: 'This is a docstring on the first overload.', + documentation: undefined, }, ], activeParameters: [undefined, 0], diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index 9b434a076e49..2016252b66f9 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -194,7 +194,12 @@ export class TestState { const configDirUri = Uri.file(projectRoot, this.serviceProvider); configOptions.initializeTypeCheckingMode('standard'); configOptions.initializeFromJson(this.rawConfigJson, configDirUri, this.serviceProvider, testAccessHost); - configOptions.setupExecutionEnvironments(this.rawConfigJson, configDirUri, this.serviceProvider.console()); + configOptions.setupExecutionEnvironments( + this.rawConfigJson, + configDirUri, + this.serviceProvider.console(), + this.serviceProvider.fs() + ); this._applyTestConfigOptions(configOptions); } diff --git a/packages/pyright-internal/src/tests/hoverProvider.test.ts b/packages/pyright-internal/src/tests/hoverProvider.test.ts index b8e76324d10d..948f19d9699e 100644 --- a/packages/pyright-internal/src/tests/hoverProvider.test.ts +++ b/packages/pyright-internal/src/tests/hoverProvider.test.ts @@ -760,6 +760,52 @@ test('hover on mutually-recursive nested functions does not recurse infinitely', assert.strictEqual(hover, '```python\n(function) def outer() -> (() -> (() -> ...))\n```'); }); +test('hover displays attribute documentation for dataclass converter fields', () => { + const code = ` +// @filename: test.py +//// from typing import Any, Callable, TypeVar, Union, dataclass_transform +//// +//// InputT = TypeVar("InputT") +//// OutputT = TypeVar("OutputT") +//// +//// def field(*, default: Any) -> Any: +//// return default +//// +//// def converted_field(*, converter: Callable[[InputT], OutputT], default: Any) -> Any: +//// del converter +//// return default +//// +//// @dataclass_transform(kw_only_default=True, field_specifiers=(field, converted_field)) +//// class ModelBase: +//// def __init__(self, **values: Any) -> None: +//// self.__dict__.update(values) +//// +//// def to_float(value: Union[float, str]) -> float: +//// return float(value) +//// +//// class Model(ModelBase): +//// plain: float = field(default=0.0) +//// """Plain field documentation.""" +//// +//// converted: float = converted_field(default=0.0, converter=to_float) +//// """Converted field documentation.""" +//// +//// model = Model(converted="1.5") +//// model.[|/*plain*/plain|] +//// model.[|/*converted*/converted|] +`; + + const state = parseAndGetTestState(code).state; + assert.strictEqual( + getHoverText(state, 'plain'), + '```python\n(variable) plain: float\n```\n---\nPlain field documentation.' + ); + assert.strictEqual( + getHoverText(state, 'converted'), + '```python\n(variable) converted: float\n```\n---\nConverted field documentation.' + ); +}); + function getHoverText(state: TestState, markerName: string): string { const marker = state.getMarkerByName(markerName); const position = state.convertOffsetToPosition(marker.fileName, marker.position); diff --git a/packages/pyright-internal/src/tests/importStatementUtils.test.ts b/packages/pyright-internal/src/tests/importStatementUtils.test.ts index d1addc550721..dcd74842ad91 100644 --- a/packages/pyright-internal/src/tests/importStatementUtils.test.ts +++ b/packages/pyright-internal/src/tests/importStatementUtils.test.ts @@ -699,9 +699,11 @@ function testAddition( const marker = state.getMarkerByName(markerName)!; const parseResults = state.program.getBoundSourceFile(marker!.fileUri)!.getParseResults()!; - const importStatement = getTopLevelImports(parseResults.parserOutput.parseTree).orderedImports.find( - (i) => i.moduleName === moduleName - )!; + const importStatement = getTopLevelImports( + parseResults.parserOutput.parseTree, + /* includeImplicitImports */ false, + state.program.analyzerNodeInfoContext + ).orderedImports.find((i) => i.moduleName === moduleName)!; const edits = getTextEditsForAutoImportSymbolAddition(importNameInfo, importStatement, parseResults); const ranges = [...state.getRanges().filter((r) => !!r.marker?.data)]; @@ -719,7 +721,11 @@ function testInsertions( const marker = state.getMarkerByName(markerName)!; const parseResults = state.program.getBoundSourceFile(marker!.fileUri)!.getParseResults()!; - const importStatements = getTopLevelImports(parseResults.parserOutput.parseTree); + const importStatements = getTopLevelImports( + parseResults.parserOutput.parseTree, + /* includeImplicitImports */ false, + state.program.analyzerNodeInfoContext + ); const edits = getTextEditsForAutoImportInsertions( importNameInfo, importStatements, @@ -748,7 +754,11 @@ function applyInsertions( const sourceFile = state.program.getBoundSourceFile(marker.fileUri)!; const parseResults = sourceFile.getParseResults()!; - const importStatements = getTopLevelImports(parseResults.parserOutput.parseTree); + const importStatements = getTopLevelImports( + parseResults.parserOutput.parseTree, + /* includeImplicitImports */ false, + state.program.analyzerNodeInfoContext + ); const edits = getTextEditsForAutoImportInsertions( importNameInfo, importStatements, diff --git a/packages/pyright-internal/src/tests/ipythonMode.test.ts b/packages/pyright-internal/src/tests/ipythonMode.test.ts index 928241b865ad..20d708c4c923 100644 --- a/packages/pyright-internal/src/tests/ipythonMode.test.ts +++ b/packages/pyright-internal/src/tests/ipythonMode.test.ts @@ -561,6 +561,52 @@ test('unused expression is error if within another statement', async () => { verifyAnalysisDiagnosticCount(code, 1, DiagnosticRule.reportUnusedExpression); }); +test('magic as only statement in a suite body is not a parse error', () => { + const code = ` +// @filename: test.py +// @ipythonMode: true +//// def foo(): +//// %cd test[|/*marker*/|] + `; + + verifyAnalysisDiagnosticCount(code, 0); +}); + +test('magic as first line of an if-suite is not a parse error', () => { + const code = ` +// @filename: test.py +// @ipythonMode: true +//// if True: +//// %pip install matplotlib[|/*marker*/|] + `; + + verifyAnalysisDiagnosticCount(code, 0); +}); + +test('magic as first line of a nested suite body is not a parse error', () => { + const code = ` +// @filename: test.py +// @ipythonMode: true +//// def foo(): +//// if True: +//// %cd test[|/*marker*/|] + `; + + verifyAnalysisDiagnosticCount(code, 0); +}); + +test('shell escape as first line of a suite body followed by a statement is not a parse error', () => { + const code = ` +// @filename: test.py +// @ipythonMode: true +//// def foo(): +//// !echo hi +//// pass[|/*marker*/|] + `; + + verifyAnalysisDiagnosticCount(code, 0); +}); + function verifyAnalysisDiagnosticCount(code: string, expectedCount: number, expectedRule?: string) { const state = parseAndGetTestState(code).state; diff --git a/packages/pyright-internal/src/tests/parseTreeUtils.test.ts b/packages/pyright-internal/src/tests/parseTreeUtils.test.ts index 957deca96277..a1315168b771 100644 --- a/packages/pyright-internal/src/tests/parseTreeUtils.test.ts +++ b/packages/pyright-internal/src/tests/parseTreeUtils.test.ts @@ -8,6 +8,7 @@ import assert from 'assert'; +import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { findNodeByOffset, getDottedName, @@ -23,10 +24,19 @@ import { isImportAlias, isImportModuleName, isLastNameOfDottedName, + isWithinTypeAnnotation, + PrintExpressionFlags, printExpression, } from '../analyzer/parseTreeUtils'; import { TextRange, rangesAreEqual } from '../common/textRange'; -import { MemberAccessNode, NameNode, ParseNodeType, StringNode, isExpressionNode } from '../parser/parseNodes'; +import { + getParserStringAnnotation, + MemberAccessNode, + NameNode, + ParseNodeType, + StringNode, + isExpressionNode, +} from '../parser/parseNodes'; import { TestState, getNodeAtMarker, getNodeForRange, parseAndGetTestState } from './harness/fourslash/testState'; test('isImportModuleName', () => { @@ -90,6 +100,41 @@ test('getFirstAncestorOrSelfOfKind', () => { assert(TextRange.getEnd(node) === result.end); }); +test('isWithinTypeAnnotation requires an actual quoted-string association', () => { + const code = ` +//// from typing import TypedDict +//// +//// class Data: +//// pass +//// +//// unquoted: /*unquoted*/Data +//// quoted: "/*quoted*/Data" +//// td: TypedDict[{"/*key*/field": "/*value*/int"}] + `; + + const state = parseAndGetTestState(code).state; + const unquotedNode = getNodeAtMarker(state, 'unquoted'); + assert.strictEqual(unquotedNode.nodeType, ParseNodeType.Name); + assert.strictEqual(isWithinTypeAnnotation(unquotedNode, /* requireQuotedAnnotation */ true), false); + + const quotedStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'quoted'), ParseNodeType.StringList); + assert.ok(quotedStringList); + const quotedAnnotation = getParserStringAnnotation(quotedStringList); + assert.ok(quotedAnnotation); + assert.strictEqual(isWithinTypeAnnotation(quotedAnnotation, /* requireQuotedAnnotation */ true), true); + + const keyStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'key'), ParseNodeType.StringList); + assert.ok(keyStringList); + assert.strictEqual(getParserStringAnnotation(keyStringList), undefined); + assert.strictEqual(isWithinTypeAnnotation(keyStringList, /* requireQuotedAnnotation */ true), false); + + const valueStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'value'), ParseNodeType.StringList); + assert.ok(valueStringList); + const valueAnnotation = getParserStringAnnotation(valueStringList); + assert.ok(valueAnnotation); + assert.strictEqual(isWithinTypeAnnotation(valueAnnotation, /* requireQuotedAnnotation */ true), true); +}); + test('getDottedNameWithGivenNodeAsLastName', () => { const code = ` //// [|/*result1*/[|/*marker1*/a|]|] @@ -319,6 +364,33 @@ test('printExpression', () => { } }); +test('printExpression forward declarations use parser annotations but not owner annotations', () => { + const code = ` +//// from typing import cast +//// +//// class Data: +//// pass +//// +//// parser_tier: "/*parser*/list[Data]" +//// owner_tier = cast("/*owner*/Data", object()) + `; + const state = parseAndGetTestState(code).state; + while (state.program.analyze()) { + // Continue until analysis completes and the cast annotation is parsed lazily. + } + + const parserStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'parser'), ParseNodeType.StringList); + assert.ok(parserStringList); + assert.ok(getParserStringAnnotation(parserStringList)); + assert.strictEqual(printExpression(parserStringList, PrintExpressionFlags.ForwardDeclarations), 'list[Data]'); + + const ownerStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'owner'), ParseNodeType.StringList); + assert.ok(ownerStringList); + assert.strictEqual(getParserStringAnnotation(ownerStringList), undefined); + assert.ok(AnalyzerNodeInfo.getStringAnnotation(ownerStringList, state.program.analyzerNodeInfoContext)); + assert.strictEqual(printExpression(ownerStringList, PrintExpressionFlags.ForwardDeclarations), '"Data"'); +}); + test('findNodeByOffset', () => { const code = ` //// class A: diff --git a/packages/pyright-internal/src/tests/parser.test.ts b/packages/pyright-internal/src/tests/parser.test.ts index 26d8e9dea14e..52af13ec9446 100644 --- a/packages/pyright-internal/src/tests/parser.test.ts +++ b/packages/pyright-internal/src/tests/parser.test.ts @@ -18,7 +18,12 @@ import { pythonVersion3_13, pythonVersion3_14, pythonVersion3_15 } from '../comm import { TextRange } from '../common/textRange'; import { UriEx } from '../common/uri/uriUtils'; import { LocMessage } from '../localization/localize'; -import { ParseNodeType, StatementListNode } from '../parser/parseNodes'; +import { + getParserStringAnnotation, + getParserStringAnnotationInfo, + ParseNodeType, + StatementListNode, +} from '../parser/parseNodes'; import { ParseOptions } from '../parser/parser'; import { getNodeAtMarker, parseAndGetTestState } from './harness/fourslash/testState'; import * as TestUtils from './testUtils'; @@ -115,7 +120,7 @@ test('Inline TypedDict dict key is not a forward-reference annotation', () => { // An inline TypedDict field-name key must not be parsed into a // forward-reference expression even though the dictionary appears inside a type // annotation. Suspending type-annotation parsing for the key leaves its StringList - // without a synthesized `annotation` expression, while the value remains a type + // without a parser-derived annotation association, while the value remains a type // annotation and must still parse its forward reference. const code = ` //// from typing import TypedDict @@ -127,7 +132,7 @@ test('Inline TypedDict dict key is not a forward-reference annotation', () => { const keyStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'key'), ParseNodeType.StringList); assert.ok(keyStringList, 'Expected the dict key to be a StringList node'); assert.strictEqual( - keyStringList.d.annotation, + getParserStringAnnotation(keyStringList), undefined, 'Inline TypedDict key string must not be parsed into a forward-reference annotation' ); @@ -135,11 +140,63 @@ test('Inline TypedDict dict key is not a forward-reference annotation', () => { const valueStringList = getFirstAncestorOrSelfOfKind(getNodeAtMarker(state, 'value'), ParseNodeType.StringList); assert.ok(valueStringList, 'Expected the dict value to be a StringList node'); assert.ok( - valueStringList.d.annotation, + getParserStringAnnotation(valueStringList), 'Inline TypedDict value string is a type annotation and must still parse its forward reference' ); }); +test('Parser string-annotation side data preserves recursive associations and structural ownership', () => { + const source = `value: "list['Data']"\n`; + const parserOutput = TestUtils.parseText(source, new DiagnosticSink()).parserOutput; + const outerNode = findNodeByOffset(parserOutput.parseTree, source.indexOf('list')); + const outerStringList = getFirstAncestorOrSelfOfKind(outerNode, ParseNodeType.StringList); + assert.ok(outerStringList); + + const outerAnnotation = parserOutput.stringAnnotations.get(outerStringList); + assert.ok(outerAnnotation); + const nestedNode = findNodeByOffset(outerAnnotation, source.indexOf('Data')); + const nestedStringList = getFirstAncestorOrSelfOfKind(nestedNode, ParseNodeType.StringList); + assert.ok(nestedStringList); + + const nestedAnnotation = parserOutput.stringAnnotations.get(nestedStringList); + assert.ok(nestedAnnotation); + assert.strictEqual(nestedAnnotation.nodeType, ParseNodeType.Name); + if (nestedAnnotation.nodeType !== ParseNodeType.Name) { + throw new Error('Expected the nested quoted annotation to parse as a name'); + } + + assert.strictEqual(nestedAnnotation.d.value, 'Data'); + assert.strictEqual(outerAnnotation.parent, outerStringList); + assert.strictEqual(nestedAnnotation.parent, nestedStringList); + assert.strictEqual(outerStringList.a, parserOutput.parseTree.a); + assert.strictEqual(nestedStringList.a, parserOutput.parseTree.a); + assert.strictEqual(parserOutput.stringAnnotations, getParserStringAnnotationInfo(parserOutput.parseTree)); + assert.deepStrictEqual(Object.keys(outerStringList.d), ['strings', 'hasParens']); +}); + +test('Parser string-annotation side data excludes unsupported and non-annotation strings', () => { + const cases = [ + { source: `value = "Ordinary"\n`, needle: 'Ordinary', expected: false }, + { source: `value: "Esc\\x61ped"\n`, needle: 'Esc', expected: false }, + { source: `value: r"Raw"\n`, needle: 'Raw', expected: false }, + { source: `value: b"Bytes"\n`, needle: 'Bytes', expected: false }, + { source: `value: f"Formatted"\n`, needle: 'Formatted', expected: false }, + { source: `value: "Positive"\n`, needle: 'Positive', expected: true }, + ]; + + for (const testCase of cases) { + const parserOutput = TestUtils.parseText(testCase.source, new DiagnosticSink()).parserOutput; + const node = findNodeByOffset(parserOutput.parseTree, testCase.source.indexOf(testCase.needle)); + const stringList = getFirstAncestorOrSelfOfKind(node, ParseNodeType.StringList); + assert.ok(stringList, `Expected a StringList for ${testCase.source.trim()}`); + assert.strictEqual( + parserOutput.stringAnnotations.get(stringList) !== undefined, + testCase.expected, + testCase.source.trim() + ); + } +}); + test('ParserRecovery1', () => { const diagSink = new DiagnosticSink(); const parseResults = TestUtils.parseSampleFile('parserRecovery1.py', diagSink); diff --git a/packages/pyright-internal/src/tests/positionUtils.test.ts b/packages/pyright-internal/src/tests/positionUtils.test.ts index 924c11d56eca..2c9e841ccf26 100644 --- a/packages/pyright-internal/src/tests/positionUtils.test.ts +++ b/packages/pyright-internal/src/tests/positionUtils.test.ts @@ -103,6 +103,37 @@ test('convertOffsetsToRange handles an empty file', () => { }); }); +test('convertOffsetToPosition is order-independent (getItemContaining memo)', () => { + // getItemContaining memoizes its last hit, so converting the same offsets in a + // different order (against the same reused lines collection) must not change the + // result. Compare a warm collection against a memo-free reference for every offset. + const code = ['def foo(bar):', ' baz = bar', '', 'class C:\r', ' x = 1\r', 'last = 2'].join('\n'); + const lines = new Tokenizer().tokenize(code).lines; + + const forward: number[] = []; + for (let offset = 0; offset <= code.length; offset++) { + forward.push(offset); + } + + // Reference computed on a single forward pass over a separate collection. + const referenceLines = new Tokenizer().tokenize(code).lines; + const reference = new Map>(); + for (const offset of forward) { + reference.set(offset, convertOffsetToPosition(offset, referenceLines)); + } + + const orders = [forward, [...forward].reverse(), [4, 0, code.length, 20, 4, 20, 0, code.length, 12, 12]]; + for (const order of orders) { + for (const offset of order) { + assert.deepStrictEqual( + convertOffsetToPosition(offset, lines), + reference.get(offset), + `offset ${offset} differs after memo warm-up` + ); + } + } +}); + function verifyLineEnding(code: string, line: number, expected: number) { const parser = new Parser(); const parseResults = parser.parseSourceFile(code, new ParseOptions(), new DiagnosticSink()); diff --git a/packages/pyright-internal/src/tests/pyrightFileSystem.test.ts b/packages/pyright-internal/src/tests/pyrightFileSystem.test.ts index 662a1b64e148..edee95cd6f65 100644 --- a/packages/pyright-internal/src/tests/pyrightFileSystem.test.ts +++ b/packages/pyright-internal/src/tests/pyrightFileSystem.test.ts @@ -6,9 +6,11 @@ import assert from 'assert'; +import { FileSystem } from '../common/fileSystem'; import { lib, sitePackages } from '../common/pathConsts'; import { combinePaths, getDirectoryPath, normalizeSlashes } from '../common/pathUtils'; import { PyrightFileSystem } from '../pyrightFileSystem'; +import { ReadOnlyAugmentedFileSystem } from '../readonlyAugmentedFileSystem'; import { TestFileSystem } from './harness/vfs/filesystem'; import { Uri } from '../common/uri/uri'; import { UriEx } from '../common/uri/uriUtils'; @@ -17,6 +19,54 @@ import { PartialStubService } from '../partialStubService'; const libraryRoot = combinePaths(normalizeSlashes('/'), lib, sitePackages); const libraryRootUri = UriEx.file(libraryRoot); +test('read-only augmented file system preserves prohibited operations', () => { + const realFs = new TestFileSystem(/* ignoreCase */ false, { cwd: normalizeSlashes('/') }); + const fs = new ReadOnlyAugmentedFileSystem(realFs); + const source = UriEx.file(normalizeSlashes('/source')); + const destination = UriEx.file(normalizeSlashes('/destination')); + const operations = [ + () => fs.mkdirSync(source), + () => fs.chdir(source), + () => fs.writeFileSync(source, 'content', 'utf8'), + () => fs.rmdirSync(source), + () => fs.unlinkSync(source), + () => fs.createWriteStream(source), + () => fs.copyFileSync(source, destination), + ]; + + for (const operation of operations) { + assert.throws(operation, /^Error: Operation is not allowed\.$/); + } +}); + +test('read-only augmented file system mapping filter receives its exact backing file system', () => { + const originalRoot = UriEx.file(normalizeSlashes('/original')); + const mappedRoot = UriEx.file(normalizeSlashes('/mapped')); + const originalFile = originalRoot.combinePaths('file.py'); + const mappedFile = mappedRoot.combinePaths('file.py'); + const realFs = new TestFileSystem(/* ignoreCase */ false, { + cwd: normalizeSlashes('/'), + files: { [originalFile.getFilePath()]: 'content' }, + }); + const fs = new ReadOnlyAugmentedFileSystem(realFs); + let observedFileSystem: FileSystem | undefined; + fs.mapDirectory(mappedRoot, originalRoot, (_uri, fileSystem) => { + observedFileSystem = fileSystem; + return true; + }); + + assert.strictEqual(fs.readFileSync(mappedFile, 'utf8'), 'content'); + assert.strictEqual(observedFileSystem, realFs); +}); + +test('read-only augmented file system exposes no reset surface', () => { + const fs = new ReadOnlyAugmentedFileSystem( + new TestFileSystem(/* ignoreCase */ false, { cwd: normalizeSlashes('/') }) + ); + + assert.strictEqual('clear' in fs, false); +}); + test('virtual file exists', () => { const files = [ { diff --git a/packages/pyright-internal/src/tests/samples/callSite4.py b/packages/pyright-internal/src/tests/samples/callSite4.py new file mode 100644 index 000000000000..0815388cb113 --- /dev/null +++ b/packages/pyright-internal/src/tests/samples/callSite4.py @@ -0,0 +1,130 @@ +# This sample tests that call-site return type inference is not suppressed +# when an unannotated factory performs isinstance narrowing on a +# parameter-derived local. + + +class Geometry: + def geo_method(self) -> None: ... + + +class Document: + def newfolder(self) -> None: ... + + def newschema(self) -> None: ... + + +class Container: + def _newfeature(self, cls, **kwargs): + feat = cls(**kwargs) + # The isinstance narrowing below must not suppress call-site + # return type inference for callers that pass a concrete class. + if isinstance(feat, Geometry): + pass + return feat + + def newdocument(self, **kwargs): + return self._newfeature(Document, **kwargs) + + +kml = Container() + +# Direct call to the factory with a concrete class argument. The isinstance +# narrowing in the body must not suppress call-site return type inference, so +# the concrete Document arm (and thus its members) is preserved. +direct = kml._newfeature(Document) +reveal_type(direct, expected_text=" | Document") + +# Nested factory call (newdocument -> _newfeature) forwarding **kwargs. +doc = kml.newdocument() +reveal_type(doc, expected_text=" | Document") + +# Document-only members are available on both arms of the union. +doc.newfolder() +doc.newschema() + + +# --- Guard coverage: the call-site fall-through must be narrowly scoped. --- + + +class Factory: + # Declared (annotated) return type that is itself partly unknown + # (`list` == `list[Unknown]`). Even though the params are unannotated and a + # call site is available, the declared return type must be preserved -- the + # fall-through to call-site body inference must NOT replace it. + def make(self, cls, **kwargs) -> list: + return [cls(**kwargs)] + + # Unannotated function with a fully-known body. It has no cached partly-unknown + # specialized return, so ordinary (pre-existing) call-site inference applies and + # the fall-through gate is not the deciding factor -- included as a regression + # anchor that the fall-through does not break simple factories. + def constant(self, cls, **kwargs): + return 42 + + +factory = Factory() + +# Guard: a declared (partly-unknown) return type is preserved, not re-inferred. +# If the `!declaredReturnType` conjunct were dropped, this would become "list[int]". +declared = factory.make(int) +reveal_type(declared, expected_text="list[Unknown]") + +# Regression anchor: a simple unannotated factory still resolves at the call site. +known = factory.constant(int) +reveal_type(known, expected_text="Literal[42]") + +# Guard: when the argument is not a concrete class, call-site inference cannot +# improve the result, so a partly-unknown union is preserved (no regression / crash). +cls_var: type = Document +weird = kml._newfeature(cls_var) +reveal_type(weird, expected_text="Geometry | Any") + + +# --- Regression: recursive isinstance-narrowing factories must not drop the +# call-site inferred type. Call-site refinement of a recursive factory comes back +# incomplete during the recursion; the cached specialized return type must be used +# as a fallback so caller-side `reveal_type` still resolves (rather than being +# silently suppressed because the type result is incomplete). --- + + +class Node: + def child(self) -> None: ... + + +class Rec: + # Self-recursive factory with a base case that returns the isinstance-narrowed + # local. + def build(self, cls, depth): + feat = cls() + if isinstance(feat, Geometry): + pass + if depth > 0: + return self.build(cls, depth - 1) + return feat + + +a = Rec().build(Node, 5) +reveal_type(a, expected_text="Unknown | Geometry") + + +class PingPong: + # Mutually-recursive factory pair. + def ping(self, cls, depth): + feat = cls() + if isinstance(feat, Geometry): + pass + if depth > 0: + return self.pong(cls, depth - 1) + return feat + + def pong(self, cls, depth): + feat = cls() + if isinstance(feat, Geometry): + pass + if depth > 0: + return self.ping(cls, depth - 1) + return feat + + +b = PingPong().ping(Node, 5) +reveal_type(b, expected_text="Unknown | Geometry | | Node") diff --git a/packages/pyright-internal/src/tests/service.test.ts b/packages/pyright-internal/src/tests/service.test.ts index 521babce6f2b..0d35166933a3 100644 --- a/packages/pyright-internal/src/tests/service.test.ts +++ b/packages/pyright-internal/src/tests/service.test.ts @@ -66,6 +66,143 @@ test('source enumeration reports symlinked include roots', () => { ); }); +test('source enumeration reports discovered config files', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + fs.mkdirpSync('/projectRoot/pkgA'); + fs.mkdirpSync('/projectRoot/pkgB'); + fs.mkdirpSync('/projectRoot/pkgC'); + fs.writeFileSync(Uri.file('/projectRoot/pyrightconfig.json', fs), '{}'); + fs.writeFileSync(Uri.file('/projectRoot/pkgA/pyrightconfig.json', fs), '{}'); + fs.writeFileSync(Uri.file('/projectRoot/pkgB/pyproject.toml', fs), '[tool.pyright]\n'); + fs.writeFileSync(Uri.file('/projectRoot/pkgC/module.py', fs), 'x = 1'); + + const enumerator = new SourceEnumerator( + [getFileSpec(Uri.file('/', fs), 'projectRoot')], + [], + /* autoExcludeVenv */ false, + fs, + new NullConsole() + ); + + const result = enumerator.enumerate(/* timeLimitInMs */ 1000); + + assert.strictEqual(result.isComplete, true); + assert.deepStrictEqual( + enumerator + .getDiscoveredConfigFiles() + .map((uri) => uri.key) + .sort(), + [ + Uri.file('/projectRoot/pkgA/pyrightconfig.json', fs).key, + Uri.file('/projectRoot/pkgB/pyproject.toml', fs).key, + Uri.file('/projectRoot/pyrightconfig.json', fs).key, + ].sort() + ); +}); + +test('source enumeration skips config files inside auto-excluded virtual environments', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + fs.mkdirpSync('/projectRoot/env'); + fs.writeFileSync(Uri.file('/projectRoot/pyrightconfig.json', fs), '{}'); + // `env` is marked as a virtual environment; with autoExcludeVenv it must not be scanned. + fs.writeFileSync(Uri.file('/projectRoot/env/pyvenv.cfg', fs), ''); + fs.writeFileSync(Uri.file('/projectRoot/env/pyrightconfig.json', fs), '{}'); + + const enumerator = new SourceEnumerator( + [getFileSpec(Uri.file('/', fs), 'projectRoot')], + [], + /* autoExcludeVenv */ true, + fs, + new NullConsole() + ); + + const result = enumerator.enumerate(/* timeLimitInMs */ 1000); + + assert.strictEqual(result.isComplete, true); + assert.deepStrictEqual( + enumerator.getDiscoveredConfigFiles().map((uri) => uri.key), + [Uri.file('/projectRoot/pyrightconfig.json', fs).key] + ); +}); + +test('explicit include does not rescue a directory detected as a virtual environment', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + fs.mkdirpSync('/projectRoot/env'); + fs.writeFileSync(Uri.file('/projectRoot/module.py', fs), 'x = 1'); + // `env` looks like a virtual environment. Even though the user explicitly includes it, the + // default virtual-environment exclusion takes precedence over `include` (default excludes trump + // includes, just like any other exclude), so it stays excluded. + fs.writeFileSync(Uri.file('/projectRoot/env/pyvenv.cfg', fs), ''); + fs.writeFileSync(Uri.file('/projectRoot/env/module.py', fs), 'y = 1'); + + const enumerator = new SourceEnumerator( + [getFileSpec(Uri.file('/', fs), 'projectRoot'), getFileSpec(Uri.file('/', fs), 'projectRoot/env')], + [], + /* autoExcludeVenv */ true, + fs, + new NullConsole() + ); + + const result = enumerator.enumerate(/* timeLimitInMs */ 1000); + + assert.strictEqual(result.isComplete, true); + // The venv source file is not matched and the directory is reported as auto-excluded. + assert.ok(!result.matches.has(Uri.file('/projectRoot/env/module.py', fs).key)); + assert.deepStrictEqual( + [...new Set(result.autoExcludedDirs.map((uri) => uri.key))], + [Uri.file('/projectRoot/env', fs).key] + ); +}); + +test('source enumeration skips config files under excluded directories', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + fs.mkdirpSync('/projectRoot/build'); + fs.writeFileSync(Uri.file('/projectRoot/pyrightconfig.json', fs), '{}'); + fs.writeFileSync(Uri.file('/projectRoot/build/pyrightconfig.json', fs), '{}'); + + const enumerator = new SourceEnumerator( + [getFileSpec(Uri.file('/', fs), 'projectRoot')], + [getFileSpec(Uri.file('/projectRoot', fs), 'build')], + /* autoExcludeVenv */ false, + fs, + new NullConsole() + ); + + const result = enumerator.enumerate(/* timeLimitInMs */ 1000); + + assert.strictEqual(result.isComplete, true); + assert.deepStrictEqual( + enumerator.getDiscoveredConfigFiles().map((uri) => uri.key), + [Uri.file('/projectRoot/pyrightconfig.json', fs).key] + ); +}); + +test('source enumeration skips config files matching an exclude file spec', () => { + const fs = new TestFileSystem(/* ignoreCase */ false, { cwd: '/' }); + fs.mkdirpSync('/projectRoot/pkgA'); + fs.writeFileSync(Uri.file('/projectRoot/pyrightconfig.json', fs), '{}'); + // pkgA is not an excluded directory (it is still scanned for sources), but its config + // file is explicitly excluded, so it must not be surfaced as a discovered config root. + fs.writeFileSync(Uri.file('/projectRoot/pkgA/pyrightconfig.json', fs), '{}'); + fs.writeFileSync(Uri.file('/projectRoot/pkgA/module.py', fs), 'x = 1'); + + const enumerator = new SourceEnumerator( + [getFileSpec(Uri.file('/', fs), 'projectRoot')], + [getFileSpec(Uri.file('/projectRoot', fs), 'pkgA/pyrightconfig.json')], + /* autoExcludeVenv */ false, + fs, + new NullConsole() + ); + + const result = enumerator.enumerate(/* timeLimitInMs */ 1000); + + assert.strictEqual(result.isComplete, true); + assert.deepStrictEqual( + enumerator.getDiscoveredConfigFiles().map((uri) => uri.key), + [Uri.file('/projectRoot/pyrightconfig.json', fs).key] + ); +}); + test('random library file changed, nested search paths', () => { const state = parseAndGetTestState('', '/projectRoot').state; diff --git a/packages/pyright-internal/src/tests/sourceEnumeratorSymlink.test.ts b/packages/pyright-internal/src/tests/sourceEnumeratorSymlink.test.ts new file mode 100644 index 000000000000..a11d13b827bc --- /dev/null +++ b/packages/pyright-internal/src/tests/sourceEnumeratorSymlink.test.ts @@ -0,0 +1,238 @@ +/* + * sourceEnumeratorSymlink.test.ts + * Copyright (c) Microsoft Corporation. + * + * Regression tests for SourceEnumerator symlink handling. + * + * A symlink that resolves outside every include root (e.g. a link to filesystem + * root "/" or "C:\") is not a recursive cycle, so the `_seenDirs` guard does not + * catch it. Before the fix, following such a link would enumerate directories + * that don't belong to the workspace -- in the worst case the entire disk -- + * which made Pylance hang. + * + * Issue: https://github.com/microsoft/pylance-release/issues/6006 + * + * Note: source enumeration is a sync-only code path, so there is no async + * counterpart to mirror here. + */ + +import type { Dirent } from 'fs'; + +import { SourceEnumerator } from '../analyzer/sourceEnumerator'; +import { NullConsole } from '../common/console'; +import { FileSystem, Stats } from '../common/fileSystem'; +import { Uri } from '../common/uri/uri'; +import { FileSpec, getFileSpec } from '../common/uri/uriUtils'; +import { TestCaseSensitivityDetector } from './harness/testHost'; + +const caseSensitivityDetector = new TestCaseSensitivityDetector(); + +function makeUri(path: string): Uri { + return Uri.file(path, caseSensitivityDetector); +} + +type FsNode = { type: 'dir'; children: string[] } | { type: 'file' }; + +// Minimal in-memory filesystem that models directories, files, and symlinks +// well enough to drive SourceEnumerator. Paths use POSIX-style separators; all +// comparisons go through Uri so the model works on both Windows and POSIX hosts. +class MockFs { + // Real (symlink-resolved) nodes keyed by uri.key. + private readonly _nodes = new Map(); + // Symlink source uri.key -> target uri. + private readonly _symlinks = new Map(); + // Guards against runaway enumeration so a regression can't hang the suite. + private _readCount = 0; + + addDir(path: string, children: string[]): void { + this._nodes.set(makeUri(path).key, { type: 'dir', children }); + } + + addFile(path: string): void { + this._nodes.set(makeUri(path).key, { type: 'file' }); + } + + addSymlink(path: string, target: string): void { + this._symlinks.set(makeUri(path).key, makeUri(target)); + } + + realpath(uri: Uri): Uri { + const target = this._symlinks.get(uri.key); + if (target) { + return this.realpath(target); + } + + const parent = uri.getDirectory(); + if (parent.key === uri.key) { + return uri; + } + + const realParent = this.realpath(parent); + if (realParent.key === parent.key) { + return uri; + } + return this.realpath(realParent.combinePaths(uri.fileName)); + } + + asFileSystem(): FileSystem { + const self = this; + const fs: Partial = { + realpathSync(uri: Uri): Uri { + const real = self.realpath(uri); + if (!self._nodes.has(real.key)) { + throw new Error(`ENOENT: ${uri.toString()}`); + } + return real; + }, + existsSync(uri: Uri): boolean { + return self._nodes.has(self.realpath(uri).key); + }, + statSync(uri: Uri): Stats { + const node = self._nodes.get(self.realpath(uri).key); + if (!node) { + throw new Error(`ENOENT: ${uri.toString()}`); + } + return self._makeStats(node.type); + }, + readdirEntriesSync(uri: Uri): Dirent[] { + if (++self._readCount > 10000) { + throw new Error('Runaway enumeration: too many readdir calls'); + } + const node = self._nodes.get(self.realpath(uri).key); + if (!node || node.type !== 'dir') { + throw new Error(`ENOTDIR: ${uri.toString()}`); + } + return node.children.map((name) => self._makeDirent(uri, name)); + }, + }; + return fs as FileSystem; + } + + private _makeDirent(dirUri: Uri, name: string): Dirent { + const requestedChild = dirUri.combinePaths(name); + const isLink = this._symlinks.has(requestedChild.key); + const realNode = this._nodes.get(this.realpath(requestedChild).key); + const isDir = !isLink && realNode?.type === 'dir'; + const isFile = !isLink && realNode?.type === 'file'; + return { + name, + isFile: () => isFile, + isDirectory: () => isDir, + isSymbolicLink: () => isLink, + isBlockDevice: () => false, + isCharacterDevice: () => false, + isFIFO: () => false, + isSocket: () => false, + } as unknown as Dirent; + } + + private _makeStats(type: 'dir' | 'file'): Stats { + return { + size: 0, + mtimeMs: 0, + ctimeMs: 0, + isFile: () => type === 'file', + isDirectory: () => type === 'dir', + isBlockDevice: () => false, + isCharacterDevice: () => false, + isSymbolicLink: () => false, + isFIFO: () => false, + isSocket: () => false, + }; + } +} + +function enumerate(includeRoots: string[], mock: MockFs): Set { + const includes: FileSpec[] = includeRoots.map((root) => getFileSpec(makeUri(root), '**')); + const enumerator = new SourceEnumerator( + includes, + /* excludes */ [], + /* autoExcludeVenv */ false, + mock.asFileSystem(), + new NullConsole() + ); + const result = enumerator.enumerate(/* timeLimitInMs */ 0); + expect(result.isComplete).toBe(true); + return new Set(Array.from(result.matches.values()).map((u) => u.key)); +} + +test('symlink to filesystem root is not followed', () => { + const mock = new MockFs(); + mock.addDir('/workspace', ['app.py', 'link']); + mock.addFile('/workspace/app.py'); + mock.addSymlink('/workspace/link', '/'); + + // The filesystem root contains python files that must NOT be enumerated. + mock.addDir('/', ['secret.py', 'etc']); + mock.addFile('/secret.py'); + mock.addDir('/etc', ['deep.py']); + mock.addFile('/etc/deep.py'); + + const matches = enumerate(['/workspace'], mock); + + expect(matches.has(makeUri('/workspace/app.py').key)).toBe(true); + // Files under the symlink are recorded with the symlink path prefix. Without + // the containment guard the whole filesystem-root subtree would be pulled in. + expect(matches.has(makeUri('/workspace/link/secret.py').key)).toBe(false); + expect(matches.has(makeUri('/workspace/link/etc/deep.py').key)).toBe(false); +}); + +test('symlink to a sibling directory outside the workspace is skipped', () => { + const mock = new MockFs(); + mock.addDir('/workspace', ['app.py', 'esc']); + mock.addFile('/workspace/app.py'); + mock.addSymlink('/workspace/esc', '/other'); + + mock.addDir('/other', ['x.py']); + mock.addFile('/other/x.py'); + + const matches = enumerate(['/workspace'], mock); + + expect(matches.has(makeUri('/workspace/app.py').key)).toBe(true); + // Recorded under the symlink path prefix; must not be pulled in. + expect(matches.has(makeUri('/workspace/esc/x.py').key)).toBe(false); +}); + +test('symlink within the workspace is followed', () => { + const mock = new MockFs(); + mock.addDir('/workspace', ['sub', 'real']); + mock.addSymlink('/workspace/sub', '/workspace/real'); + mock.addDir('/workspace/real', ['real.py']); + mock.addFile('/workspace/real/real.py'); + + const matches = enumerate(['/workspace'], mock); + + // The real file must be discovered (via the real dir and/or the symlink; the + // recursive-cycle guard means only one of the two paths is recorded). + const viaReal = matches.has(makeUri('/workspace/real/real.py').key); + const viaLink = matches.has(makeUri('/workspace/sub/real.py').key); + expect(viaReal || viaLink).toBe(true); +}); + +test('symlink to a sibling include root is followed (multi-root)', () => { + const mock = new MockFs(); + mock.addDir('/root1', ['link']); + mock.addSymlink('/root1/link', '/root2/pkg'); + mock.addDir('/root2', ['pkg']); + mock.addDir('/root2/pkg', ['c.py']); + mock.addFile('/root2/pkg/c.py'); + + const matches = enumerate(['/root1', '/root2'], mock); + + // The symlink resolves under the second include root, so it must be followed + // (recorded under the /root1/link symlink prefix). + expect(matches.has(makeUri('/root1/link/c.py').key)).toBe(true); +}); + +test('symlink back to the include root itself does not crash and stays bounded', () => { + const mock = new MockFs(); + mock.addDir('/workspace', ['app.py', 'self']); + mock.addFile('/workspace/app.py'); + // A link to the include root resolves to the root (startsWith equality) and is + // then caught by the recursive-cycle guard rather than the containment guard. + mock.addSymlink('/workspace/self', '/workspace'); + + const matches = enumerate(['/workspace'], mock); + + expect(matches.has(makeUri('/workspace/app.py').key)).toBe(true); +}); diff --git a/packages/pyright-internal/src/tests/stringUtils.test.ts b/packages/pyright-internal/src/tests/stringUtils.test.ts index 0d2604e5cb1c..4dc7ab63ed1d 100644 --- a/packages/pyright-internal/src/tests/stringUtils.test.ts +++ b/packages/pyright-internal/src/tests/stringUtils.test.ts @@ -24,6 +24,83 @@ test('stringUtils isPatternInSymbol', () => { assert.equal(utils.isPatternInSymbol('azcde', 'abcd'), false); assert.equal(utils.isPatternInSymbol('acde', 'abcd'), false); assert.equal(utils.isPatternInSymbol('zbcd', 'abcd'), false); + + // A typed value longer than the symbol can never match (the loop exhausts the + // symbol before consuming all typed characters). + assert.equal(utils.isPatternInSymbol('abcd', 'abc'), false); +}); + +test('stringUtils isPatternInSymbol unicode/locale parity', () => { + // The fast path folds case for the Latin-1 range; verify it still matches the + // locale-aware original behavior for accented Latin-1 letters. + assert.equal(utils.isPatternInSymbol('café', 'CAFÉ'), true); + assert.equal(utils.isPatternInSymbol('é', 'CAFÉ'), true); + assert.equal(utils.isPatternInSymbol('É', 'e'), false); + + // Characters whose toLocaleLowerCase() changes length must go through the + // full-string fallback. Turkish dotted capital I (U+0130) lower-cases to two + // code units ("i" + combining dot), so these must match the original exactly. + assert.equal(utils.isPatternInSymbol('İ', 'I'), false); + assert.equal(utils.isPatternInSymbol('İ', 'i'), false); + assert.equal(utils.isPatternInSymbol('istanbul', 'İstanbul'), true); + + // A typed value that is longer in code units than the symbol can still match + // once both are lower-cased, because İ (U+0130) lower-cases to two code units + // ("i" + U+0307 combining dot). Typing that exact 2-unit sequence must match a + // symbol of "İ". This is the case a raw pre-lowercase length check would break. + assert.equal(utils.isPatternInSymbol('i\u0307', 'İ'), true); + assert.equal(utils.isPatternInSymbol('i\u0307', 'i'), false); + + // Directly assert parity with the original toLocaleLowerCase-based algorithm + // over a spread of tricky inputs (ASCII, Latin-1, ligatures, ß, non-Latin-1), + // so any future edit that breaks exact behavior is caught here. + const reference = (typedValue: string, symbolName: string): boolean => { + const typedLower = typedValue.toLocaleLowerCase(); + const symbolLower = symbolName.toLocaleLowerCase(); + let typedPos = 0; + let symbolPos = 0; + while (typedPos < typedLower.length && symbolPos < symbolLower.length) { + if (typedLower[typedPos] === symbolLower[symbolPos]) { + typedPos += 1; + } + symbolPos += 1; + } + return typedPos === typedLower.length; + }; + + const tokens = [ + '', + 'a', + 'A', + 'abc', + 'ABC', + 'aXbYc', + 'café', + 'CAFÉ', + 'É', + 'straße', + 'STRASSE', + 'İ', + 'I', + 'i', + 'ı', + 'i\u0307', + 'İstanbul', + 'istanbul', + 'file', + 'file', + 'µm', + 'MM', + ]; + for (const typed of tokens) { + for (const symbol of tokens) { + assert.equal( + utils.isPatternInSymbol(typed, symbol), + reference(typed, symbol), + `mismatch for typed=${JSON.stringify(typed)} symbol=${JSON.stringify(symbol)}` + ); + } + } }); test('CoreCompareStringsCaseInsensitive1', () => { diff --git a/packages/pyright-internal/src/tests/symlinkAliasInvalidation.test.ts b/packages/pyright-internal/src/tests/symlinkAliasInvalidation.test.ts new file mode 100644 index 000000000000..042e30215b90 --- /dev/null +++ b/packages/pyright-internal/src/tests/symlinkAliasInvalidation.test.ts @@ -0,0 +1,590 @@ +/* + * symlinkAliasInvalidation.test.ts + * + * Regression tests for stale diagnostics across filesystem symlink aliases. + * + * A filesystem symlink and its target are tracked as two independent + * SourceFileInfo entries (the source-file map is keyed by uri.key, with no + * realpath/inode dedup). When a change is routed to one alias (e.g. the fs + * watcher fires for the real target path after an editor save/undo), the other + * alias — and any consumer that imported *that* alias — must also be + * invalidated. Invalidation recurses only through `importedBy`, so without an + * explicit realpath-twin bridge the consumer is never re-checked, its + * diagnostics are never recomputed, and a stale diagnostic persists until the + * file is manually edited. + * + * The twin must be invalidated at the CONTENT level (markDirty -> re-parse from + * disk), not merely re-check-required: otherwise it keeps its cached symbol + * table and the consumer re-resolves against stale symbols. + */ + +import assert from 'assert'; + +import { DiagnosticCategory } from '../common/diagnostic'; +import { Uri } from '../common/uri/uri'; +import { parseAndGetTestState, TestState } from './harness/fourslash/testState'; + +// Consumer imports the symbol from the SYMLINK twin; a change routed to the real +// target must still re-check it. +const consumerOfTwin = ` +// @filename: linked/__init__.py +//// # package marker + +// @filename: linked/shared.py +//// class SharedType: +//// pass + +// @filename: consumer.py +//// from linked.shared_link import SharedType +//// x = SharedType() +`; + +// Consumer imports the symbol from the REAL target; a change routed to the +// symlink twin must still re-check it (reverse direction). +const consumerOfTarget = ` +// @filename: linked/__init__.py +//// # package marker + +// @filename: linked/shared.py +//// class SharedType: +//// pass + +// @filename: consumer.py +//// from linked.shared import SharedType +//// x = SharedType() +`; + +const removedTargetContent = 'class RenamedType:\n pass\n'; + +test('symlink twin invalidation clears stale diagnostics on the consumer of the twin', () => { + const state = parseAndGetTestState(consumerOfTwin, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + // shared_link.py is a symlink to shared.py, so it resolves to the same + // realpath and exposes the same symbols. + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + + // Baseline: SharedType exists via the symlink twin, so the consumer is clean. + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Capture the twin's content version so we can assert it advances (i.e. the + // twin is invalidated at the CONTENT level, not merely re-check-required). + const twinVersionBefore = state.program.getSourceFile(linkUri)!.getFileContentsVersion(); + + // Rewrite the backing file to remove SharedType (as an editor save/undo would). + // Because shared_link.py is a symlink to shared.py, reading the twin now yields + // the new content too. + state.testFS.writeFileSync(sharedUri, removedTargetContent); + + // Simulate the fs watcher firing for the real target path only. + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + // The twin's content version must advance: co-invalidation calls markDirty on + // the twin, which re-parses it from disk. If a future refactor downgrades this + // to re-check-only, the version would stay put and this guard would fail. + assert.ok( + state.program.getSourceFile(linkUri)!.getFileContentsVersion() > twinVersionBefore, + 'Expected the symlink twin fileContentsVersion to advance after co-invalidation' + ); + + // The consumer imported `linked.shared_link` (the twin), which no longer + // exposes SharedType. Its stale "clean" diagnostics must be recomputed to the + // exact unresolved-import error. The exact message (rather than a substring) + // also guards against a future refactor that downgrades twin invalidation to + // re-check-only, which would leave the twin's cached symbol table intact and + // produce no error at all. + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); +}); + +test('symlink target invalidation clears stale diagnostics on the consumer of the real target', () => { + const state = parseAndGetTestState(consumerOfTarget, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Rewrite the backing file, then route the change to the SYMLINK twin only. + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([linkUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + // The consumer imported `linked.shared` (the real target); marking the twin + // dirty must bridge back to the target and re-check the consumer. + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); +}); + +test('non-symlinked files do not spuriously invalidate unrelated consumers', () => { + // Two distinct real modules (no symlink). Changing one must not re-check a + // consumer of the other — guards against over-broad alias invalidation. + const code = ` +// @filename: pkg/__init__.py +//// # package marker + +// @filename: pkg/a.py +//// class AType: +//// pass + +// @filename: pkg/b.py +//// class BType: +//// pass + +// @filename: consumer.py +//// from pkg.b import BType +//// y = BType() +`; + const state = parseAndGetTestState(code, '/proj').state; + const provider = state.serviceProvider; + + const aUri = Uri.file('/proj/pkg/a.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.analyze(); + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Change an unrelated module and mark it dirty. + state.testFS.writeFileSync(aUri, 'class ARenamed:\n pass\n'); + state.program.markFilesDirty([aUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + // Consumer of pkg.b is unaffected. + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); +}); + +test('closing a symlink alias co-invalidates the twin so its consumer is re-checked', () => { + // Exercises the setFileClosed entrypoint (not just markFilesDirty). The + // consumer imports the symlink twin; the real target is open and then closed + // after its backing file changed on disk. setFileClosed must bridge to the + // twin (same realpath) and re-check the twin's consumer. + const state = parseAndGetTestState(consumerOfTwin, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + + // Open the real target as an editor document, then analyze. + state.program.setFileOpened(sharedUri, 1, 'class SharedType:\n pass\n'); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // The backing file changes on disk (rename/undo save), then the target + // document is closed. Closing must co-invalidate the symlink twin. + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.setFileClosed(sharedUri); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); +}); + +test('open-content invalidation (evenIfContentsAreSame) still bridges symlink twins when disk changed', () => { + // The open-document update path calls markFilesDirty(evenIfContentsAreSame=true). + // When the backing file actually changed on disk, twin co-invalidation must + // still fire, and unrelated files must not be dragged in. + const code = ` +// @filename: linked/__init__.py +//// # package marker + +// @filename: linked/shared.py +//// class SharedType: +//// pass + +// @filename: unrelated.py +//// value = 1 + +// @filename: consumer.py +//// from linked.shared_link import SharedType +//// x = SharedType() +`; + const state = parseAndGetTestState(code, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + const unrelatedUri = Uri.file('/proj/unrelated.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri, unrelatedUri]); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + assert.deepStrictEqual(errorMessagesOn(state, unrelatedUri), []); + + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ true); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); + // The unrelated file (not a realpath alias) must remain clean. + assert.deepStrictEqual(errorMessagesOn(state, unrelatedUri), []); +}); + +test('an in-memory open edit (evenIfContentsAreSame, no disk change) does not re-check the twin', () => { + // Regression for over-invalidation: updateOpenFileContents calls + // markFilesDirty(evenIfContentsAreSame=true) on every keystroke. Twin fan-out + // must NOT force the other alias (and its importer subtree) to be re-checked + // when the twin's on-disk contents are unchanged, otherwise every keystroke on + // one alias triggers a full recheck of the other alias's dependents. + const code = ` +// @filename: linked/__init__.py +//// # package marker + +// @filename: linked/shared.py +//// class SharedType: +//// pass + +// @filename: consumer.py +//// from linked.shared_link import SharedType +//// x = SharedType() +`; + const state = parseAndGetTestState(code, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + // Open the real target as an editor document, then analyze so everything is clean. + state.program.setFileOpened(sharedUri, 1, 'class SharedType:\n pass\n'); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Simulate a keystroke: the open document's in-memory contents change but the + // backing file on disk does NOT. This is exactly what updateOpenFileContents + // does (markFilesDirty with evenIfContentsAreSame=true). + state.program.setFileOpened(sharedUri, 2, 'class SharedType:\n pass\n# edit\n'); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ true); + + // The edited (open) file itself needs re-checking, but the twin alias must not + // have been dragged in, since its on-disk contents are unchanged. + const linkInfo = state.program.getSourceFileInfo(linkUri); + const consumerInfo = state.program.getSourceFileInfo(consumerUri); + assert.ok(linkInfo, 'expected twin alias to be tracked'); + assert.ok(consumerInfo, 'expected twin consumer to be tracked'); + assert.strictEqual( + linkInfo!.sourceFile.isCheckingRequired(), + false, + 'twin alias must not be re-checked on an in-memory-only edit' + ); + assert.strictEqual( + consumerInfo!.sourceFile.isCheckingRequired(), + false, + "twin's consumer must not be re-checked on an in-memory-only edit" + ); +}); + +test('a 3+ member symlink group fans out to every alias consumer', () => { + // Two symlinks to one target, with a distinct consumer per symlink. A change + // routed to the target must re-check BOTH alias consumers — exercises the + // multi-entry aliasKeys fan-out (not just a 2-member group). + const code = ` +// @filename: linked/__init__.py +//// # package marker + +// @filename: linked/shared.py +//// class SharedType: +//// pass + +// @filename: consumer1.py +//// from linked.link1 import SharedType +//// a = SharedType() + +// @filename: consumer2.py +//// from linked.link2 import SharedType +//// b = SharedType() +`; + const state = parseAndGetTestState(code, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const link1Uri = Uri.file('/proj/linked/link1.py', provider); + const link2Uri = Uri.file('/proj/linked/link2.py', provider); + const consumer1Uri = Uri.file('/proj/consumer1.py', provider); + const consumer2Uri = Uri.file('/proj/consumer2.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/link1.py'); + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/link2.py'); + + state.program.addTrackedFiles([sharedUri, link1Uri, link2Uri, consumer1Uri, consumer2Uri]); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumer1Uri), []); + assert.deepStrictEqual(errorMessagesOn(state, consumer2Uri), []); + + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumer1Uri), [unknownImportError('SharedType')]); + assert.deepStrictEqual(errorMessagesOn(state, consumer2Uri), [unknownImportError('SharedType')]); +}); + +test('multiple consumers of the same twin are all re-checked', () => { + const code = ` +// @filename: linked/__init__.py +//// # package marker + +// @filename: linked/shared.py +//// class SharedType: +//// pass + +// @filename: consumer1.py +//// from linked.shared_link import SharedType +//// a = SharedType() + +// @filename: consumer2.py +//// from linked.shared_link import SharedType +//// b = SharedType() +`; + const state = parseAndGetTestState(code, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumer1Uri = Uri.file('/proj/consumer1.py', provider); + const consumer2Uri = Uri.file('/proj/consumer2.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + state.program.addTrackedFiles([sharedUri, linkUri, consumer1Uri, consumer2Uri]); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumer1Uri), []); + assert.deepStrictEqual(errorMessagesOn(state, consumer2Uri), []); + + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumer1Uri), [unknownImportError('SharedType')]); + assert.deepStrictEqual(errorMessagesOn(state, consumer2Uri), [unknownImportError('SharedType')]); +}); + +test('two independent symlink groups do not cross-invalidate', () => { + const code = ` +// @filename: pkg/__init__.py +//// # package marker + +// @filename: pkg/a.py +//// class TypeA: +//// pass + +// @filename: pkg/b.py +//// class TypeB: +//// pass + +// @filename: consumerA.py +//// from pkg.a_link import TypeA +//// a = TypeA() + +// @filename: consumerB.py +//// from pkg.b_link import TypeB +//// b = TypeB() +`; + const state = parseAndGetTestState(code, '/proj').state; + const provider = state.serviceProvider; + + const aUri = Uri.file('/proj/pkg/a.py', provider); + const bUri = Uri.file('/proj/pkg/b.py', provider); + const aLinkUri = Uri.file('/proj/pkg/a_link.py', provider); + const bLinkUri = Uri.file('/proj/pkg/b_link.py', provider); + const consumerAUri = Uri.file('/proj/consumerA.py', provider); + const consumerBUri = Uri.file('/proj/consumerB.py', provider); + + state.testFS.symlinkSync('/proj/pkg/a.py', '/proj/pkg/a_link.py'); + state.testFS.symlinkSync('/proj/pkg/b.py', '/proj/pkg/b_link.py'); + + state.program.addTrackedFiles([aUri, bUri, aLinkUri, bLinkUri, consumerAUri, consumerBUri]); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerAUri), []); + assert.deepStrictEqual(errorMessagesOn(state, consumerBUri), []); + + // Change group A's target only. + state.testFS.writeFileSync(aUri, 'class RenamedA:\n pass\n'); + state.program.markFilesDirty([aUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerAUri), [unknownImportError('TypeA')]); + // Group B is a different realpath group and must stay clean. + assert.deepStrictEqual(errorMessagesOn(state, consumerBUri), []); +}); + +test('alias index survives file removal and re-add', () => { + // Exercises _unindexRealpathAlias (on removal) and re-indexing (on re-add): + // after the alias group is torn down and rebuilt, co-invalidation must still + // work and no stale index entry may misdirect invalidation. + const state = parseAndGetTestState(consumerOfTwin, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Tear down: untrack everything so _removeUnneededFiles evicts the files + // (and _unindexRealpathAlias runs for the symlink group). + state.program.setTrackedFiles([]); + state.analyze(); + assert.strictEqual( + state.program.getSourceFileInfo(linkUri), + undefined, + 'Expected the symlink twin to be removed from the program after untracking' + ); + + // Re-add the same files; the alias index must be rebuilt from scratch. + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Co-invalidation must work again against the rebuilt index. + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); +}); + +test('a twin first seen as an untracked import is indexed once it becomes tracked', () => { + // Ordering gap: the symlink twin is discovered first via import resolution + // (untracked -> skipped by the user-code-only index), then later tracked. The + // tracked-flip must (re-)index it so co-invalidation applies. + const state = parseAndGetTestState(consumerOfTwin, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + // Track only the target + consumer. The twin (shared_link.py) is pulled in as + // an untracked referenced import during analysis. + state.program.addTrackedFiles([sharedUri, consumerUri]); + state.analyze(); + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Now the twin becomes tracked (e.g. enumeration catches up / it is opened). + state.program.setTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + + // Route a change to the real target; the now-tracked twin must be bridged. + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); +}); + +test('re-adding only the realpath target rebuilds the alias group', () => { + // Comment-2 scenario: remove ONLY the realpath target (leaving the symlink + // twin tracked), then re-add ONLY the target. The alias group must be + // rebuilt so co-invalidation through the twin keeps working. + const state = parseAndGetTestState(consumerOfTwin, '/proj').state; + const provider = state.serviceProvider; + + const sharedUri = Uri.file('/proj/linked/shared.py', provider); + const linkUri = Uri.file('/proj/linked/shared_link.py', provider); + const consumerUri = Uri.file('/proj/consumer.py', provider); + + state.testFS.symlinkSync('/proj/linked/shared.py', '/proj/linked/shared_link.py'); + + state.program.addTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Untrack only the realpath target; the symlink twin + consumer stay tracked. + state.program.setTrackedFiles([linkUri, consumerUri]); + state.analyze(); + assert.strictEqual( + state.program.getSourceFileInfo(sharedUri), + undefined, + 'Expected the realpath target to be removed from the program after untracking it' + ); + + // Re-add only the realpath target. The alias group (still holding the twin) + // must be rebuilt to include the target again. + state.program.setTrackedFiles([sharedUri, linkUri, consumerUri]); + state.analyze(); + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), []); + + // Co-invalidation must work again through the rebuilt group. + state.testFS.writeFileSync(sharedUri, removedTargetContent); + state.program.markFilesDirty([sharedUri], /* evenIfContentsAreSame */ false); + state.analyze(); + + assert.deepStrictEqual(errorMessagesOn(state, consumerUri), [unknownImportError('SharedType')]); +}); + +test('an alias whose realpath target is never indexed does not leak a stale group on removal', () => { + // A symlink whose resolved target is never added (e.g. it resolves outside + // the workspace) seeds the alias group with the unindexed target key. + // Removing the alias must drop the group entirely rather than leaving a + // permanent one-entry remnant behind that accumulates over a long session. + const state = parseAndGetTestState(consumerOfTwin, '/proj').state; + const provider = state.serviceProvider; + + const unindexedTargetUri = Uri.file('/proj/linked/ext_real.py', provider); + const aliasUri = Uri.file('/proj/linked/ext_link.py', provider); + + // ext_link.py is a symlink to a file that is never tracked or imported, so + // only the alias is indexed while its realpath target remains unindexed. + state.testFS.writeFileSync(unindexedTargetUri, 'value = 1\n'); + state.testFS.symlinkSync('/proj/linked/ext_real.py', '/proj/linked/ext_link.py'); + + state.program.addTrackedFiles([aliasUri]); + state.analyze(); + + const aliasMap = (state.program as any)._realpathAliasMap as Map>; + assert.strictEqual(aliasMap.size, 1, 'Expected the alias to seed a realpath group while tracked'); + + // Untracking the alias must not leave a lingering realpath group behind, + // since the only remaining key is the never-indexed target seed. + state.program.setTrackedFiles([]); + state.analyze(); + + assert.strictEqual( + aliasMap.size, + 0, + 'Expected no lingering realpath alias group after removing an alias whose target was never indexed' + ); +}); + +function unknownImportError(name: string): string { + return `"${name}" is unknown import symbol`; +} + +function errorMessagesOn(state: TestState, uri: Uri): string[] { + const diags = state.program.getSourceFile(uri)!.getDiagnostics(state.configOptions) ?? []; + return diags.filter((d) => d.category === DiagnosticCategory.Error).map((d) => d.message); +} diff --git a/packages/pyright-internal/src/tests/testUtils.ts b/packages/pyright-internal/src/tests/testUtils.ts index 56389016eb05..e12970d9be25 100644 --- a/packages/pyright-internal/src/tests/testUtils.ts +++ b/packages/pyright-internal/src/tests/testUtils.ts @@ -11,8 +11,10 @@ import * as assert from 'assert'; import * as fs from 'fs'; import * as path from 'path'; +import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { ImportResolver } from '../analyzer/importResolver'; import { Program } from '../analyzer/program'; +import { Scope } from '../analyzer/scope'; import { NameTypeWalker } from '../analyzer/testWalker'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; import { ConfigOptions, ExecutionEnvironment, getStandardDiagnosticRuleSet } from '../common/configOptions'; @@ -36,6 +38,7 @@ import { ParseFileResults, ParseOptions, Parser, ParserOutput } from '../parser/ export interface FileAnalysisResult { fileUri: Uri; parseResults?: ParseFileResults | undefined; + moduleScope?: Scope | undefined; errors: Diagnostic[]; warnings: Diagnostic[]; infos: Diagnostic[]; @@ -139,9 +142,13 @@ export function getAnalysisResults( return sourceFiles.map((sourceFile, index) => { if (sourceFile) { const diagnostics = sourceFile.getDiagnostics(configOptions) || []; + const parseResults = sourceFile.getParseResults(); const analysisResult: FileAnalysisResult = { fileUri: sourceFile.getUri(), - parseResults: sourceFile.getParseResults(), + parseResults, + moduleScope: parseResults + ? AnalyzerNodeInfo.getScope(parseResults.parserOutput.parseTree, program.analyzerNodeInfoContext) + : undefined, errors: diagnostics.filter((diag) => diag.category === DiagnosticCategory.Error), warnings: diagnostics.filter((diag) => diag.category === DiagnosticCategory.Warning), infos: diagnostics.filter((diag) => diag.category === DiagnosticCategory.Information), @@ -156,6 +163,7 @@ export function getAnalysisResults( const analysisResult: FileAnalysisResult = { fileUri: Uri.empty(), parseResults: undefined, + moduleScope: undefined, errors: [], warnings: [], infos: [], diff --git a/packages/pyright-internal/src/tests/textEditUtil.test.ts b/packages/pyright-internal/src/tests/textEditUtil.test.ts index 9c5bdbf87662..c2a711f813a2 100644 --- a/packages/pyright-internal/src/tests/textEditUtil.test.ts +++ b/packages/pyright-internal/src/tests/textEditUtil.test.ts @@ -109,7 +109,7 @@ test('handle comments', () => { function verifyRemoveNodes(code: string) { const state = parseAndGetTestState(code).state; - const tracker = new TextEditTracker(); + const tracker = new TextEditTracker(state.program.analyzerNodeInfoContext); const ranges = state.getRanges(); const changeRanges = _getChangeRanges(ranges); @@ -133,7 +133,7 @@ function verifyRemoveNodes(code: string) { function verifyEdits(code: string, mergeOnlyDuplications = true) { const state = parseAndGetTestState(code).state; - const tracker = new TextEditTracker(mergeOnlyDuplications); + const tracker = new TextEditTracker(state.program.analyzerNodeInfoContext, mergeOnlyDuplications); const ranges = state.getRanges(); const changeRanges = _getChangeRanges(ranges); diff --git a/packages/pyright-internal/src/tests/textRangeCollection.test.ts b/packages/pyright-internal/src/tests/textRangeCollection.test.ts new file mode 100644 index 000000000000..0ec1c2ecf02a --- /dev/null +++ b/packages/pyright-internal/src/tests/textRangeCollection.test.ts @@ -0,0 +1,155 @@ +/* + * textRangeCollection.test.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Unit tests for TextRangeCollection, focused on the last-hit memo added to + * getItemContaining. The memo is a hint that is re-validated on every call, so it + * must return exactly what the underlying binary search (getIndexContaining) returns + * regardless of the order positions are queried, including for gap and boundary cases. + */ + +import assert from 'assert'; + +import { TextRange } from '../common/textRange'; +import { getIndexContaining, TextRangeCollection } from '../common/textRangeCollection'; + +function ranges(spec: [start: number, length: number][]): TextRange[] { + return spec.map(([start, length]) => TextRange.create(start, length)); +} + +// Independent linear-scan oracle for the default (contains) predicate that mirrors the +// pre-guards of getItemContaining. +function bruteContaining(items: TextRange[], position: number): number { + if (items.length === 0) { + return -1; + } + const start = items[0].start; + const end = items[items.length - 1].start + items[items.length - 1].length; + if (position < start || position > end) { + return -1; + } + for (let i = 0; i < items.length; i++) { + if (TextRange.contains(items[i], position)) { + return i; + } + } + return -1; +} + +function shuffled(values: number[], seed: number): number[] { + const result = [...values]; + let state = seed >>> 0; + const rand = () => { + state = (state * 1664525 + 1013904223) >>> 0; + return state / 0x100000000; + }; + for (let i = result.length - 1; i > 0; i--) { + const j = Math.floor(rand() * (i + 1)); + [result[i], result[j]] = [result[j], result[i]]; + } + return result; +} + +function positionsToProbe(items: TextRange[]): number[] { + const end = items.length > 0 ? items[items.length - 1].start + items[items.length - 1].length : 0; + const forward: number[] = []; + for (let p = -1; p <= end + 1; p++) { + forward.push(p); + } + return forward; +} + +// For each access order, a single warm collection (carrying memo state) must agree with +// both a fresh collection and the independent oracle for every probed position. +function verifyAllOrders(items: TextRange[]) { + const probes = positionsToProbe(items); + const orders: { name: string; positions: number[] }[] = [ + { name: 'forward', positions: probes }, + { name: 'reverse', positions: [...probes].reverse() }, + { name: 'random', positions: shuffled(probes, 0x1234567) }, + { name: 'repeated', positions: probes.flatMap((p) => [p, p, p]) }, + ]; + + for (const order of orders) { + const warm = new TextRangeCollection(items); + for (const position of order.positions) { + const actual = warm.getItemContaining(position); + const expected = bruteContaining(items, position); + assert.strictEqual( + actual, + expected, + `[${order.name}] getItemContaining(${position}) => ${actual}, expected ${expected}` + ); + + // Cold collection (memo starts fresh) must also agree, proving warm memo + // state never alters the result. + const cold = new TextRangeCollection(items).getItemContaining(position); + assert.strictEqual(actual, cold, `[${order.name}] warm/cold mismatch at ${position}`); + } + } +} + +test('getItemContaining on a contiguous (line-like) collection', () => { + // Contiguous, non-overlapping ranges covering [0, 23), like tokenizer line ranges. + verifyAllOrders( + ranges([ + [0, 5], + [5, 5], + [10, 10], + [20, 3], + ]) + ); +}); + +test('getItemContaining preserves -1 gap semantics on a non-contiguous collection', () => { + // Gaps between items (positions 3-9 and 13-19) must always return -1, even when the + // memo points at an adjacent item from a prior lookup. + const items = ranges([ + [0, 3], + [10, 3], + [20, 3], + ]); + + // Sanity: gaps really do resolve to -1. + assert.strictEqual(bruteContaining(items, 5), -1); + assert.strictEqual(bruteContaining(items, 15), -1); + + verifyAllOrders(items); +}); + +test('getItemContaining on an empty collection returns -1', () => { + const collection = new TextRangeCollection([]); + for (const position of [-1, 0, 1, 100]) { + assert.strictEqual(collection.getItemContaining(position), -1); + } +}); + +test('getItemContaining on a single-item collection', () => { + verifyAllOrders(ranges([[4, 3]])); +}); + +test('getItemContaining matches getIndexContaining across a randomized order', () => { + // The memoized method must agree with the underlying (memo-free) module function for + // every position, in any order. + const items = ranges([ + [0, 2], + [2, 4], + [6, 1], + [7, 8], + [15, 5], + ]); + const warm = new TextRangeCollection(items); + const end = items[items.length - 1].start + items[items.length - 1].length; + + const probes: number[] = []; + for (let p = 0; p < end; p++) { + probes.push(p); + } + + for (const position of shuffled(probes, 0xabcdef)) { + const viaMethod = warm.getItemContaining(position); + const viaModule = getIndexContaining(items, position); + assert.strictEqual(viaMethod, viaModule, `mismatch at ${position}: ${viaMethod} !== ${viaModule}`); + } +}); diff --git a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts index 4f89242391f4..11823cc97d41 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator1.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator1.test.ts @@ -10,7 +10,6 @@ import * as assert from 'assert'; -import * as AnalyzerNodeInfo from '../analyzer/analyzerNodeInfo'; import { ScopeType } from '../analyzer/scope'; import { ConfigOptions } from '../common/configOptions'; import { @@ -22,8 +21,27 @@ import { pythonVersion3_9, } from '../common/pythonVersion'; import { Uri } from '../common/uri/uri'; +import { getChildNodes } from '../parser/parseTreeUtils'; +import { getParserStringAnnotation, ParseNode, ParseNodeType, StringListNode } from '../parser/parseNodes'; import * as TestUtils from './testUtils'; +function getNodes(root: ParseNode) { + const nodes: ParseNode[] = []; + const pending = [root]; + + while (pending.length > 0) { + const node = pending.pop()!; + nodes.push(node); + getChildNodes(node).forEach((child) => { + if (child) { + pending.push(child); + } + }); + } + + return nodes; +} + test('Unreachable1', () => { const configOptions = new ConfigOptions(Uri.empty()); @@ -212,8 +230,8 @@ test('Builtins1', () => { 'ellipsis', ]; - const moduleScope = AnalyzerNodeInfo.getScope(analysisResults[0].parseResults!.parserOutput.parseTree)!; - assert.notStrictEqual(moduleScope, undefined); + const moduleScope = analysisResults[0].moduleScope; + assert.ok(moduleScope); const builtinsScope = moduleScope.parent!; assert.notStrictEqual(builtinsScope, undefined); @@ -757,6 +775,17 @@ test('Lambda9', () => { const analysisResults = TestUtils.typeAnalyzeSampleFiles(['lambda9.py']); TestUtils.validateResults(analysisResults, 0); + + const root = analysisResults[0].parseResults!.parserOutput.parseTree; + const stringList = getNodes(root).find( + (node): node is StringListNode => + node.nodeType === ParseNodeType.StringList && + node.parent?.nodeType === ParseNodeType.Argument && + node.d.strings[0].nodeType === ParseNodeType.String && + node.d.strings[0].d.value === 'Flow' + ); + + expect(stringList ? getParserStringAnnotation(stringList) : undefined).toBeUndefined(); }); test('Lambda10', () => { diff --git a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts index be802a24ba5f..243c8d02c05a 100644 --- a/packages/pyright-internal/src/tests/typeEvaluator4.test.ts +++ b/packages/pyright-internal/src/tests/typeEvaluator4.test.ts @@ -82,6 +82,11 @@ test('CallSite3', () => { TestUtils.validateResults(analysisResults, 0); }); +test('CallSite4', () => { + const analysisResults = TestUtils.typeAnalyzeSampleFiles(['callSite4.py']); + TestUtils.validateResults(analysisResults, 0, 0, 7); +}); + test('FString1', () => { const configOptions = new ConfigOptions(Uri.empty()); diff --git a/packages/pyright-internal/src/tests/typeServer/typeCache.test.ts b/packages/pyright-internal/src/tests/typeServer/typeCache.test.ts new file mode 100644 index 000000000000..6f7221924a95 --- /dev/null +++ b/packages/pyright-internal/src/tests/typeServer/typeCache.test.ts @@ -0,0 +1,41 @@ +/* + * typeCache.test.ts + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + * + * Tests for the type server cache. + */ + +import * as AnalyzerNodeInfo from '../../analyzer/analyzerNodeInfo'; +import { Uri } from '../../common/uri/uri'; +import { TypeCache } from '../../typeServer/typeCache'; +import { getNodeAtMarker, parseAndGetTestState } from '../harness/fourslash/testState'; + +test('bound owner URI wins over poisoned active and shared fallbacks', () => { + const state = parseAndGetTestState(` +// @filename: main.py +//// [|/*value*/value|] = 1 +// @filename: wrong.py +//// [|/*wrong*/wrong|] = 2 + `).state; + while (state.program.analyze()) { + // Continue until analysis completes. + } + + const valueRange = state.getRangeByMarkerName('value')!; + const wrongUri = state.getRangeByMarkerName('wrong')!.fileUri; + const node = getNodeAtMarker(state, 'value'); + const root = state.program.getParseResults(valueRange.fileUri)!.parserOutput.parseTree; + expect(AnalyzerNodeInfo.getFileInfoIfAvailable(node, state.program.analyzerNodeInfoContext)).toBeDefined(); + + const cache = new TypeCache(state.program.serviceProvider, () => undefined); + const parseTreeUris = Reflect.get(cache, '_parseTreeUris') as WeakMap; + parseTreeUris.set(root.a, wrongUri); + const activeFallback = jest.fn(() => wrongUri); + + expect(cache.getUri(node, state.program.analyzerNodeInfoContext, activeFallback).toString()).toBe( + valueRange.fileUri.toString() + ); + expect(activeFallback).not.toHaveBeenCalled(); + expect(parseTreeUris.get(root.a)?.toString()).toBe(wrongUri.toString()); +}); diff --git a/packages/pyright-internal/src/tests/typeServer/typeServer.virtualFileRedirect.test.ts b/packages/pyright-internal/src/tests/typeServer/typeServer.virtualFileRedirect.test.ts index a3a400da942a..b5f36c1b6dda 100644 --- a/packages/pyright-internal/src/tests/typeServer/typeServer.virtualFileRedirect.test.ts +++ b/packages/pyright-internal/src/tests/typeServer/typeServer.virtualFileRedirect.test.ts @@ -10,8 +10,10 @@ */ import assert from 'assert'; +import { FileSystem } from '../../common/fileSystem'; import { TspSupplemental } from '../../typeServer/protocol/tspSupplemental'; import { TypeServerProtocol } from '../../typeServer/protocol/typeServerProtocol'; +import { TypeServerVirtualFileRedirects } from '../../typeServer/typeServerFileSystem'; import { initializeDependenciesForInProcTests, withInProcTypeServer } from './inProcTypeServerTestUtils'; jest.setTimeout(120000); @@ -33,6 +35,37 @@ describe('TypeServer virtual file redirect (TspSupplemental)', () => { await initializeDependenciesForInProcTests(); }); + test('redirect capability requires both operations', () => { + const redirects = Object.create({ + addVirtualFileRedirect() {}, + removeVirtualFileRedirect() {}, + }) as FileSystem; + + assert(TypeServerVirtualFileRedirects.is(redirects)); + assert.strictEqual( + TypeServerVirtualFileRedirects.is({ addVirtualFileRedirect() {} } as unknown as FileSystem), + false + ); + assert.strictEqual( + TypeServerVirtualFileRedirects.is({ removeVirtualFileRedirect() {} } as unknown as FileSystem), + false + ); + assert.strictEqual( + TypeServerVirtualFileRedirects.is({ + addVirtualFileRedirect: undefined, + removeVirtualFileRedirect() {}, + } as unknown as FileSystem), + false + ); + assert.strictEqual( + TypeServerVirtualFileRedirects.is({ + addVirtualFileRedirect() {}, + removeVirtualFileRedirect: undefined, + } as unknown as FileSystem), + false + ); + }); + test('setVirtualFileRedirect triggers reanalysis and changes inferred types', async () => { const code = ` // @filename: mymod.py diff --git a/packages/pyright-internal/src/tests/uri.test.ts b/packages/pyright-internal/src/tests/uri.test.ts index 523d18ba9e18..126a0747287a 100644 --- a/packages/pyright-internal/src/tests/uri.test.ts +++ b/packages/pyright-internal/src/tests/uri.test.ts @@ -21,6 +21,7 @@ import { deduplicateFolders, getWildcardRegexPattern, getWildcardRoot, + isSameUriFile, makeDirectories, } from '../common/uri/uriUtils'; import * as vfs from './harness/vfs/filesystem'; @@ -917,6 +918,63 @@ test('convert UNC path', () => { assert(path.getPath().indexOf('server') > 0); }); +test('isSameUriFile file scheme', () => { + // Two file:// URIs are compared by their file-system path. + const a = Uri.parse('file:///a/b/c.py', caseDetector); + const b = Uri.parse('file:///a/b/c.py', caseDetector); + const c = Uri.parse('file:///a/b/d.py', caseDetector); + assert.strictEqual(isSameUriFile(a, b), true); + assert.strictEqual(isSameUriFile(a, c), false); +}); + +test('isSameUriFile virtual scheme differing authority', () => { + // Two virtual URIs that differ only by authority (the #5811 scenario) are + // compared by their URI path, so they are treated as the same file. + const a = Uri.parse('vscode-vfs://authorityA/repo/x.py', caseDetector); + const b = Uri.parse('vscode-vfs://authorityB/repo/x.py', caseDetector); + const c = Uri.parse('vscode-vfs://authorityB/repo/y.py', caseDetector); + assert.strictEqual(isSameUriFile(a, b), true); + assert.strictEqual(isSameUriFile(a, c), false); +}); + +test('isSameUriFile virtual scheme differing fragment', () => { + // Notebook-mapped virtual URIs can carry a #cellName fragment. Two virtual URIs + // that share a path but differ by fragment refer to different logical resources + // (e.g. different notebook cells) and must not merge. + const cell1 = Uri.parse('vscode-vfs://authorityA/repo/nb.ipynb#cell1', caseDetector); + const cell1Other = Uri.parse('vscode-vfs://authorityB/repo/nb.ipynb#cell1', caseDetector); + const cell2 = Uri.parse('vscode-vfs://authorityA/repo/nb.ipynb#cell2', caseDetector); + // Same fragment, differing only by authority still merges (the #5811 fix). + assert.strictEqual(isSameUriFile(cell1, cell1Other), true); + // Differing fragment stays distinct. + assert.strictEqual(isSameUriFile(cell1, cell2), false); +}); + +test('isSameUriFile virtual scheme differing query', () => { + // Virtual URIs that share a path but differ by query must not merge. + const a = Uri.parse('vscode-vfs://authorityA/repo/x.py?a=1', caseDetector); + const b = Uri.parse('vscode-vfs://authorityA/repo/x.py?a=2', caseDetector); + assert.strictEqual(isSameUriFile(a, b), false); +}); + +test('isSameUriFile differing virtual schemes', () => { + // Virtual URIs that share a path but use different schemes are distinct resources + // and must not merge. + const a = Uri.parse('vscode-vfs://authority/repo/x.py', caseDetector); + const b = Uri.parse('untitled://authority/repo/x.py', caseDetector); + assert.strictEqual(isSameUriFile(a, b), false); +}); + +test('isSameUriFile mixed file and virtual scheme', () => { + // A file:// URI paired with a virtual URI must never merge, even when the + // logical file appears the same. getFilePath() is non-empty on one side and + // empty on the other, so the anti-over-merge guard returns false. + const fileUri = Uri.parse('file:///repo/x.py', caseDetector); + const virtualUri = Uri.parse('vscode-vfs://authorityA/repo/x.py', caseDetector); + assert.strictEqual(isSameUriFile(fileUri, virtualUri), false); + assert.strictEqual(isSameUriFile(virtualUri, fileUri), false); +}); + function lowerCaseDrive(entries: string[]) { return entries.map((p) => (process.platform === 'win32' ? p[0].toLowerCase() + p.slice(1) : p)); } diff --git a/packages/pyright-internal/src/typeServer/notebookDocumentHandler.ts b/packages/pyright-internal/src/typeServer/notebookDocumentHandler.ts index 1c3e78f14f7e..1827d27e45d3 100644 --- a/packages/pyright-internal/src/typeServer/notebookDocumentHandler.ts +++ b/packages/pyright-internal/src/typeServer/notebookDocumentHandler.ts @@ -75,7 +75,7 @@ export class NotebookDocumentHandler { private readonly _uriMapper: NotebookUriMapper, private readonly _caseDetector: CaseSensitivityDetector, private readonly _console: ConsoleInterface, - private readonly _getWorkspace: (fileUri: Uri) => Promise + protected readonly getWorkspace: (fileUri: Uri) => Promise ) {} test_whenIdle(): Promise { @@ -99,15 +99,16 @@ export class NotebookDocumentHandler { let notebookData = await chain.old; try { + const prefixCellContents = await this.getPrefixCellContents(notebookUri); notebookData = createNotebookData( notebookUri, params.cellTextDocuments, this._uriMapper, this._caseDetector, - getDefaultPrefixCellContents() + prefixCellContents ); - const workspace = await this._getWorkspace(notebookData.prefixCellUri); + const workspace = await this.getWorkspace(notebookData.prefixCellUri); openNotebookCellChain(params.cellTextDocuments, notebookData, this._uriMapper, workspace); verifyCellChainIsLinear(notebookData, workspace, this._console); @@ -138,7 +139,7 @@ export class NotebookDocumentHandler { const notebookData = await chain.old; try { - const workspace = await this._getWorkspace(notebookData.prefixCellUri); + const workspace = await this.getWorkspace(notebookData.prefixCellUri); if (params.change.cells?.structure) { updateNotebookStructure( @@ -193,7 +194,7 @@ export class NotebookDocumentHandler { const notebookData = await chain.old; try { - const workspace = await this._getWorkspace(notebookData.prefixCellUri); + const workspace = await this.getWorkspace(notebookData.prefixCellUri); const cellPaths = [notebookData.prefixCellUri, ...notebookData.mappedCellUris]; cellPaths.forEach((cellPath) => { @@ -217,6 +218,16 @@ export class NotebookDocumentHandler { }); } + /** + * Returns the synthetic prefix-cell contents for a notebook. The base implementation returns + * Jupyter's implicit `from IPython.display import *`. Subclasses (e.g. Pylance) can override this + * to layer in product-specific startup commands. `notebookUri` identifies the notebook whose + * prefix cell is being (re)built so overrides can resolve per-notebook configuration. + */ + protected getPrefixCellContents(notebookUri: Uri): Promise { + return Promise.resolve(getDefaultPrefixCellContents()); + } + private _getNotebookData(notebookUri: Uri): Promise { const notebookData = this._notebookMap.get(notebookUri.key); return notebookData ?? Promise.resolve(undefined); diff --git a/packages/pyright-internal/src/typeServer/programWrapper.ts b/packages/pyright-internal/src/typeServer/programWrapper.ts index 29c1c1ca2009..05a8b2a71a21 100644 --- a/packages/pyright-internal/src/typeServer/programWrapper.ts +++ b/packages/pyright-internal/src/typeServer/programWrapper.ts @@ -26,12 +26,14 @@ import { LookupImportOptions, } from '../analyzer/analyzerFileInfo'; import { + AnalyzerNodeInfoReader, DunderAllInfo, getDeclaration, getDunderAllInfo, getFileInfo, getFlowNode, getImportInfo, + getInfoReader, getScope, } from '../analyzer/analyzerNodeInfo'; import { FlowNode } from '../analyzer/codeFlowTypes'; @@ -182,33 +184,34 @@ export class ProgramWrapper implements IProgram { } get symbolLookup(): ISymbolLookup { + const nodeInfo = getInfoReader(this._program); const symbolLookup: ISymbolLookup = { getFileInfo: (node: ParseNode): AnalyzerFileInfo => { // Ensure the file is bound before reading AnalyzerInfo off the node. // Without this, nodes from files that haven't been bound yet (e.g. // freshly-discovered modules during a code-action request) return // undefined fileInfo and crash downstream readers. - const fileUri = this._cache.getUri(node); + const fileUri = this._getUri(node, nodeInfo); this._program.getBoundSourceFileInfo(fileUri); - return getFileInfo(node); + return getFileInfo(node, nodeInfo); }, getImportInfo: (node: ParseNode): ImportResult | undefined => { - return getImportInfo(node); + return getImportInfo(node, nodeInfo); }, getDeclaration: (node: ParseNode): Declaration | undefined => { - return getDeclaration(node); + return getDeclaration(node, nodeInfo); }, getFlowNode: (node: ParseNode): FlowNode | undefined => { - return getFlowNode(node); + return getFlowNode(node, nodeInfo); }, getScope(node) { - return getScope(node); + return getScope(node, nodeInfo); }, getScopeIdForNode(node: ParseNode): string { - return getScopeIdForNode(node); + return getScopeIdForNode(node, nodeInfo); }, getDunderAllInfo(node: ModuleNode): DunderAllInfo | undefined { - return getDunderAllInfo(node); + return getDunderAllInfo(node, nodeInfo); }, getSymbolsForFile: (fileUri: Uri, skipFileNeededCheck = false): SymbolTable | undefined => { // The underlying sync `Program` has only one version of any file, and there is @@ -219,7 +222,7 @@ export class ProgramWrapper implements IProgram { return this._program.getModuleSymbolTable(fileUri); }, getSymbolsForNode: (node: ParseNode): SymbolTable | undefined => { - const scope = getScopeForNode(node); + const scope = getScopeForNode(node, nodeInfo); return scope?.symbolTable; }, lookupSymbol: ( @@ -227,14 +230,14 @@ export class ProgramWrapper implements IProgram { name: string, _skipFileNeededCheck?: boolean ): Symbol | undefined => { - return getSymbolFromScope(scopingNode, name); + return getSymbolFromScope(scopingNode, name, nodeInfo); }, getMatchingFileInfos: (fileId: string): AnalyzerFileInfo[] => { const parseTrees = this._program .getSourceFileInfoList() .map((f) => f.sourceFile.getParseResults()?.parserOutput.parseTree) .filter((t): t is ModuleNode => !!t); - const fileInfos = parseTrees.map((p) => getFileInfo(p)).filter((f) => f.fileId === fileId); + const fileInfos = parseTrees.map((p) => getFileInfo(p, nodeInfo)).filter((f) => f.fileId === fileId); return fileInfos; }, }; @@ -292,6 +295,7 @@ export class ProgramWrapper implements IProgram { token: CancellationToken ): ISourceMapper | undefined { const sourceMapper = this._program.getSourceMapper(fileUri, token, mapCompiled, preferStubs); + const nodeInfo = getInfoReader(this._program); const wrapper: ISourceMapper = { findDeclarations: (decl: Declaration) => { return sourceMapper ? sourceMapper.findDeclarations(decl) : []; @@ -316,15 +320,15 @@ export class ProgramWrapper implements IProgram { }, getFileInfo: (node) => { // Ensure the file is bound before reading AnalyzerInfo off the node. - const fileUri = this._cache.getUri(node); + const fileUri = this._getUri(node, nodeInfo); this._program.getBoundSourceFileInfo(fileUri); - return getFileInfo(node); + return getFileInfo(node, nodeInfo); }, }; return wrapper; } getUri(node: ParseNode): Uri { - return this._cache.getUri(node); + return this._getUri(node, getInfoReader(this._program)); } isCaseSensitive(uri: string): boolean { return this._cache.isCaseSensitive(uri); @@ -842,6 +846,17 @@ export class ProgramWrapper implements IProgram { .find((env) => env.root && (env.root.equals(uri) || uri.isChild(env.root))); return env ?? this._program.configOptions.getDefaultExecEnvironment(); } + + private _getUri(node: ParseNode, nodeInfo: AnalyzerNodeInfoReader): Uri { + return this._cache.getUri(node, nodeInfo, (key) => { + for (const sourceFileInfo of this._program.getSourceFileInfoList()) { + if (this._program.getParserOutput(sourceFileInfo.uri)?.parseTree.a === key) { + return sourceFileInfo.uri; + } + } + return undefined; + }); + } } const programWrappers = new WeakMap(); @@ -852,7 +867,12 @@ export function makeProgram(program: ProgramView, cache?: ITypeCache): IProgram if (!wrapper) { wrapper = new ProgramWrapper( program as Program, - cache ?? new TypeCache(program.serviceProvider, (uri) => program.getParserOutput(uri)) + cache ?? + new TypeCache( + program.serviceProvider, + (uri) => program.getParserOutput(uri), + () => program.getSourceFileInfoList().map((s) => s.uri) + ) ); programWrappers.set(program, wrapper); } else if (cache && wrapper instanceof ProgramWrapper && wrapper.typeCache !== cache) { diff --git a/packages/pyright-internal/src/typeServer/protocol/tspSupplemental.ts b/packages/pyright-internal/src/typeServer/protocol/tspSupplemental.ts index 581d2d3d525a..b7a8e93d6de1 100644 --- a/packages/pyright-internal/src/typeServer/protocol/tspSupplemental.ts +++ b/packages/pyright-internal/src/typeServer/protocol/tspSupplemental.ts @@ -8,7 +8,7 @@ * These notifications are NOT part of the base TSP (defined in typeServerProtocol.ts), * which is shared by all TSP implementers (e.g., ty-tsp). This file defines * Pyright-only extensions that require Pyright-specific knowledge (e.g., the - * VirtualFileOverlayFileSystem in PylanceFileSystem). + * virtual-file overlay in PylanceFileSystem). * * All the types in this file should be JSON serializable, as they are sent over the wire. */ @@ -40,7 +40,7 @@ export namespace TspSupplemental { * * This is used by the Django stub generation feature: Pylance's Rust sidecar writes * merged virtual `.py` files to disk, and this notification tells the type server's - * VirtualFileOverlayFileSystem to redirect reads so Pyright analyzes the virtual content. + * virtual-file overlay to redirect reads so Pyright analyzes the virtual content. */ export namespace SetVirtualFileRedirectNotification { export const method = 'pyright/setVirtualFileRedirect' as const; diff --git a/packages/pyright-internal/src/typeServer/server.ts b/packages/pyright-internal/src/typeServer/server.ts index a77c67a18db3..445cd7616bd5 100644 --- a/packages/pyright-internal/src/typeServer/server.ts +++ b/packages/pyright-internal/src/typeServer/server.ts @@ -17,7 +17,7 @@ * Feature notes: * - Telemetry and profiling are intentionally omitted (Pyright has no telemetry). * - Notebook support and the virtual-file-redirect supplemental are layered in by later - * phases; the seams (`_notebookManager`, overlay file system) are left in place. + * phases; the seams (`notebookManager`, overlay file system) are left in place. */ import { CancellationToken, Connection, Diagnostic, WorkDoneProgressServerReporter } from 'vscode-languageserver'; @@ -36,7 +36,6 @@ import { import { CodeAction, Command } from 'vscode-languageserver-types'; import { AnalysisResults } from '../analyzer/analysis'; -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; import { InvalidatedReason } from '../analyzer/backgroundAnalysisProgram'; import { Declaration } from '../analyzer/declaration'; import { ImportResolver } from '../analyzer/importResolver'; @@ -48,7 +47,8 @@ import { ConfigOptions } from '../common/configOptions'; import { convertLogLevel, LogLevel } from '../common/console'; import { isDefined, isString } from '../common/core'; import { Diagnostic as AnalyzerDiagnostic } from '../common/diagnostic'; -import { resolvePathWithEnvVariables } from '../common/envVarUtils'; +import { resolvePathStringWithEnvVariables, resolvePathWithEnvVariables } from '../common/envVarUtils'; +import { ReadOnlyFileSystem } from '../common/fileSystem'; import { FullAccessHost } from '../common/fullAccessHost'; import { Host } from '../common/host'; import { ServerOptions, ServerSettings } from '../common/languageServerInterface'; @@ -73,14 +73,14 @@ import { fromProtocolDecl, fromProtocolNode } from './typeServerConversionTypes' import { ProtocolTypeFactory } from './typeServerConversionUtils'; import { isDeclaration } from './typeEvalUtils'; import { ITypeCache, TypeCache } from './typeCache'; -import { TypeServerFileSystem } from './typeServerFileSystem'; +import { TypeServerVirtualFileRedirects } from './typeServerFileSystem'; import { TypeServerServiceKeys } from './typeServerServiceKeys'; export class TypeServer extends LanguageServerBase { private readonly _handleToUriMap = new Map(); private _initializedComplete = false; private _globalTypeCache: ITypeCache; - private _notebookManager: NotebookDocumentHandler | undefined; + protected notebookManager: NotebookDocumentHandler | undefined; private readonly _uriMapper: INotebookUriMapper | undefined; constructor(serverOptions: ServerOptions, connection: Connection) { @@ -98,8 +98,8 @@ export class TypeServer extends LanguageServerBase { // If this is a notebook cell and no python path was passed in, use the last known // python path for the containing notebook so cells resolve to the workspace with the // matching pythonPath. - if (NotebookUriMapper.isNotebookCell(fileUri) && this._notebookManager) { - const notebookData = await this._notebookManager.getNotebookDataForCell(fileUri); + if (NotebookUriMapper.isNotebookCell(fileUri) && this.notebookManager) { + const notebookData = await this.notebookManager.getNotebookDataForCell(fileUri); if (pythonPath === undefined) { pythonPath = notebookData?.pythonPath; } @@ -114,8 +114,8 @@ export class TypeServer extends LanguageServerBase { override async getContainingWorkspacesForFile(fileUri: Uri): Promise { // If this is a notebook cell we should wait for the notebook to open first. - if (NotebookUriMapper.isNotebookCell(fileUri) && this._notebookManager) { - await this._notebookManager.getNotebookDataForCell(fileUri); + if (NotebookUriMapper.isNotebookCell(fileUri) && this.notebookManager) { + await this.notebookManager.getNotebookDataForCell(fileUri); // Map the vscode-notebook-cell: URI to its file-scheme equivalent so the workspace // factory can match it against workspace root URIs. @@ -203,9 +203,9 @@ export class TypeServer extends LanguageServerBase { const extraPaths = pythonAnalysisSection.extraPaths; if (extraPaths && Array.isArray(extraPaths) && extraPaths.length > 0) { - serverSettings.extraPaths = extraPaths + serverSettings.extraPathFileSpecs = extraPaths .filter((p) => p && isString(p)) - .map((p) => resolvePathWithEnvVariables(workspace, p, workspaces)) + .map((p) => resolvePathStringWithEnvVariables(workspace, p, workspaces)) .filter(isDefined); } @@ -379,17 +379,17 @@ export class TypeServer extends LanguageServerBase { // Register raw notification handlers for notebook documents. These are registered here // (before connection.listen()) so they're ready when the connection starts processing - // messages. `_notebookManager` is created in `initialize()` (not here) because SWC's + // messages. `notebookManager` is created in `initialize()` (not here) because SWC's // TC39 class-field semantics would reinitialize it to undefined after the base class // constructor returns; `initialize()` runs before any notifications arrive. this.connection.onNotification('notebookDocument/didOpen', (params: DidOpenNotebookDocumentParams) => { - this._notebookManager?.onDidOpenNotebookDocument(params); + this.notebookManager?.onDidOpenNotebookDocument(params); }); this.connection.onNotification('notebookDocument/didChange', (params: DidChangeNotebookDocumentParams) => { - this._notebookManager?.onDidChangeNotebookDocument(params); + this.notebookManager?.onDidChangeNotebookDocument(params); }); this.connection.onNotification('notebookDocument/didClose', (params: DidCloseNotebookDocumentParams) => { - this._notebookManager?.onDidCloseNotebookDocument(params); + this.notebookManager?.onDidCloseNotebookDocument(params); }); } @@ -399,30 +399,35 @@ export class TypeServer extends LanguageServerBase { supportedCodeActions: string[] ): Promise { // Create the notebook manager here (not in setupConnection) because SWC's TC39 - // class-field semantics reinitialize `_notebookManager` to undefined after the base + // class-field semantics reinitialize `notebookManager` to undefined after the base // class constructor returns. This method runs when the Initialize request is processed, // which is before any notifications arrive. The manager is only created when a notebook // URI mapper is registered in the service provider (notebook support is otherwise off). if (this._uriMapper && this._uriMapper instanceof NotebookUriMapper) { - const uriMapper = this._uriMapper; - this._notebookManager = new NotebookDocumentHandler( - uriMapper, - this.caseSensitiveDetector, - this.console, - (fileUri) => this.workspaceFactory.getWorkspaceForFile(fileUri, undefined) - ); + this.notebookManager = this.createNotebookManager(this._uriMapper); } const result = await super.initialize(params, supportedCommands, supportedCodeActions); // Advertise notebook support so the client sends notebookDocument/* notifications. - if (this._notebookManager) { + if (this.notebookManager) { result.capabilities.notebookDocumentSync = AnyNotebookDocumentSelector; } return result; } + /** + * Factory for the notebook document handler. Split out so subclasses (e.g. Pylance) can + * substitute a handler that layers in product-specific behavior (such as startup commands) + * without duplicating the initialize()/notebook-capability wiring. + */ + protected createNotebookManager(uriMapper: NotebookUriMapper): NotebookDocumentHandler { + return new NotebookDocumentHandler(uriMapper, this.caseSensitiveDetector, this.console, (fileUri) => + this.workspaceFactory.getWorkspaceForFile(fileUri, undefined) + ); + } + protected override convertLspUriStringToUri(lspUri: string): Uri { // Do our own conversion of the LSP URI string to a Uri so notebook cells map to their // file-scheme equivalent. @@ -519,7 +524,7 @@ export class TypeServer extends LanguageServerBase { // these diagnostics directly and the original client does support them. const lspDiagnostics = serverDiagnostics .map((d) => - convertFromPyrightDiagnostic( + this.convertDiagnostic( d, workspace.service.fs, /* supportsUnnecessaryDiagnosticTag */ true, @@ -546,6 +551,18 @@ export class TypeServer extends LanguageServerBase { return result; } + // Converts a single analyzer diagnostic to an LSP diagnostic. Subclasses (e.g. Pylance) can + // override to add product-specific tagging (such as VS task-item tags/rank) without + // reimplementing the pull-diagnostics flow in `onDiagnostics`. + protected convertDiagnostic( + diag: AnalyzerDiagnostic, + fs: ReadOnlyFileSystem, + supportsUnnecessaryDiagnosticTag: boolean, + supportsTaskItemDiagnosticTag: boolean + ): Diagnostic | undefined { + return convertFromPyrightDiagnostic(diag, fs, supportsUnnecessaryDiagnosticTag, supportsTaskItemDiagnosticTag); + } + private _getStringValues(values: any) { if (!values || !Array.isArray(values) || values.length === 0) { return []; @@ -648,8 +665,9 @@ export class TypeServer extends LanguageServerBase { } let pythonVersion = program.configOptions.getDefaultExecEnvironment().pythonVersion; - if (!isDeclaration(input)) { - const fileInfo = getFileInfo(input); + const node = isDeclaration(input) ? input.node : input; + if (node) { + const fileInfo = program.symbolLookup.getFileInfo(node); pythonVersion = fileInfo.executionEnvironment.pythonVersion; } @@ -699,13 +717,13 @@ export class TypeServer extends LanguageServerBase { private _onSetVirtualFileRedirect(params: TspSupplemental.SetVirtualFileRedirectParams): void { const fs = this.fs; - if (!TypeServerFileSystem.is(fs)) { + if (!TypeServerVirtualFileRedirects.is(fs)) { return; } const realUri = this.convertLspUriStringToUri(params.realUri); const virtualUri = this.convertLspUriStringToUri(params.virtualUri); - fs.virtualOverlay.addFileRedirect(realUri, virtualUri); + fs.addVirtualFileRedirect(realUri, virtualUri); // If the file is currently open, read the virtual content and update Pyright's in-memory // buffer. For closed files, the FS overlay redirect is sufficient — Pyright reads from @@ -737,12 +755,12 @@ export class TypeServer extends LanguageServerBase { private _onRemoveVirtualFileRedirect(params: TspSupplemental.RemoveVirtualFileRedirectParams): void { const fs = this.fs; - if (!TypeServerFileSystem.is(fs)) { + if (!TypeServerVirtualFileRedirects.is(fs)) { return; } const realUri = this.convertLspUriStringToUri(params.realUri); - fs.virtualOverlay.removeFileRedirect(realUri); + fs.removeVirtualFileRedirect(realUri); // If the file is currently open, restore from the open document's original text // (authoritative), not from disk which may differ. For closed files, just removing the diff --git a/packages/pyright-internal/src/typeServer/typeCache.ts b/packages/pyright-internal/src/typeServer/typeCache.ts index ad4d78cb1490..5dd82f4fac1a 100644 --- a/packages/pyright-internal/src/typeServer/typeCache.ts +++ b/packages/pyright-internal/src/typeServer/typeCache.ts @@ -1,11 +1,11 @@ -import { getFileInfo } from '../analyzer/analyzerNodeInfo'; +import { AnalyzerNodeInfoReader, getFileInfo } from '../analyzer/analyzerNodeInfo'; import { isClass, isFunction, isTypeVar, Type } from '../analyzer/types'; import { assert } from '../common/debug'; import { FileSystem } from '../common/fileSystem'; import { ServiceKeys } from '../common/serviceKeys'; import { ServiceProvider } from '../common/serviceProvider'; import { Uri } from '../common/uri/uri'; -import { ParseNode } from '../parser/parseNodes'; +import { ParseNode, ParseTreeKey } from '../parser/parseNodes'; import { ParserOutput } from '../parser/parser'; import { Event, EventEmitter } from './eventEmitter'; @@ -14,7 +14,11 @@ import { TypeServerServiceKeys } from './typeServerServiceKeys'; export interface ITypeCache { snapshot: number; - getUri(node: ParseNode): Uri; + getUri( + node: ParseNode, + nodeInfo: AnalyzerNodeInfoReader, + getActiveUri?: (key: ParseTreeKey) => Uri | undefined + ): Uri; isCaseSensitive(uri: string): boolean; snapshotChanged: Event; incrementSnapshot(): number; @@ -23,10 +27,12 @@ export interface ITypeCache { export class TypeCache implements ITypeCache { private _snapshot: number = 0; // Make sure to start out as a valid snapshot. private _snapshotEmitter = EventEmitter.create(); + private _parseTreeUris = new WeakMap(); constructor( private readonly _serviceProvider: ServiceProvider, - private readonly _getParserOutput: (uri: Uri) => ParserOutput | undefined + private readonly _getParserOutput: (uri: Uri) => ParserOutput | undefined, + private readonly _getSourceUris?: () => Iterable ) {} get snapshot(): number { @@ -47,13 +53,38 @@ export class TypeCache implements ITypeCache { } return 'unknown'; } - getUri(node: ParseNode): Uri { - assert(getFileInfo(node), 'Node must have file info'); - return getFileInfo(node)?.fileUri ?? Uri.file('', this._serviceProvider); + getUri( + node: ParseNode, + nodeInfo: AnalyzerNodeInfoReader, + getActiveUri?: (key: ParseTreeKey) => Uri | undefined + ): Uri { + const fileInfo = getFileInfo(node, nodeInfo); + if (fileInfo) { + return fileInfo.fileUri; + } + + // A caller can need the URI to bind the file that will provide file info. + let uri = getActiveUri?.(node.a); + if (uri) { + this._parseTreeUris.set(node.a, uri); + return uri; + } + + uri = this._parseTreeUris.get(node.a); + if (!uri) { + this._populateParseTreeUris(); + uri = this._parseTreeUris.get(node.a); + } + assert(uri, 'Node must have file info'); + return uri ?? Uri.file('', this._serviceProvider); } getParserOutput(uri: Uri): ParserOutput | undefined { - return this._getParserOutput(uri); + const parserOutput = this._getParserOutput(uri); + if (parserOutput) { + this._parseTreeUris.set(parserOutput.parseTree.a, uri); + } + return parserOutput; } isCaseSensitive(uri: string): boolean { return this._serviceProvider.get(ServiceKeys.caseSensitivityDetector).isCaseSensitive(uri); @@ -65,4 +96,12 @@ export class TypeCache implements ITypeCache { this._snapshotEmitter.fire(this._snapshot); return this._snapshot; } + + private _populateParseTreeUris(): void { + if (this._getSourceUris) { + for (const uri of this._getSourceUris()) { + this.getParserOutput(uri); + } + } + } } diff --git a/packages/pyright-internal/src/typeServer/typeEvalUtils.ts b/packages/pyright-internal/src/typeServer/typeEvalUtils.ts index e81fc6906520..1cedc113ccb7 100644 --- a/packages/pyright-internal/src/typeServer/typeEvalUtils.ts +++ b/packages/pyright-internal/src/typeServer/typeEvalUtils.ts @@ -1,3 +1,4 @@ +import { AnalyzerNodeInfoReader, getInfoReader } from '../analyzer/analyzerNodeInfo'; import { Declaration } from '../analyzer/declaration'; import { getScopeForNode } from '../analyzer/scopeUtils'; import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes'; @@ -69,10 +70,10 @@ export function isDeclaration(decl: any): decl is Declaration { return decl && decl.type !== undefined && decl.uri !== undefined; } -export function getSymbolFromScope(node: ParseNode, name: string) { +export function getSymbolFromScope(node: ParseNode, name: string, nodeInfo: AnalyzerNodeInfoReader) { // use name node for parameter to get the correct scope const nodeForScope = node.nodeType === ParseNodeType.Parameter ? node.d.name ?? node : node; - const scope = getScopeForNode(nodeForScope); + const scope = getScopeForNode(nodeForScope, nodeInfo); if (!scope) { return undefined; } @@ -98,7 +99,11 @@ export function getEffectiveTypeOfDeclaration( return undefined; } - const symbol = getSymbolFromScope(decl.node, symbolName); + if (!evaluator) { + return undefined; + } + + const symbol = getSymbolFromScope(decl.node, symbolName, getInfoReader(evaluator)); if (!symbol) { return undefined; } diff --git a/packages/pyright-internal/src/typeServer/typeServerFileSystem.ts b/packages/pyright-internal/src/typeServer/typeServerFileSystem.ts index cf0cda3a63c1..2dba1a17afc4 100644 --- a/packages/pyright-internal/src/typeServer/typeServerFileSystem.ts +++ b/packages/pyright-internal/src/typeServer/typeServerFileSystem.ts @@ -6,8 +6,8 @@ * The file system used by the Pyright type server. It wraps the real file system in a * VirtualFileOverlayFileSystem so that individual files can be transparently redirected to * alternate on-disk locations (e.g. merged Django stubs produced by an external client), and - * exposes that overlay via the `virtualOverlay` getter so the server's virtual-file-redirect - * handlers (TspSupplemental) can register and remove redirects. + * exposes redirect controls so the server's virtual-file-redirect handlers (TspSupplemental) + * can register and remove redirects without depending on this concrete wrapper. * * This is the Pyright-native counterpart to Pylance's `PylanceFileSystem`. Notebook cell URI * mapping is optional here (supplied in the notebook phase); when no mapper is provided the @@ -25,7 +25,22 @@ import { IPyrightFileSystem, PyrightFileSystem } from '../pyrightFileSystem'; import { INotebookUriMapper, NotebookUriMapper } from './notebookUriMapper'; import { VirtualFileOverlayFileSystem } from './virtualFileOverlayFileSystem'; -export class TypeServerFileSystem implements IPyrightFileSystem { +export interface TypeServerVirtualFileRedirects { + addVirtualFileRedirect(realUri: Uri, virtualUri: Uri): Disposable; + removeVirtualFileRedirect(realUri: Uri): void; +} + +export namespace TypeServerVirtualFileRedirects { + export function is(fileSystem: FileSystem): fileSystem is FileSystem & TypeServerVirtualFileRedirects { + const candidate = fileSystem as Partial; + return ( + typeof candidate.addVirtualFileRedirect === 'function' && + typeof candidate.removeVirtualFileRedirect === 'function' + ); + } +} + +export class TypeServerFileSystem implements IPyrightFileSystem, TypeServerVirtualFileRedirects { private readonly _fs: IPyrightFileSystem; private readonly _virtualOverlay: VirtualFileOverlayFileSystem; @@ -38,17 +53,12 @@ export class TypeServerFileSystem implements IPyrightFileSystem { this._fs = new PyrightFileSystem(this._virtualOverlay); } - /** - * Returns the virtual file overlay layer. The server's virtual-file-redirect handlers use - * this to add/remove per-file redirects that transparently redirect read operations to - * alternate on-disk locations. - */ - get virtualOverlay(): VirtualFileOverlayFileSystem { - return this._virtualOverlay; + addVirtualFileRedirect(realUri: Uri, virtualUri: Uri): Disposable { + return this._virtualOverlay.addFileRedirect(realUri, virtualUri); } - static is(obj: any): obj is TypeServerFileSystem { - return obj instanceof TypeServerFileSystem; + removeVirtualFileRedirect(realUri: Uri): void { + this._virtualOverlay.removeFileRedirect(realUri); } mkdirSync(uri: Uri, options?: MkDirOptions): void { diff --git a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi index 774ef031c7ad..6abf9f39a0ed 100644 --- a/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi +++ b/packages/pyright-internal/typeshed-fallback/stdlib/builtins.pyi @@ -2299,6 +2299,7 @@ NotImplemented: NotImplementedType @disjoint_base class BaseException: + """Common base class for all exceptions""" args: tuple[Any, ...] __cause__: BaseException | None __context__: BaseException | None @@ -2317,21 +2318,28 @@ class BaseException: __notes__: list[str] def add_note(self, note: str, /) -> None: ... -class GeneratorExit(BaseException): ... -class KeyboardInterrupt(BaseException): ... +class GeneratorExit(BaseException): + """Request that a generator exit.""" + +class KeyboardInterrupt(BaseException): + """Program interrupted by user.""" @disjoint_base class SystemExit(BaseException): + """Request to exit from the interpreter.""" code: sys._ExitCode -class Exception(BaseException): ... +class Exception(BaseException): + """Common base class for all non-exit exceptions.""" @disjoint_base class StopIteration(Exception): + """Signal the end from iterator.__next__().""" value: Any @disjoint_base class OSError(Exception): + """Base class for I/O related errors.""" errno: int | None strerror: str | None # filename, filename2 are actually str | bytes | None @@ -2345,20 +2353,28 @@ IOError = OSError if sys.platform == "win32": WindowsError = OSError -class ArithmeticError(Exception): ... -class AssertionError(Exception): ... +class ArithmeticError(Exception): + """Base class for arithmetic errors.""" + +class AssertionError(Exception): + """Assertion failed.""" @disjoint_base class AttributeError(Exception): + """Attribute not found.""" def __init__(self, *args: object, name: str | None = None, obj: object = None) -> None: ... name: str | None obj: object -class BufferError(Exception): ... -class EOFError(Exception): ... +class BufferError(Exception): + """Buffer error.""" + +class EOFError(Exception): + """Read beyond end of file.""" @disjoint_base class ImportError(Exception): + """Import can't find module, or can't find name in module.""" def __init__(self, *args: object, name: str | None = None, path: str | None = None) -> None: ... name: str | None path: str | None @@ -2367,22 +2383,33 @@ class ImportError(Exception): name_from: str | None # undocumented if sys.version_info >= (3, 15): - class ImportCycleError(ImportError): ... + class ImportCycleError(ImportError): + """Import produces a cycle.""" -class LookupError(Exception): ... -class MemoryError(Exception): ... +class LookupError(Exception): + """Base class for lookup errors.""" + +class MemoryError(Exception): + """Out of memory.""" @disjoint_base class NameError(Exception): + """Name not found globally.""" def __init__(self, *args: object, name: str | None = None) -> None: ... name: str | None -class ReferenceError(Exception): ... -class RuntimeError(Exception): ... -class StopAsyncIteration(Exception): ... +class ReferenceError(Exception): + """Weak ref proxy used after referent went away.""" + +class RuntimeError(Exception): + """Unspecified run-time error.""" + +class StopAsyncIteration(Exception): + """Signal the end from iterator.__anext__().""" @disjoint_base class SyntaxError(Exception): + """Invalid syntax.""" msg: str filename: str | None lineno: int | None @@ -2409,42 +2436,104 @@ class SyntaxError(Exception): # If you provide more than two arguments, it still creates the SyntaxError, but # the arguments from the info tuple are not parsed. This form is omitted. -class SystemError(Exception): ... -class TypeError(Exception): ... -class ValueError(Exception): ... -class FloatingPointError(ArithmeticError): ... -class OverflowError(ArithmeticError): ... -class ZeroDivisionError(ArithmeticError): ... -class ModuleNotFoundError(ImportError): ... -class IndexError(LookupError): ... -class KeyError(LookupError): ... -class UnboundLocalError(NameError): ... +class SystemError(Exception): + """Internal error in the Python interpreter. + + Please report this to the Python maintainer, along with the traceback, + the Python version, and the hardware/OS platform and version. + """ + +class TypeError(Exception): + """Inappropriate argument type.""" + +class ValueError(Exception): + """Inappropriate argument value (of correct type).""" + +class FloatingPointError(ArithmeticError): + """Floating-point operation failed.""" + +class OverflowError(ArithmeticError): + """Result too large to be represented.""" + +class ZeroDivisionError(ArithmeticError): + """Second argument to a division or modulo operation was zero.""" + +class ModuleNotFoundError(ImportError): + """Module not found.""" + +class IndexError(LookupError): + """Sequence index out of range.""" + +class KeyError(LookupError): + """Mapping key not found.""" + +class UnboundLocalError(NameError): + """Local name referenced but not bound to a value.""" class BlockingIOError(OSError): + """I/O operation would block.""" characters_written: int -class ChildProcessError(OSError): ... -class ConnectionError(OSError): ... -class BrokenPipeError(ConnectionError): ... -class ConnectionAbortedError(ConnectionError): ... -class ConnectionRefusedError(ConnectionError): ... -class ConnectionResetError(ConnectionError): ... -class FileExistsError(OSError): ... -class FileNotFoundError(OSError): ... -class InterruptedError(OSError): ... -class IsADirectoryError(OSError): ... -class NotADirectoryError(OSError): ... -class PermissionError(OSError): ... -class ProcessLookupError(OSError): ... -class TimeoutError(OSError): ... -class NotImplementedError(RuntimeError): ... -class RecursionError(RuntimeError): ... -class IndentationError(SyntaxError): ... -class TabError(IndentationError): ... -class UnicodeError(ValueError): ... +class ChildProcessError(OSError): + """Child process error.""" + +class ConnectionError(OSError): + """Connection error.""" + +class BrokenPipeError(ConnectionError): + """Broken pipe.""" + +class ConnectionAbortedError(ConnectionError): + """Connection aborted.""" + +class ConnectionRefusedError(ConnectionError): + """Connection refused.""" + +class ConnectionResetError(ConnectionError): + """Connection reset.""" + +class FileExistsError(OSError): + """File already exists.""" + +class FileNotFoundError(OSError): + """File not found.""" + +class InterruptedError(OSError): + """Interrupted by signal.""" + +class IsADirectoryError(OSError): + """Operation doesn't work on directories.""" + +class NotADirectoryError(OSError): + """Operation only works on directories.""" + +class PermissionError(OSError): + """Not enough permissions.""" + +class ProcessLookupError(OSError): + """Process not found.""" + +class TimeoutError(OSError): + """Timeout expired.""" + +class NotImplementedError(RuntimeError): + """Method or function hasn't been implemented yet.""" + +class RecursionError(RuntimeError): + """Recursion limit exceeded.""" + +class IndentationError(SyntaxError): + """Improper indentation.""" + +class TabError(IndentationError): + """Improper mixture of spaces and tabs.""" + +class UnicodeError(ValueError): + """Unicode related error.""" @disjoint_base class UnicodeDecodeError(UnicodeError): + """Unicode decoding error.""" encoding: str object: bytes start: int @@ -2454,6 +2543,7 @@ class UnicodeDecodeError(UnicodeError): @disjoint_base class UnicodeEncodeError(UnicodeError): + """Unicode encoding error.""" encoding: str object: str start: int @@ -2463,6 +2553,7 @@ class UnicodeEncodeError(UnicodeError): @disjoint_base class UnicodeTranslateError(UnicodeError): + """Unicode translation error.""" encoding: None object: str start: int @@ -2470,18 +2561,41 @@ class UnicodeTranslateError(UnicodeError): reason: str def __init__(self, object: str, start: int, end: int, reason: str, /) -> None: ... -class Warning(Exception): ... -class UserWarning(Warning): ... -class DeprecationWarning(Warning): ... -class SyntaxWarning(Warning): ... -class RuntimeWarning(Warning): ... -class FutureWarning(Warning): ... -class PendingDeprecationWarning(Warning): ... -class ImportWarning(Warning): ... -class UnicodeWarning(Warning): ... -class BytesWarning(Warning): ... -class ResourceWarning(Warning): ... -class EncodingWarning(Warning): ... +class Warning(Exception): + """Base class for warning categories.""" + +class UserWarning(Warning): + """Base class for warnings generated by user code.""" + +class DeprecationWarning(Warning): + """Base class for warnings about deprecated features.""" + +class SyntaxWarning(Warning): + """Base class for warnings about dubious syntax.""" + +class RuntimeWarning(Warning): + """Base class for warnings about dubious runtime behavior.""" + +class FutureWarning(Warning): + """Base class for warnings about constructs that will change semantically in the future.""" + +class PendingDeprecationWarning(Warning): + """Base class for warnings about features which will be deprecated in the future.""" + +class ImportWarning(Warning): + """Base class for warnings about probable mistakes in module imports""" + +class UnicodeWarning(Warning): + """Base class for warnings about Unicode related problems, mostly related to conversion problems.""" + +class BytesWarning(Warning): + """Base class for warnings about bytes and buffer related problems, mostly related to conversion from str or comparing to str.""" + +class ResourceWarning(Warning): + """Base class for warnings about resource usage.""" + +class EncodingWarning(Warning): + """Base class for warnings about encodings.""" if sys.version_info >= (3, 11): _BaseExceptionT_co = TypeVar("_BaseExceptionT_co", bound=BaseException, covariant=True, default=BaseException) @@ -2492,6 +2606,7 @@ if sys.version_info >= (3, 11): # See `check_exception_group.py` for use-cases and comments. @disjoint_base class BaseExceptionGroup(BaseException, Generic[_BaseExceptionT_co]): + """A combination of multiple unrelated exceptions.""" def __new__(cls, message: str, exceptions: Sequence[_BaseExceptionT_co], /) -> Self: ... def __init__(self, message: str, exceptions: Sequence[_BaseExceptionT_co], /) -> None: ... @property @@ -2534,6 +2649,7 @@ if sys.version_info >= (3, 11): def __class_getitem__(cls, item: Any, /) -> GenericAlias: ... class ExceptionGroup(BaseExceptionGroup[_ExceptionT_co], Exception): + """A combination of multiple unrelated exceptions.""" def __new__(cls, message: str, exceptions: Sequence[_ExceptionT_co], /) -> Self: ... def __init__(self, message: str, exceptions: Sequence[_ExceptionT_co], /) -> None: ... @property @@ -2559,4 +2675,5 @@ if sys.version_info >= (3, 11): ) -> tuple[ExceptionGroup[_ExceptionT_co] | None, ExceptionGroup[_ExceptionT_co] | None]: ... if sys.version_info >= (3, 13): - class PythonFinalizationError(RuntimeError): ... + class PythonFinalizationError(RuntimeError): + """Operation blocked during Python finalization.""" diff --git a/packages/pyright-typeserver/package-lock.json b/packages/pyright-typeserver/package-lock.json deleted file mode 100644 index a1194257237c..000000000000 --- a/packages/pyright-typeserver/package-lock.json +++ /dev/null @@ -1,2666 +0,0 @@ -{ - "name": "pyright-typeserver", - "version": "1.1.410", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pyright-typeserver", - "version": "1.1.410", - "license": "MIT", - "bin": { - "pyright-typeserver": "pyright-typeserver.js" - }, - "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", - "@types/node": "^25.9.2", - "copy-webpack-plugin": "^14.0.0", - "esbuild-loader": "^4.5.0", - "shx": "^0.4.0", - "ts-loader": "^9.5.4", - "typescript": "~6.0.3", - "webpack": "^5.104.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rspack/binding": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.1.3.tgz", - "integrity": "sha512-4UGXJqUHmm36tWG1GgFZz3p8sQ5JuSgWI+gq1xPPoihS41uYJL3cXuJnirTeWsmVrusmYZTQhgU3tl3VYGcJYg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "2.1.3", - "@rspack/binding-darwin-x64": "2.1.3", - "@rspack/binding-linux-arm64-gnu": "2.1.3", - "@rspack/binding-linux-arm64-musl": "2.1.3", - "@rspack/binding-linux-riscv64-gnu": "2.1.3", - "@rspack/binding-linux-riscv64-musl": "2.1.3", - "@rspack/binding-linux-x64-gnu": "2.1.3", - "@rspack/binding-linux-x64-musl": "2.1.3", - "@rspack/binding-wasm32-wasi": "2.1.3", - "@rspack/binding-win32-arm64-msvc": "2.1.3", - "@rspack/binding-win32-ia32-msvc": "2.1.3", - "@rspack/binding-win32-x64-msvc": "2.1.3" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.1.3.tgz", - "integrity": "sha512-oOGI0RSL89Ehu9T22rugmfUY9OC2eBqLMeWRYsu7bhlUrjoXeVfGBBSEXCse666BQ1sAiM8hD/k7nqVria/okQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.1.3.tgz", - "integrity": "sha512-sVqWXNiFTMXAyN362y6IA+eJc8LXZKfHdhEJ/zDuMmRp+u2IvhgaF8tk3vX/OmeB9jydVjySijuiqk8No/FoCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.1.3.tgz", - "integrity": "sha512-aCy9Zli/2Qf+Ee5otXfFQ6mhv5fEyn0wIoBVmouqtJoqOO21et6UTtJ+LHLsMDolwGLyHERAljeSFSmYX3/O5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.1.3.tgz", - "integrity": "sha512-flIE7eluz0d21Fn28EVm3vPwoJooOSqtmjLFVSuOMcoCbwV9clfor195oIrAppp/W7dL/3XquFuVfrsa01Jy8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-riscv64-gnu": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-2.1.3.tgz", - "integrity": "sha512-yojg8elye1nhsNeGncw0NrZ4pMGF7NVebR80CLg72TXyzfYwFJlFTdU5yUYb1Gy+JXIvrSCwzQt2QkyiEvmkfg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-riscv64-musl": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-2.1.3.tgz", - "integrity": "sha512-6PvbXb3FOK4X3S5QGvoSW/sqExmsvAoPnQ/YSFrXvTphkXFezA7wnobmGBHT8JQP31hcFRzJHIZSIOKktzSzzg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.1.3.tgz", - "integrity": "sha512-lMXjoGKf0SnviH596fmTszgtnXLHmWOoE90G8grG9MvKVa3pelRmfps5ewZL9s8ENf3NXRfOxIhIf/M9as6MqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.1.3.tgz", - "integrity": "sha512-0esT35v7pW2ZsJTMc/zDUHwpNXlPqyUCyuiLJvrAAUcdENrgOVe4DmFrgVJ2hwqI4GjeN1VBnGRJ8c+edAHH5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-wasm32-wasi": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.1.3.tgz", - "integrity": "sha512-UsrDjD59UEP0mhfN/Z+uTc3vLgiUvIr+mn92WC1sbQi9gtZohTYvaQYFhWuMkBqsACGcmZp704JAbbSrVrVYCA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "1.1.6" - } - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.1.3.tgz", - "integrity": "sha512-42RS/SwKBTkNvXIPZXqTn0yEFN8zwGRfRe/ly0GDvPp/KxpLMFWxJmLxgtoLompU+0UCGvV4KpcBENt3oWs6BA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.1.3.tgz", - "integrity": "sha512-thk43H1JHHbetNF3txcsGXeOwZi2m6Luf/uVUqNORXjxr5VV8woHAgaAx4QXVZRg70z1VDjd8mBWnHBnKI0FGA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.1.3.tgz", - "integrity": "sha512-ObaUcj+BHo/aBL1weyM3orApaHyAR5Phr3YNEpQEifxjZbNKM1iO5X5prN4OqEv3H+7o5e/Wh9Fy3N7Vvd+psA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/cli": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-2.1.3.tgz", - "integrity": "sha512-TUhLdSfXiSD5D4A85pW7m4vCC/MtPk00+OK1qVtM2OGad/xTPNUtkOrvOz9CEaOLW3L7vkwo+dHc5fqkFEsFPQ==", - "dev": true, - "license": "MIT", - "bin": { - "rspack": "bin/rspack.js" - }, - "peerDependencies": { - "@rspack/core": "^2.0.0-0", - "@rspack/dev-server": "^2.0.0-0" - }, - "peerDependenciesMeta": { - "@rspack/dev-server": { - "optional": true - } - } - }, - "node_modules/@rspack/core": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.1.3.tgz", - "integrity": "sha512-1iGnxLrP+iyY0ZSjLZeQTaxrISpQz4yLyqJPmaF/l4uw27/dBcrloszAeLOJQ9jiv7EJtU0T5zB+LOFPpivIxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rspack/binding": "2.1.3" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", - "@swc/helpers": "^0.5.23" - }, - "peerDependenciesMeta": { - "@module-federation/runtime-tools": { - "optional": true - }, - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.5.tgz", - "integrity": "sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/acorn": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.42", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", - "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.5.tgz", - "integrity": "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.42", - "caniuse-lite": "^1.0.30001800", - "electron-to-chromium": "^1.5.387", - "node-releases": "^2.0.50", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001803", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz", - "integrity": "sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", - "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-parent": "^6.0.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^7.0.3", - "tinyglobby": "^0.2.12" - }, - "engines": { - "node": ">= 20.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.389", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.389.tgz", - "integrity": "sha512-cEto7aeOqBfU1D+c5py5pE+ooscKE75JifxLBdFUZsqAxRS6y7kebtxAZvICszSl05gPjYHDTjY+lXpyGvpJbg==", - "dev": true, - "license": "ISC" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.24.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz", - "integrity": "sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz", - "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/esbuild-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.5.0.tgz", - "integrity": "sha512-rVYe97IN1+VoealVHQ3STEPbfTm+vvPk7AZPrL53Pt6JUGBhHTnIqyaow7EveMFlmQ2A1bLp7q19sP4PppaCDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.28.1", - "get-tsconfig": "^4.10.1", - "loader-utils": "^2.0.4", - "webpack-sources": "^3.3.4" - }, - "funding": { - "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" - }, - "peerDependencies": { - "webpack": "^4.40.0 || ^5.0.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-uri": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz", - "integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/loader-runner": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", - "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimizer-webpack-plugin": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz", - "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@minify-html/node": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "@swc/html": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "cssnano": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "html-minifier-terser": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "postcss": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.50", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz", - "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/serialize-javascript": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.7.tgz", - "integrity": "sha512-YAy8Od6KV+uuwUuU50np8fGB/Aues6Y0nAhA9y/hId74PlKUcme4pXcBD46NWKr1Q4osN/iseZ17YqO1XfmI8g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shelljs": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", - "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "execa": "^1.0.0", - "fast-glob": "^3.3.2", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/shx": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", - "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.8", - "shelljs": "^0.9.2" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.49.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.0.tgz", - "integrity": "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-loader": { - "version": "9.6.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.6.2.tgz", - "integrity": "sha512-R4iuczmtgxvtuI556s+hTZ6/7Ee03VCAk/l/M8LY1OAsUgB7YydsCxkgq9D9pKRaD7GJqUi2u8fp9zZP/ufjKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "picomatch": "^4.0.0", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "loader-utils": "*", - "typescript": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "loader-utils": { - "optional": true - } - } - }, - "node_modules/ts-loader/node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", - "dev": true, - "license": "MIT" - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/watchpack": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz", - "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.108.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.108.4.tgz", - "integrity": "sha512-yur8LyJoeiWh47dErD+Ok7vlbmDsJ3UbbRPAoxbGJ54WpE2y5yVo5G/inUzujnYgw3tPmBRdn+G7PoxXaYC33w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.22.2", - "es-module-lexer": "^2.1.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "graceful-fs": "^4.2.11", - "loader-runner": "^4.3.2", - "mime-db": "^1.54.0", - "minimizer-webpack-plugin": "^5.6.1", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "watchpack": "^2.5.2", - "webpack-sources": "^3.5.0" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz", - "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - } - } -} diff --git a/packages/pyright-typeserver/package.json b/packages/pyright-typeserver/package.json index aae9083e4b88..14aa92fabb9f 100644 --- a/packages/pyright-typeserver/package.json +++ b/packages/pyright-typeserver/package.json @@ -26,8 +26,8 @@ "fsevents": "~2.3.3" }, "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", + "@rspack/cli": "^2.1.3", + "@rspack/core": "^2.1.3", "@types/node": "^25.9.2", "copy-webpack-plugin": "^14.0.0", "esbuild-loader": "^4.5.0", diff --git a/packages/pyright/package-lock.json b/packages/pyright/package-lock.json deleted file mode 100644 index 7e11b706637d..000000000000 --- a/packages/pyright/package-lock.json +++ /dev/null @@ -1,2639 +0,0 @@ -{ - "name": "pyright", - "version": "1.1.411", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pyright", - "version": "1.1.411", - "license": "MIT", - "bin": { - "pyright": "index.js", - "pyright-langserver": "langserver.index.js" - }, - "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", - "@types/node": "^25.9.2", - "copy-webpack-plugin": "^14.0.0", - "esbuild-loader": "^4.5.0", - "shx": "^0.4.0", - "ts-loader": "^9.5.4", - "typescript": "~6.0.3", - "webpack": "^5.104.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/@emnapi/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rspack/binding": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.0.5.tgz", - "integrity": "sha512-Ta1y4WXJA87wM1OstqaMddoPsBGv7Cu779bYToKxEAqR/Yy9DxLkp7bdgBaAx2JH++BwVjV+toWts2V9AaiTFQ==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "2.0.5", - "@rspack/binding-darwin-x64": "2.0.5", - "@rspack/binding-linux-arm64-gnu": "2.0.5", - "@rspack/binding-linux-arm64-musl": "2.0.5", - "@rspack/binding-linux-x64-gnu": "2.0.5", - "@rspack/binding-linux-x64-musl": "2.0.5", - "@rspack/binding-wasm32-wasi": "2.0.5", - "@rspack/binding-win32-arm64-msvc": "2.0.5", - "@rspack/binding-win32-ia32-msvc": "2.0.5", - "@rspack/binding-win32-x64-msvc": "2.0.5" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.0.5.tgz", - "integrity": "sha512-++wjLQjQ20GcR0DwbzQmVXg9qy4XCX5NlfSzkzj2icHoDxr3KkrXhyVrQkdWuNG6l/bQrGLPnvLEAqkroC2Y7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.0.5.tgz", - "integrity": "sha512-JBD5mCN3JKjV64Mh9nDYx8lLUrWDfEl5tLBuMkREUnqEKbo+z4nfwotyqHHM8/XgZwL+Gr7ps4GLWuQQrZB8+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.0.5.tgz", - "integrity": "sha512-JI8+//woanJPNsfL7iGjX39zyiWumnrKHznWQM/7lEtE5nPmk+j+X7TYXxczSWC9zfZegiqI74D3L5JPDC84Fw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.0.5.tgz", - "integrity": "sha512-5LujilxLtJFRiiPz5i5iWcWJriK9oy4gN7gZtTo8YRB7wwmwA8LMypTjjO0GLbkPS4/KeCfY4fDfTC29KmK+tA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.0.5.tgz", - "integrity": "sha512-241wqE132jh+/U/pn97qUPV4KpIy4bSrTH0tqfzQCocgw+8hrUj02GqNG+3MXVC3qtwaQeJFYgEBy3TqFKsrIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.0.5.tgz", - "integrity": "sha512-BhaXZD064Lci3Kia0kLDAb4TyxO2C+0UidMlj44e8+ctasxIfFZgnrhCJrhTFHAtOiAwqhU3FHun2UuxPqX0Eg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-wasm32-wasi": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.0.5.tgz", - "integrity": "sha512-duEkRoXrl9SW8uGHv7JURJ5lgKu87qFDQ4Exy6UQPvsUJVXhtRXTfvMHCb/CejVJuW2Bw2D632/axZq3qRSuBQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "1.1.4" - } - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.0.5.tgz", - "integrity": "sha512-q2WT3HFoWL+2g84l3s2kY7CiE1gEZ1bwB3txx3eZzQQ6YKP7bE82z6sl6S/pTOHGjHdAO4snQXpSaHwUt3LX5g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.0.5.tgz", - "integrity": "sha512-nMJGIY7kvgbyMolEE7tXDe+Z9jSItDshTIqMQQkkD3WTHdjlBQozHxk4kBtKLsunO+3NkCLe5Oa3hXg1yyStIg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.0.5.tgz", - "integrity": "sha512-vP0BR6fxdPL9cb02HAuZATg/CjR07aecWel3s1vqRwW1aDffgXh9PVmqEKIHTgyaNsNR55kSKNJsB9AcQ8/QrA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/cli": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-2.0.5.tgz", - "integrity": "sha512-AAyuY/8sfegb0IcsFEhn5gLOTxy1uDmwjP49RY81PENz2pCk/7NU0zDdt0ke5wmpOH5s6IxS+Kw4aWdvl8FGpQ==", - "dev": true, - "license": "MIT", - "bin": { - "rspack": "bin/rspack.js" - }, - "peerDependencies": { - "@rspack/core": "^2.0.0-0", - "@rspack/dev-server": "^2.0.0-0" - }, - "peerDependenciesMeta": { - "@rspack/dev-server": { - "optional": true - } - } - }, - "node_modules/@rspack/core": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.0.5.tgz", - "integrity": "sha512-9tv2HAnSiTote5WPH2tmz1hLZ1zKbzkiZc1eYp7LP/8jcsiJBuf40ihiWidAgbbuYtJo3kWET6q+qOm5UhNiGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rspack/binding": "2.0.5" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", - "@swc/helpers": "^0.5.23" - }, - "peerDependenciesMeta": { - "@module-federation/runtime-tools": { - "optional": true - }, - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.2.tgz", - "integrity": "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", - "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", - "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-parent": "^6.0.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^7.0.3", - "tinyglobby": "^0.2.12" - }, - "engines": { - "node": ">= 20.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.360", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz", - "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==", - "dev": true, - "license": "ISC" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.21.6", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz", - "integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/esbuild-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.5.0.tgz", - "integrity": "sha512-rVYe97IN1+VoealVHQ3STEPbfTm+vvPk7AZPrL53Pt6JUGBhHTnIqyaow7EveMFlmQ2A1bLp7q19sP4PppaCDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.28.1", - "get-tsconfig": "^4.10.1", - "loader-utils": "^2.0.4", - "webpack-sources": "^3.3.4" - }, - "funding": { - "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" - }, - "peerDependencies": { - "webpack": "^4.40.0 || ^5.0.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/loader-runner": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", - "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", - "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/serialize-javascript": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", - "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shelljs": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", - "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "execa": "^1.0.0", - "fast-glob": "^3.3.2", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/shx": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", - "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.8", - "shelljs": "^0.9.2" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.47.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", - "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@minify-html/node": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "@swc/html": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "cssnano": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "html-minifier-terser": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "postcss": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-loader": { - "version": "9.5.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", - "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", - "dev": true, - "license": "MIT" - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.107.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.0.tgz", - "integrity": "sha512-PSxeHk/dmLYZlnTU+vL1Gej6Evg5RNtl3flhxBresfznFnzxinHMzHKloHnywM/3ouQv7/AlZCswWDIkNSggUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.21.4", - "es-module-lexer": "^2.1.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "loader-runner": "^4.3.2", - "mime-db": "^1.54.0", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.5.0", - "watchpack": "^2.5.1", - "webpack-sources": "^3.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", - "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - } - } -} diff --git a/packages/pyright/package.json b/packages/pyright/package.json index a9ae81981adc..0fc8c24c56a7 100644 --- a/packages/pyright/package.json +++ b/packages/pyright/package.json @@ -19,15 +19,15 @@ "scripts": { "build": "rspack build -c rspack.config.js --mode production", "clean": "shx rm -rf ./dist ./out README.md LICENSE.txt", - "prepack": "npm run clean && shx cp ../../README.md . && shx cp ../../LICENSE.txt . && npm run build", + "prepack": "pnpm run clean && shx cp ../../README.md . && shx cp ../../LICENSE.txt . && pnpm run build", "webpack": "rspack build -c rspack.config.js --mode development" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", + "@rspack/cli": "^2.1.3", + "@rspack/core": "^2.1.3", "@types/node": "^25.9.2", "copy-webpack-plugin": "^14.0.0", "esbuild-loader": "^4.5.0", @@ -44,8 +44,5 @@ "bin": { "pyright": "index.js", "pyright-langserver": "langserver.index.js" - }, - "overrides": { - "tar": "7.5.11" } } diff --git a/packages/vscode-pyright/build/checkPackage.js b/packages/vscode-pyright/build/checkPackage.js index f31079f44a95..9416ae90f58d 100644 --- a/packages/vscode-pyright/build/checkPackage.js +++ b/packages/vscode-pyright/build/checkPackage.js @@ -11,7 +11,7 @@ async function main() { const name = obj.name; if (name !== 'pyright') { console.error(chalk.red(`Extension name must be "pyright", but is currently set to "${name}".`)); - console.error(chalk.red('Please package by running "npm run package" to ensure the name is set correctly.')); + console.error(chalk.red('Please package by running "pnpm run package" to ensure the name is set correctly.')); console.error(); process.exit(1); } diff --git a/packages/vscode-pyright/nuget.config b/packages/vscode-pyright/nuget.config new file mode 100644 index 000000000000..54ec7bc0c484 --- /dev/null +++ b/packages/vscode-pyright/nuget.config @@ -0,0 +1,7 @@ + + + + + + + diff --git a/packages/vscode-pyright/package-lock.json b/packages/vscode-pyright/package-lock.json deleted file mode 100644 index fc0eaf277b8b..000000000000 --- a/packages/vscode-pyright/package-lock.json +++ /dev/null @@ -1,5855 +0,0 @@ -{ - "name": "vscode-pyright", - "version": "1.1.411", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vscode-pyright", - "version": "1.1.411", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "^9.0.0-next.8", - "vscode-languageclient": "^10.0.0-next.16", - "vscode-languageserver": "^10.0.0-next.13", - "vscode-languageserver-protocol": "^3.17.6-next.13" - }, - "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", - "@types/node": "^25.9.2", - "@types/vscode": "^1.101.0", - "@vscode/vsce": "^3.9.2", - "esbuild-loader": "^4.5.0", - "form-data": "^4.0.6", - "shx": "^0.4.0", - "ts-loader": "^9.5.4", - "typescript": "~6.0.3", - "webpack": "^5.104.1" - }, - "engines": { - "vscode": "^1.101.0" - } - }, - "node_modules/@azu/format-text": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", - "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@azu/style-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", - "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", - "dev": true, - "license": "WTFPL", - "dependencies": { - "@azu/format-text": "^1.0.1" - } - }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-util": "^1.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", - "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-rest-pipeline": "^1.22.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz", - "integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz", - "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-client": "^1.9.2", - "@azure/core-rest-pipeline": "^1.17.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^5.5.0", - "@azure/msal-node": "^5.1.0", - "open": "^10.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.11.0.tgz", - "integrity": "sha512-zkGNYS3TwY8lUpPIafAmsFCYZbgFixY9y/LZB9GUg0IILoHTqpN26j5OrkL1AQThh/YdZsawe4iWXfp85lFVxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/msal-common": "16.6.2" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "16.6.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.6.2.tgz", - "integrity": "sha512-hQjjsekAjB00cM1EmatWJlzhEoK2Qhz7Rj5gvM6tYf8iL7RM3tkxlpU9fG0+ofkulzg9AEEA6dIEnSmDr5ZqUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.2.tgz", - "integrity": "sha512-toS+2AePxqyzb0YOKttDOOiSl3jrkK9aiqIvpurpis0O34QcIS5gToqrgT39p04Dpxw3YoUU0lxJKTpSFFfA6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/msal-common": "16.6.2", - "jsonwebtoken": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rspack/binding": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.0.5.tgz", - "integrity": "sha512-Ta1y4WXJA87wM1OstqaMddoPsBGv7Cu779bYToKxEAqR/Yy9DxLkp7bdgBaAx2JH++BwVjV+toWts2V9AaiTFQ==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "@rspack/binding-darwin-arm64": "2.0.5", - "@rspack/binding-darwin-x64": "2.0.5", - "@rspack/binding-linux-arm64-gnu": "2.0.5", - "@rspack/binding-linux-arm64-musl": "2.0.5", - "@rspack/binding-linux-x64-gnu": "2.0.5", - "@rspack/binding-linux-x64-musl": "2.0.5", - "@rspack/binding-wasm32-wasi": "2.0.5", - "@rspack/binding-win32-arm64-msvc": "2.0.5", - "@rspack/binding-win32-ia32-msvc": "2.0.5", - "@rspack/binding-win32-x64-msvc": "2.0.5" - } - }, - "node_modules/@rspack/binding-darwin-arm64": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.0.5.tgz", - "integrity": "sha512-++wjLQjQ20GcR0DwbzQmVXg9qy4XCX5NlfSzkzj2icHoDxr3KkrXhyVrQkdWuNG6l/bQrGLPnvLEAqkroC2Y7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-darwin-x64": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.0.5.tgz", - "integrity": "sha512-JBD5mCN3JKjV64Mh9nDYx8lLUrWDfEl5tLBuMkREUnqEKbo+z4nfwotyqHHM8/XgZwL+Gr7ps4GLWuQQrZB8+Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.0.5.tgz", - "integrity": "sha512-JI8+//woanJPNsfL7iGjX39zyiWumnrKHznWQM/7lEtE5nPmk+j+X7TYXxczSWC9zfZegiqI74D3L5JPDC84Fw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.0.5.tgz", - "integrity": "sha512-5LujilxLtJFRiiPz5i5iWcWJriK9oy4gN7gZtTo8YRB7wwmwA8LMypTjjO0GLbkPS4/KeCfY4fDfTC29KmK+tA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.0.5.tgz", - "integrity": "sha512-241wqE132jh+/U/pn97qUPV4KpIy4bSrTH0tqfzQCocgw+8hrUj02GqNG+3MXVC3qtwaQeJFYgEBy3TqFKsrIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-linux-x64-musl": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.0.5.tgz", - "integrity": "sha512-BhaXZD064Lci3Kia0kLDAb4TyxO2C+0UidMlj44e8+ctasxIfFZgnrhCJrhTFHAtOiAwqhU3FHun2UuxPqX0Eg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rspack/binding-wasm32-wasi": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.0.5.tgz", - "integrity": "sha512-duEkRoXrl9SW8uGHv7JURJ5lgKu87qFDQ4Exy6UQPvsUJVXhtRXTfvMHCb/CejVJuW2Bw2D632/axZq3qRSuBQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "1.1.4" - } - }, - "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.0.5.tgz", - "integrity": "sha512-q2WT3HFoWL+2g84l3s2kY7CiE1gEZ1bwB3txx3eZzQQ6YKP7bE82z6sl6S/pTOHGjHdAO4snQXpSaHwUt3LX5g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.0.5.tgz", - "integrity": "sha512-nMJGIY7kvgbyMolEE7tXDe+Z9jSItDshTIqMQQkkD3WTHdjlBQozHxk4kBtKLsunO+3NkCLe5Oa3hXg1yyStIg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.0.5.tgz", - "integrity": "sha512-vP0BR6fxdPL9cb02HAuZATg/CjR07aecWel3s1vqRwW1aDffgXh9PVmqEKIHTgyaNsNR55kSKNJsB9AcQ8/QrA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rspack/cli": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-2.0.5.tgz", - "integrity": "sha512-AAyuY/8sfegb0IcsFEhn5gLOTxy1uDmwjP49RY81PENz2pCk/7NU0zDdt0ke5wmpOH5s6IxS+Kw4aWdvl8FGpQ==", - "dev": true, - "license": "MIT", - "bin": { - "rspack": "bin/rspack.js" - }, - "peerDependencies": { - "@rspack/core": "^2.0.0-0", - "@rspack/dev-server": "^2.0.0-0" - }, - "peerDependenciesMeta": { - "@rspack/dev-server": { - "optional": true - } - } - }, - "node_modules/@rspack/core": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.0.5.tgz", - "integrity": "sha512-9tv2HAnSiTote5WPH2tmz1hLZ1zKbzkiZc1eYp7LP/8jcsiJBuf40ihiWidAgbbuYtJo3kWET6q+qOm5UhNiGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rspack/binding": "2.0.5" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", - "@swc/helpers": "^0.5.23" - }, - "peerDependenciesMeta": { - "@module-federation/runtime-tools": { - "optional": true - }, - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@secretlint/config-creator": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz", - "integrity": "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/types": "^10.2.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/config-loader": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz", - "integrity": "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/profiler": "^10.2.2", - "@secretlint/resolver": "^10.2.2", - "@secretlint/types": "^10.2.2", - "ajv": "^8.17.1", - "debug": "^4.4.1", - "rc-config-loader": "^4.1.3" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/core": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz", - "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/profiler": "^10.2.2", - "@secretlint/types": "^10.2.2", - "debug": "^4.4.1", - "structured-source": "^4.0.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/formatter": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz", - "integrity": "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/resolver": "^10.2.2", - "@secretlint/types": "^10.2.2", - "@textlint/linter-formatter": "^15.2.0", - "@textlint/module-interop": "^15.2.0", - "@textlint/types": "^15.2.0", - "chalk": "^5.4.1", - "debug": "^4.4.1", - "pluralize": "^8.0.0", - "strip-ansi": "^7.1.0", - "table": "^6.9.0", - "terminal-link": "^4.0.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/formatter/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@secretlint/node": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz", - "integrity": "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/config-loader": "^10.2.2", - "@secretlint/core": "^10.2.2", - "@secretlint/formatter": "^10.2.2", - "@secretlint/profiler": "^10.2.2", - "@secretlint/source-creator": "^10.2.2", - "@secretlint/types": "^10.2.2", - "debug": "^4.4.1", - "p-map": "^7.0.3" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/profiler": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz", - "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==", - "dev": true, - "license": "MIT" - }, - "node_modules/@secretlint/resolver": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz", - "integrity": "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@secretlint/secretlint-formatter-sarif": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz", - "integrity": "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-sarif-builder": "^3.2.0" - } - }, - "node_modules/@secretlint/secretlint-rule-no-dotenv": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz", - "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/types": "^10.2.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/secretlint-rule-preset-recommend": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz", - "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/source-creator": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz", - "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/types": "^10.2.2", - "istextorbinary": "^9.5.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/types": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz", - "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@textlint/ast-node-types": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.7.1.tgz", - "integrity": "sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.7.1.tgz", - "integrity": "sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azu/format-text": "^1.0.2", - "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "15.7.1", - "@textlint/resolver": "15.7.1", - "@textlint/types": "15.7.1", - "chalk": "^4.1.2", - "debug": "^4.4.3", - "js-yaml": "^4.1.1", - "lodash": "^4.18.1", - "pluralize": "^2.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "table": "^6.9.0", - "text-table": "^0.2.0" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/pluralize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", - "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@textlint/module-interop": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.7.1.tgz", - "integrity": "sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/resolver": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.7.1.tgz", - "integrity": "sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/types": { - "version": "15.7.1", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.7.1.tgz", - "integrity": "sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@textlint/ast-node-types": "15.7.1" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.2.tgz", - "integrity": "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sarif": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", - "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/vscode": { - "version": "1.120.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.120.0.tgz", - "integrity": "sha512-feaT4Rst+FkTch5zz/ZbNCxoIvo55YU80Be2kiL7OJcod4+CUYf2lUBPdIJzozNnSEMq1VRTGrWEcCGFB3fBmA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.5.tgz", - "integrity": "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@vscode/vsce": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.2.tgz", - "integrity": "sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/identity": "^4.1.0", - "@secretlint/node": "^10.1.2", - "@secretlint/secretlint-formatter-sarif": "^10.1.2", - "@secretlint/secretlint-rule-no-dotenv": "^10.1.2", - "@secretlint/secretlint-rule-preset-recommend": "^10.1.2", - "@vscode/vsce-sign": "^2.0.0", - "azure-devops-node-api": "^12.5.0", - "chalk": "^4.1.2", - "cheerio": "^1.0.0-rc.9", - "cockatiel": "^3.1.2", - "commander": "^12.1.0", - "form-data": "^4.0.0", - "glob": "^13.0.6", - "hosted-git-info": "^4.0.2", - "jsonc-parser": "^3.2.0", - "leven": "^3.1.0", - "markdown-it": "^14.1.0", - "mime": "^1.3.4", - "minimatch": "^10.2.2", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "secretlint": "^10.1.2", - "semver": "^7.5.2", - "tmp": "^0.2.3", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.5.0", - "yauzl": "^3.2.1", - "yazl": "^2.2.2" - }, - "bin": { - "vsce": "vsce" - }, - "engines": { - "node": ">= 20" - }, - "optionalDependencies": { - "keytar": "^7.7.0" - } - }, - "node_modules/@vscode/vsce-sign": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz", - "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==", - "dev": true, - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optionalDependencies": { - "@vscode/vsce-sign-alpine-arm64": "2.0.6", - "@vscode/vsce-sign-alpine-x64": "2.0.6", - "@vscode/vsce-sign-darwin-arm64": "2.0.6", - "@vscode/vsce-sign-darwin-x64": "2.0.6", - "@vscode/vsce-sign-linux-arm": "2.0.6", - "@vscode/vsce-sign-linux-arm64": "2.0.6", - "@vscode/vsce-sign-linux-x64": "2.0.6", - "@vscode/vsce-sign-win32-arm64": "2.0.6", - "@vscode/vsce-sign-win32-x64": "2.0.6" - } - }, - "node_modules/@vscode/vsce-sign-alpine-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz", - "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "alpine" - ] - }, - "node_modules/@vscode/vsce-sign-alpine-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz", - "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "alpine" - ] - }, - "node_modules/@vscode/vsce-sign-darwin-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz", - "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@vscode/vsce-sign-darwin-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz", - "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@vscode/vsce-sign-linux-arm": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz", - "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-linux-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz", - "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-linux-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz", - "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-win32-arm64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz", - "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/vsce-sign-win32-x64": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz", - "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-escapes": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", - "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/azure-devops-node-api": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", - "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" - } - }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", - "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binaryextensions": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", - "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "editions": "^6.21.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/boundary": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", - "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cheerio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", - "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.1.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.19.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cockatiel": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", - "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/editions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz", - "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "version-range": "^4.15.0" - }, - "engines": { - "ecmascript": ">= es5", - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.360", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz", - "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.21.6", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz", - "integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/esbuild-loader": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-4.5.0.tgz", - "integrity": "sha512-rVYe97IN1+VoealVHQ3STEPbfTm+vvPk7AZPrL53Pt6JUGBhHTnIqyaow7EveMFlmQ2A1bLp7q19sP4PppaCDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.28.1", - "get-tsconfig": "^4.10.1", - "loader-utils": "^2.0.4", - "webpack-sources": "^3.3.4" - }, - "funding": { - "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" - }, - "peerDependencies": { - "webpack": "^4.40.0 || ^5.0.0" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "license": "(MIT OR WTFPL)", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/fs-extra": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", - "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-tsconfig": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", - "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/index-to-position": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", - "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istextorbinary": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", - "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "binaryextensions": "^6.11.0", - "editions": "^6.21.0", - "textextensions": "^6.11.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", - "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", - "dev": true, - "license": "MIT", - "dependencies": { - "jws": "^4.0.1", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/linkify-it": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", - "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", - "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/markdown-it": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", - "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/markdown-it" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.1", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true, - "license": "ISC" - }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-abi": { - "version": "3.92.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz", - "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", - "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-sarif-builder": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz", - "integrity": "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/sarif": "^2.1.7", - "fs-extra": "^11.1.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", - "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.1.0", - "type-fest": "^4.39.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-semver": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^5.1.0" - } - }, - "node_modules/parse-semver/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc-config-loader": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz", - "integrity": "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "js-yaml": "^4.1.1", - "json5": "^2.2.3", - "require-from-string": "^2.0.2" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } - }, - "node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/secretlint": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz", - "integrity": "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/config-creator": "^10.2.2", - "@secretlint/formatter": "^10.2.2", - "@secretlint/node": "^10.2.2", - "@secretlint/profiler": "^10.2.2", - "debug": "^4.4.1", - "globby": "^14.1.0", - "read-pkg": "^9.0.1" - }, - "bin": { - "secretlint": "bin/secretlint.js" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shelljs": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", - "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "execa": "^1.0.0", - "fast-glob": "^3.3.2", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/shx": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", - "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.8", - "shelljs": "^0.9.2" - }, - "bin": { - "shx": "lib/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", - "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/structured-source": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", - "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boundary": "^2.0.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", - "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terminal-link": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz", - "integrity": "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "supports-hyperlinks": "^3.2.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.47.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", - "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@minify-html/node": { - "optional": true - }, - "@swc/core": { - "optional": true - }, - "@swc/css": { - "optional": true - }, - "@swc/html": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "cssnano": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "html-minifier-terser": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "postcss": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/textextensions": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", - "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "editions": "^6.21.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/tmp": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", - "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-loader": { - "version": "9.5.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", - "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-rest-client": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/underscore": { - "version": "1.13.8", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", - "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.27.2.tgz", - "integrity": "sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/version-range": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz", - "integrity": "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==", - "dev": true, - "license": "Artistic-2.0", - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/vscode-jsonrpc": { - "version": "9.0.0-next.11", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.11.tgz", - "integrity": "sha512-u6LElQNbSiE9OugEEmrUKwH6+8BpPz2S5MDHvQUqHL//I4Q8GPikKLOUf856UnbLkZdhxaPrExac1lA3XwpIPA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "10.0.0-next.21", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0-next.21.tgz", - "integrity": "sha512-nXZPEam+j5pEFYcXnsjBhmjfzg5a/wYJT5iG4cBTJ7UJ6bhJkoU80mlAEPStJpPYHrgWaaPonwymQE21ROkvMw==", - "license": "MIT", - "dependencies": { - "minimatch": "^10.1.2", - "semver": "^7.7.1", - "vscode-languageserver-protocol": "3.17.6-next.17" - }, - "engines": { - "vscode": "^1.91.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "10.0.0-next.17", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.17.tgz", - "integrity": "sha512-/bwO/E3RUzIkQ1BQ70gcLdZeM8xvK0JS7gMvtug7yiH0dzTjciqqQTUh3H9NEXsqYEjLzGwiXgRUkt6Z8fQV0Q==", - "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "3.17.6-next.17" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.6-next.17", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.17.tgz", - "integrity": "sha512-HW72YcFsuckfK6oPVuysRXhKiIFJoUvXgspPHvCMWpwe2x9aq2oGZDUSvKx4m/qUGB27+iu8ijAxsFlljYl2IQ==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "9.0.0-next.11", - "vscode-languageserver-types": "3.17.6-next.6" - } - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.6-next.6", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.6.tgz", - "integrity": "sha512-aiJY5/yW+xzw7KPNlwi3gQtddq/3EIn5z8X8nCgJfaiAij2R1APKePngv+MUdLdYJBVTLu+Qa0ODsT+pHgYguQ==", - "license": "MIT" - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.107.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.0.tgz", - "integrity": "sha512-PSxeHk/dmLYZlnTU+vL1Gej6Evg5RNtl3flhxBresfznFnzxinHMzHKloHnywM/3ouQv7/AlZCswWDIkNSggUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.21.4", - "es-module-lexer": "^2.1.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "loader-runner": "^4.3.2", - "mime-db": "^1.54.0", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.5.0", - "watchpack": "^2.5.1", - "webpack-sources": "^3.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz", - "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yauzl": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz", - "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3" - } - } - } -} diff --git a/packages/vscode-pyright/package.json b/packages/vscode-pyright/package.json index d84e6512b3bc..7933e9f1ca5b 100644 --- a/packages/vscode-pyright/package.json +++ b/packages/vscode-pyright/package.json @@ -1575,11 +1575,11 @@ "scripts": { "clean": "shx rm -rf ./dist ./out", "prepackage": "node ./build/renamePackage.js pyright", - "package": "vsce package", + "package": "vsce package --no-dependencies", "postpackage": "node ./build/renamePackage.js vscode-pyright", - "vscode:prepublish": "node ./build/checkPackage.js && npm run clean && rspack build -c rspack.config.js --mode production", + "vscode:prepublish": "node ./build/checkPackage.js && pnpm run clean && rspack build -c rspack.config.js --mode production", "webpack": "rspack build -c rspack.config.js --mode development", - "webpack-dev": "npm run clean && rspack build -c rspack.config.js --mode development --watch" + "webpack-dev": "pnpm run clean && rspack build -c rspack.config.js --mode development --watch" }, "dependencies": { "vscode-jsonrpc": "^9.0.0-next.8", @@ -1588,11 +1588,12 @@ "vscode-languageserver-protocol": "^3.17.6-next.13" }, "devDependencies": { - "@rspack/cli": "^2.0.5", - "@rspack/core": "^2.0.5", + "@rspack/cli": "^2.1.3", + "@rspack/core": "^2.1.3", "@types/node": "^25.9.2", "@types/vscode": "^1.101.0", "@vscode/vsce": "^3.9.2", + "chalk": "^4.1.2", "esbuild-loader": "^4.5.0", "form-data": "^4.0.6", "shx": "^0.4.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000000..06cd354d6a02 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,10622 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + tar: 7.5.11 + +importers: + + .: + devDependencies: + '@types/glob': + specifier: ^8.1.0 + version: 8.1.0 + '@types/node': + specifier: ^25.9.2 + version: 25.9.4 + '@types/yargs': + specifier: ^16.0.11 + version: 16.0.11 + '@typescript-eslint/eslint-plugin': + specifier: 8.60.1 + version: 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4)(typescript@6.0.3))(eslint@9.39.4)(typescript@6.0.3) + '@typescript-eslint/parser': + specifier: 8.60.1 + version: 8.60.1(eslint@9.39.4)(typescript@6.0.3) + axios: + specifier: ^1.12.2 + version: 1.18.1 + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + eslint: + specifier: ^9.0.0 + version: 9.39.4 + eslint-config-prettier: + specifier: ^8.10.2 + version: 8.10.2(eslint@9.39.4) + eslint-plugin-simple-import-sort: + specifier: ^10.0.0 + version: 10.0.0(eslint@9.39.4) + glob: + specifier: ^11.1.0 + version: 11.1.0 + jsonc-parser: + specifier: ^3.3.1 + version: 3.3.1 + lerna: + specifier: 9.0.7 + version: 9.0.7(@types/node@25.9.4) + npm-check-updates: + specifier: ^19.6.3 + version: 19.6.6 + p-queue: + specifier: ^6.6.2 + version: 6.6.2 + prettier: + specifier: 2.8.8 + version: 2.8.8 + syncpack: + specifier: ~15.3.1 + version: 15.3.2 + tmp: + specifier: ^0.2.7 + version: 0.2.7 + typescript: + specifier: ~6.0.3 + version: 6.0.3 + word-wrap: + specifier: 1.2.5 + version: 1.2.5 + yargs: + specifier: ^16.2.0 + version: 16.2.2 + + packages/pyright: + devDependencies: + '@rspack/cli': + specifier: ^2.1.3 + version: 2.1.3(@rspack/core@2.1.3) + '@rspack/core': + specifier: ^2.1.3 + version: 2.1.3 + '@types/node': + specifier: ^25.9.2 + version: 25.9.4 + copy-webpack-plugin: + specifier: ^14.0.0 + version: 14.0.0(webpack@5.108.4) + esbuild-loader: + specifier: ^4.5.0 + version: 4.5.0(webpack@5.108.4) + shx: + specifier: ^0.4.0 + version: 0.4.0 + ts-loader: + specifier: ^9.5.4 + version: 9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.108.4) + typescript: + specifier: ~6.0.3 + version: 6.0.3 + webpack: + specifier: ^5.104.1 + version: 5.108.4 + optionalDependencies: + fsevents: + specifier: ~2.3.3 + version: 2.3.3 + + packages/pyright-internal: + dependencies: + '@yarnpkg/fslib': + specifier: 2.10.4 + version: 2.10.4 + '@yarnpkg/libzip': + specifier: 2.3.0 + version: 2.3.0 + chalk: + specifier: ^4.1.2 + version: 4.1.2 + chokidar: + specifier: ^3.6.0 + version: 3.6.0 + command-line-args: + specifier: ^5.2.1 + version: 5.2.1 + fs-extra: + specifier: ^11.3.3 + version: 11.3.6 + jsonc-parser: + specifier: ^3.3.1 + version: 3.3.1 + smol-toml: + specifier: ^1.6.1 + version: 1.7.0 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + tmp: + specifier: ^0.2.7 + version: 0.2.7 + vscode-jsonrpc: + specifier: ^9.0.0-next.8 + version: 9.0.1 + vscode-languageserver: + specifier: ^10.0.0-next.13 + version: 10.1.0 + vscode-languageserver-protocol: + specifier: ^3.17.6-next.13 + version: 3.18.2 + vscode-languageserver-textdocument: + specifier: ^1.0.11 + version: 1.0.12 + vscode-languageserver-types: + specifier: ^3.17.6-next.6 + version: 3.18.0 + vscode-uri: + specifier: ^3.1.0 + version: 3.1.0 + devDependencies: + '@rspack/cli': + specifier: ^2.1.3 + version: 2.1.3(@rspack/core@2.1.3) + '@rspack/core': + specifier: ^2.1.3 + version: 2.1.3 + '@types/command-line-args': + specifier: ^5.2.3 + version: 5.2.3 + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 + '@types/jest': + specifier: ^30.0.0 + version: 30.0.0 + '@types/lodash': + specifier: ^4.17.24 + version: 4.17.24 + '@types/node': + specifier: ^25.9.2 + version: 25.9.4 + '@types/tmp': + specifier: ^0.2.6 + version: 0.2.6 + esbuild-loader: + specifier: ^4.5.0 + version: 4.5.0(webpack@5.108.4) + jest: + specifier: ^30.2.0 + version: 30.4.2(@types/node@25.9.4) + jest-environment-node: + specifier: ^30.2.0 + version: 30.4.1 + jest-junit: + specifier: ^17.0.0 + version: 17.0.0 + shx: + specifier: ^0.4.0 + version: 0.4.0 + ts-jest: + specifier: ^29.4.7 + version: 29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@25.9.4))(typescript@6.0.3) + ts-loader: + specifier: ^9.5.4 + version: 9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.108.4) + typescript: + specifier: ~6.0.3 + version: 6.0.3 + webpack: + specifier: ^5.104.1 + version: 5.108.4 + word-wrap: + specifier: 1.2.5 + version: 1.2.5 + + packages/pyright-typeserver: + devDependencies: + '@rspack/cli': + specifier: ^2.1.3 + version: 2.1.3(@rspack/core@2.1.3) + '@rspack/core': + specifier: ^2.1.3 + version: 2.1.3 + '@types/node': + specifier: ^25.9.2 + version: 25.9.4 + copy-webpack-plugin: + specifier: ^14.0.0 + version: 14.0.0(webpack@5.108.4) + esbuild-loader: + specifier: ^4.5.0 + version: 4.5.0(webpack@5.108.4) + shx: + specifier: ^0.4.0 + version: 0.4.0 + ts-loader: + specifier: ^9.5.4 + version: 9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.108.4) + typescript: + specifier: ~6.0.3 + version: 6.0.3 + webpack: + specifier: ^5.104.1 + version: 5.108.4 + optionalDependencies: + fsevents: + specifier: ~2.3.3 + version: 2.3.3 + + packages/vscode-pyright: + dependencies: + vscode-jsonrpc: + specifier: ^9.0.0-next.8 + version: 9.0.1 + vscode-languageclient: + specifier: ^10.0.0-next.16 + version: 10.1.0 + vscode-languageserver: + specifier: ^10.0.0-next.13 + version: 10.1.0 + vscode-languageserver-protocol: + specifier: ^3.17.6-next.13 + version: 3.18.2 + devDependencies: + '@rspack/cli': + specifier: ^2.1.3 + version: 2.1.3(@rspack/core@2.1.3) + '@rspack/core': + specifier: ^2.1.3 + version: 2.1.3 + '@types/node': + specifier: ^25.9.2 + version: 25.9.4 + '@types/vscode': + specifier: ^1.101.0 + version: 1.125.0 + '@vscode/vsce': + specifier: ^3.9.2 + version: 3.9.2 + chalk: + specifier: ^4.1.2 + version: 4.1.2 + esbuild-loader: + specifier: ^4.5.0 + version: 4.5.0(webpack@5.108.4) + form-data: + specifier: ^4.0.6 + version: 4.0.6 + shx: + specifier: ^0.4.0 + version: 0.4.0 + ts-loader: + specifier: ^9.5.4 + version: 9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.108.4) + typescript: + specifier: ~6.0.3 + version: 6.0.3 + webpack: + specifier: ^5.104.1 + version: 5.108.4 + +packages: + + '@azu/format-text@1.0.2': + resolution: {integrity: sha1-q9RtqyQi4xK9G/428NQnq2A5gl0=} + + '@azu/style-format@1.0.1': + resolution: {integrity: sha1-s2Q68MX+6dU+aal8g1xAS9yA95I=} + + '@azure/abort-controller@2.1.2': + resolution: {integrity: sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=} + engines: {node: '>=18.0.0'} + + '@azure/core-auth@1.10.1': + resolution: {integrity: sha1-aKF/qGHr0U9v0xQFV5g1Xva+3xs=} + engines: {node: '>=20.0.0'} + + '@azure/core-client@1.10.2': + resolution: {integrity: sha1-qWTgA3DfN8Cch3C7XG8X/vH8SVY=} + engines: {node: '>=20.0.0'} + + '@azure/core-rest-pipeline@1.24.0': + resolution: {integrity: sha1-dYIVf/6/5g0Kf8AP0pIgPYy9P0A=} + engines: {node: '>=20.0.0'} + + '@azure/core-tracing@1.3.1': + resolution: {integrity: sha1-6XEEXJAeqcEQYWsOHbJyUHeB1fY=} + engines: {node: '>=20.0.0'} + + '@azure/core-util@1.13.1': + resolution: {integrity: sha1-bf8v9tPJxkMMb007PmXeUx8Quv4=} + engines: {node: '>=20.0.0'} + + '@azure/identity@4.13.1': + resolution: {integrity: sha1-vcCRZYuqWaR+6furSHpLsBhym8M=} + engines: {node: '>=20.0.0'} + + '@azure/logger@1.3.0': + resolution: {integrity: sha1-VQHPhdT1JjBgKozHXfdlaMlpqCc=} + engines: {node: '>=20.0.0'} + + '@azure/msal-browser@5.17.0': + resolution: {integrity: sha1-Sx+NQg74G72JRylZkK4GCbCLodw=} + engines: {node: '>=0.8.0'} + + '@azure/msal-common@16.11.1': + resolution: {integrity: sha1-/Bx317GbKOoLkGGKg+D3+WfpEOk=} + engines: {node: '>=0.8.0'} + + '@azure/msal-node@5.4.0': + resolution: {integrity: sha1-H+WD78vMBb/uw7aUUCrwowFvIwE=} + engines: {node: '>=20'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha1-8vu/6ofESiFZDsUVt3iywm2IZuc=} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha1-bwI38PNtLlHAVwpjb67Z0tDv5ik=} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha1-gMELFySAgpaLV6hXuRZAlx8gcPc=} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha1-zKC4gn5rzzuhdniOfzsYCtbbL6M=} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha1-eh3vcEMCQBxH9k+oVYnpdK4hcEI=} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha1-8EqW+9hHMkGxB5JD9bPwOjAQq3s=} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha1-7yUEilGOgo1zk/rFiC3dc5Idc5Y=} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha1-sGJ0elmXuhOGNyATKLv/d5YFdK4=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha1-wKB2bxoTYX2KF0B9erj51IYiXqQ=} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha1-fwhx2Zgk0jE31g+G/PYTD9WhtR8=} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha1-vYcITO0MeW7Ea9pJLeboPSnon8I=} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha1-zzFb6UAhOzVOtKvMC9Aevj9zvCo=} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha1-Rav951SJl+NDdsPmn+tHXP+0pgc=} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha1-g3uHOHy/XsVTDLY0s8Yi9o7bkzQ=} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha1-TJpvZp9dDN8bkKFnHpoUa+UwDOo=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha1-GV34mxRrS3izv4l/16JXyEZZ1AY=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha1-YRUmRRbpXq0PNaQXEJBmEuRH9gU=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha1-7mATSMNw+jNNIge+FYd3SWUh/VE=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha1-YiwW+a1jeC/m6D2tx+QDMHRLfx4=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha1-ypHvRjA1MESLkGZSusLp/plB9pk=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha1-DcZnHsDqIrbpShEU+FeXDNOd4a0=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha1-fCk4iTIxPtWEE6A0MEjXXZL7WyQ=} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.29.7': + resolution: {integrity: sha1-TZ1ABPZFzdME3pWMclFieE7KxwA=} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha1-xHsHpBuV2gkH0Ca13YlNmN59Ly0=} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha1-gAXjHYJxLuetrvbiPGO3GmJ3CpI=} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha1-daLotRy3WKdVPWgEpZMteqznXDk=} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha1-OAzMjyQS6iLR2XLff47iOjucdGc=} + + '@emnapi/core@1.11.1': + resolution: {integrity: sha1-ueEGTzprFjHiQeY460jXNr/TcqY=} + + '@emnapi/core@1.4.5': + resolution: {integrity: sha1-v7sMu7ufluxOLE/ZF7e75Ulc7Ms=} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha1-SyYMDTU0IE6YxhELjbGph9JuyHw=} + + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha1-WPHz1dgamxL3k6tojJY3GQECfCQ=} + + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha1-xncQ0GYQcPOEGLZHRYTxWd44q6k=} + + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha1-cD/AlNlp4nOxtxwpJSOy95KGK/Q=} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha1-KP7SGhuhznl8RKBwq8lNQvOuhUg=} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha1-TJO+z1v6OxPRu9zAau44MhrYE5o=} + + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha1-EHPl3ubdVAQQeEmQ63PkrNJcmBM=} + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha1-egGo0uwvuy2seK2tCbD6eB5Agr4=} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha1-tUCifRTkr9BYSWpNvsTT9BTbEQo=} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha1-cEvSl95tdi3lTqu+r79V9nVqvi8=} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha1-0csWbTSw+/D+irRgpVlPJKN4cB4=} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha1-EDSyZFf8iGNo/mG70J9lP2r6jlQ=} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha1-ZVVqQyoeTXIDLYIYwZMvzKGkl3I=} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha1-LmHgWS+QMNfj2uGO4l68U1kYrvY=} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha1-yV7CiZWe+AecTcqBeh4sS+Zrm9M=} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha1-QLIhdd2gYYLz7oFBGGxf8wTEpxc=} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha1-wJoPZ5F1kqwN6JKpvk04FN69Kmw=} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha1-pYD5xnZ5eDOJHlGfx6EzfIr9jbM=} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha1-RkUs8yHcf56Rwvp4Cla7Vuec1os=} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha1-QhGzGE3WYI9T3LIuOfXTTuCIUsg=} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha1-aXhXwqYcubC2u2ZS5AwdxeHKjl0=} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha1-0ZKUPrFGpArExkl9DPe+NbmGvwg=} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha1-rOoDVtoODrwI+Xz3ucLkAeHmSNw=} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha1-bww84MtkxTS3DExF7LLBbTTjXf0=} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha1-i813B3oNzjN4tXT+2ybSolO3PTY=} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha1-5/sqAemcgwyU5mI82f77TI+1g0c=} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha1-xSkJNy24uG4sVeBaiUADO1Zgo7I=} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha1-xCe5vlpkwmL/mn63C1+7qt9EbGw=} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha1-3JsUe6yi5sSzyFVxdB70hgpIkJc=} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha1-zoZtEt8TwV5MmfBzo9Rm9uBkmzo=} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha1-dGjjaS0B1inVlB5dg4F7uA+eObQ=} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha1-pbwAY/sryrbQ7WPyoVN5WLwmnsY=} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha1-EAZO5E9DR7kMmgK0Rrv4CpFjKxI=} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha1-TpCvZ7xR3e5s3vUoTt9XLsN2tZU=} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha1-vM32Fbz3tujbgw7AuNIcmiXeWXs=} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha1-8p4iBXrVMWzyODbO6aNMgf/8t+Y=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha1-G9AGzut+LlWyt3OrMY0wDhpmrto=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha1-dyJYIEE9lhdQnak0IZCiAZ54dhw=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha1-wTF5PPwae5bySoPgqLvUuIFVjGA=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha1-o/g7/G/ZvzOoU9+s0LSbOY61lsE=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha1-biEmoTR+hqTe34cG7Gf/jhB+u60=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha1-l3nj/Zt+4zVxpXQ1z0M1oXlKbLI=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@gar/promise-retry@1.0.3': + resolution: {integrity: sha1-ZecmQo55S8RFOUjgpB5t5CFc6LA=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha1-qCcsoDsqz0kmcCIrIyC2xCG/3mA=} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha1-j4AMzME/T4zTEW4tnAqUk52j4+0=} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha1-8qCfYgEjkLK/8/xvskjd7IwJoJA=} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha1-r1smkaIrRL6EewyoFkHF+2rQFyw=} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha1-wrnS43TuYsWG062+qHGZsdenpro=} + engines: {node: '>=18.18'} + + '@hutson/parse-repository-url@3.0.2': + resolution: {integrity: sha1-mMI8lQo9m2yPDa7QbabDrwaYE0A=} + engines: {node: '>=6.9.0'} + + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha1-Z0pMTYGtRgaVyyofxp14zRh/M34=} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha1-4Ug+ZRnW/++XKBpU0qW6oNgbPzs=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha1-YQxKzXeX2UiQpuLd4smOseiR3RI=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha1-U1l5/z/0/h58xPg+IyBQTHQ7fiA=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha1-/gRqO/2ukxJi3pjBBSQ315QyLgs=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha1-o4tfMiJtdXF8Nwvf7XkjE7kr3AU=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha1-wjmIKR7mdikP2rP9MG5kAQptE7g=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha1-27Se2A3xHfdCaAI7SWrF2azSKzo=} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha1-d4aDtMTE2V0F1LBcSoVJZLc1ZbQ=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha1-P97CVA1kIJP9dSaBj9jUvcczUJQ=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha1-ufUYfIyS/Xqp7Oudjy6tDX57AA0=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha1-4UNsBITPBMIlSMdOLNI56YnV+Ec=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha1-MTyMP/zLfUHpkMYGRlcmtKiYoDM=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha1-TMb9V03NQ05DmbrcN8dCw/1TSsg=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha1-Ksj8qWCRPxjx0bNTI+2PzSfYkyM=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha1-Ee1WTseEMqIA6iYBohLSSvgVDVA=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha1-s3Znt7wYHBaHgiWbq0JHT79StVA=} + engines: {node: '>=12'} + + '@isaacs/cliui@9.0.0': + resolution: {integrity: sha1-TQo/EnBYBDvy5+4Wnq8w7ZATAvM=} + engines: {node: '>=18'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha1-LVmuOrSzj7QnC/oj0w+OLobH/jI=} + engines: {node: '>=18.0.0'} + + '@isaacs/string-locale-compare@1.1.0': + resolution: {integrity: sha1-KRwifpP9QHqW7NWYeaNYCRIOQys=} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha1-/T2x1Z7PfPEh6AZQu4ZxL5tV7O0=} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha1-jcmvoqwVBssaWPiZQPHBJERsjfM=} + engines: {node: '>=8'} + + '@jest/console@30.4.1': + resolution: {integrity: sha1-5XclZ4w/zJ9+VZfmkeRU/uTOCTk=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/core@30.4.2': + resolution: {integrity: sha1-PUCB+JS34v9X0EoxhCQWvQe3bDI=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha1-Dt7erk0HH1yP/jZ40V86G+CRVr4=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/diff-sequences@30.4.0': + resolution: {integrity: sha1-i+LSYOYkHWzd3dECwwT+E7T8jj4=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/environment@30.4.1': + resolution: {integrity: sha1-GrW3NuPOYzbVngB2X6JAGWSfGjA=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect-utils@30.4.1': + resolution: {integrity: sha1-4MdDbVKwhhDekCeEGRLcNzSugLI=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/expect@30.4.1': + resolution: {integrity: sha1-f+/Gf4bCyyrzyG2dQf5KHXSGK4w=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/fake-timers@30.4.1': + resolution: {integrity: sha1-rS00EtXQBaPkV0C9TI7hzK4vieE=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/get-type@30.1.0': + resolution: {integrity: sha1-T8tNwuvPCBG+HAT9HLecLbpDHLw=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/globals@30.4.1': + resolution: {integrity: sha1-Y3aXXhN++HkmNJtedczyMPSR6EM=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/pattern@30.4.0': + resolution: {integrity: sha1-/LUZ7qzCXKo3aPeHWVonr6FTAq4=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/reporters@30.4.1': + resolution: {integrity: sha1-QdQlM/GZ5zeuNSoKCzL/MAgm7+I=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@30.4.1': + resolution: {integrity: sha1-w3A/3XE1fiyDqlm9OEaeYKEVKcY=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/snapshot-utils@30.4.1': + resolution: {integrity: sha1-D4KUiLnUaxGIVKFqVtUJo8bZ4GQ=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/source-map@30.0.1': + resolution: {integrity: sha1-MF6+xQRo8T5liz1cJvhRB6ViCqo=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-result@30.4.1': + resolution: {integrity: sha1-4hFG67s+H392w8SYBdnzmuRfjeE=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/test-sequencer@30.4.1': + resolution: {integrity: sha1-yvml4JJO07BJV0Qe356M72qAQ5E=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/transform@30.4.1': + resolution: {integrity: sha1-FkbN24ANONnE4w/s/Upuug+orPo=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jest/types@30.4.1': + resolution: {integrity: sha1-95tkeoXLL/SpDMVZhLMdroINsfc=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha1-Y0Khn0Q0dRjJPkOxrGnes8Rlah8=} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha1-N1xHbRlylHhRuh4Vro8SMEdEWqE=} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha1-eg7mAfYPmaIMfHxf8MgDiMEYm9Y=} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha1-shg1y9Nttla4V8KtAuvUE8wTqbo=} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha1-aRKwDSxjHA0Vzhp6tXzWV/Ko+Lo=} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha1-2xXWeByTHzolGj2sOVAcmKYIL9A=} + + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha1-0neIF28lDYbkmAgePF/0ihdgaRg=} + + '@napi-rs/wasm-runtime@1.1.6': + resolution: {integrity: sha1-7TOAbQ+b6Y3HbQw9T9hy/acBtdU=} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=} + engines: {node: '>= 8'} + + '@npmcli/agent@4.0.2': + resolution: {integrity: sha1-nmWcJHQpTLiL04L+9dOFfcFPy/Y=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/arborist@9.1.6': + resolution: {integrity: sha1-shFBt+SGBgUIRLIjHsg/0Wt+oPY=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + '@npmcli/fs@4.0.0': + resolution: {integrity: sha1-oesa7d79Kko0fsoPqzC8YsDhwPI=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/fs@5.0.0': + resolution: {integrity: sha1-Z0YZdxkHNCs9GsGXqvHe62V+NTk=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/git@6.0.3': + resolution: {integrity: sha1-lmy7IoUUNyh33lJE2yhbGZg286o=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/git@7.0.2': + resolution: {integrity: sha1-aAwycf5RQBwH7kEHa+Z4hR5gD/A=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/installed-package-contents@3.0.0': + resolution: {integrity: sha1-LBFw/09w9orxJeKELhhTqTIj5NE=} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + '@npmcli/installed-package-contents@4.0.0': + resolution: {integrity: sha1-GOUHBwTP4CePmuSAOFWLbv1DhCY=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + '@npmcli/map-workspaces@5.0.3': + resolution: {integrity: sha1-W4h+wLU1orpk0dM4hnMmornAQdE=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/metavuln-calculator@9.0.3': + resolution: {integrity: sha1-V7Mw8/uMo02yeCrVNJ6kOEvtnJY=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/name-from-folder@3.0.0': + resolution: {integrity: sha1-7UmxjRa5VBSfMSQOFmMM/sURzVc=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/name-from-folder@4.0.0': + resolution: {integrity: sha1-tNUWrk+rXtTo6AMqv/NIhwP8JKM=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/node-gyp@4.0.0': + resolution: {integrity: sha1-AfkAuuYvDyf5paEntA1EPd+51MY=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/node-gyp@5.0.0': + resolution: {integrity: sha1-NUdaWLXXkXZKclIjEZehTe7+jkc=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/package-json@7.0.2': + resolution: {integrity: sha1-msicCNamN70NuKc3F9U+xF2H+lw=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/promise-spawn@8.0.3': + resolution: {integrity: sha1-CMXkwcq3/4SORC5LGbvw7mmdEz8=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/promise-spawn@9.0.1': + resolution: {integrity: sha1-IOgMvdLyStJjoV3j67sWc8uCAFs=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/query@4.0.1': + resolution: {integrity: sha1-+KU4gH8tAFnAvuf0ofcStzrkdgM=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/redact@3.2.2': + resolution: {integrity: sha1-SmdF4K4mkSCtIjeAzjdNbFmuNM0=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@npmcli/redact@4.0.0': + resolution: {integrity: sha1-yREh4Ct1WamXYUosEFfNf8Z2CMQ=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@npmcli/run-script@10.0.3': + resolution: {integrity: sha1-hcFs2JPkTK1e3e1EGwAtih06io4=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@nx/devkit@22.7.6': + resolution: {integrity: sha1-kgcNQLlfqZ+6d5Sf36Qp523C4HM=} + peerDependencies: + nx: '>= 21 <= 23 || ^22.0.0-0' + + '@nx/nx-darwin-arm64@22.7.6': + resolution: {integrity: sha1-CRPaDJ2jmAnvn2eDJRYOE6isYsQ=} + cpu: [arm64] + os: [darwin] + + '@nx/nx-darwin-x64@22.7.6': + resolution: {integrity: sha1-Ulq8noOhewDJB6AbEdSAeZoTBPs=} + cpu: [x64] + os: [darwin] + + '@nx/nx-freebsd-x64@22.7.6': + resolution: {integrity: sha1-d1gt0/mzw/DcapdHXL7O7Cm9uhY=} + cpu: [x64] + os: [freebsd] + + '@nx/nx-linux-arm-gnueabihf@22.7.6': + resolution: {integrity: sha1-rVs/J+gBidfbYw5VgGomQi0O/Aw=} + cpu: [arm] + os: [linux] + + '@nx/nx-linux-arm64-gnu@22.7.6': + resolution: {integrity: sha1-WojQsTOoHXSO6jvmq3ajp2jbEeg=} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@nx/nx-linux-arm64-musl@22.7.6': + resolution: {integrity: sha1-c7RKaY+7DJGpPKK+MHxKOGTF31g=} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@nx/nx-linux-x64-gnu@22.7.6': + resolution: {integrity: sha1-JpvcXWAZ9ngUpu5VDibEShfyzkk=} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@nx/nx-linux-x64-musl@22.7.6': + resolution: {integrity: sha1-dOZP4A7y0Gv3s0yWt5JnTuZAEwU=} + cpu: [x64] + os: [linux] + libc: [musl] + + '@nx/nx-win32-arm64-msvc@22.7.6': + resolution: {integrity: sha1-Vzgqcft4IDt/3RcvMJHU6z/w0Cw=} + cpu: [arm64] + os: [win32] + + '@nx/nx-win32-x64-msvc@22.7.6': + resolution: {integrity: sha1-/3dEmDFmPKFCZ+vDuFU8sUa/U68=} + cpu: [x64] + os: [win32] + + '@octokit/auth-token@4.0.0': + resolution: {integrity: sha1-QNID6oJ7nxf0KinGr7k7d0XvgMc=} + engines: {node: '>= 18'} + + '@octokit/core@5.2.2': + resolution: {integrity: sha1-JSgFcy3ptOjk9ljTS4DEybJTR2E=} + engines: {node: '>= 18'} + + '@octokit/endpoint@9.0.6': + resolution: {integrity: sha1-EU2RIQj+aS2LE5z+f8CEbf0RtsA=} + engines: {node: '>= 18'} + + '@octokit/graphql@7.1.1': + resolution: {integrity: sha1-ednz0Mlqj9E9ZBhv5cM2BtSLecw=} + engines: {node: '>= 18'} + + '@octokit/openapi-types@24.2.0': + resolution: {integrity: sha1-PVXDLqwNONoacIOpw7DMp3kk99M=} + + '@octokit/plugin-enterprise-rest@6.0.1': + resolution: {integrity: sha1-4HiWc5YY2rjafUB3xlgAN3X5VDc=} + + '@octokit/plugin-paginate-rest@11.4.4-cjs.2': + resolution: {integrity: sha1-l5oQ1Xe856OT6OZZU4h+QrCgUAA=} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-request-log@4.0.1': + resolution: {integrity: sha1-mKPKluCxBzgGZHCBEYZMuWVR+Vg=} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1': + resolution: {integrity: sha1-0KFC/0HY94krbM70WXkEn1Hsqo0=} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': ^5 + + '@octokit/request-error@5.1.1': + resolution: {integrity: sha1-uSGPnBFm5ou00MibY47cYskzSAU=} + engines: {node: '>= 18'} + + '@octokit/request@8.4.1': + resolution: {integrity: sha1-cVoBXM+ZMIeXfqQ2XER5H8RXJIY=} + engines: {node: '>= 18'} + + '@octokit/rest@20.1.2': + resolution: {integrity: sha1-HXTQxyreDWT3xUFkSNXIhfXjzMQ=} + engines: {node: '>= 18'} + + '@octokit/types@13.10.0': + resolution: {integrity: sha1-PnxrGcAjbCcGVuTqZmFIwrUf0aM=} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=} + engines: {node: '>=14'} + + '@pkgr/core@0.3.6': + resolution: {integrity: sha1-NWlwi9S+TYhwujK/HEVtrIFgDZc=} + engines: {node: ^14.18.0 || >=16.0.0} + + '@rspack/binding-darwin-arm64@2.1.3': + resolution: {integrity: sha1-M8SOr/VEGITyrq63btyGI1IMxqM=} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@2.1.3': + resolution: {integrity: sha1-di0xciv2pBKX+y9dh5D805zNIWc=} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@2.1.3': + resolution: {integrity: sha1-S/V/848X360EpRzaQmTO3BO9xMo=} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-arm64-musl@2.1.3': + resolution: {integrity: sha1-BB8MVG0ZMCpROtVstfqoroUx7Ys=} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-riscv64-gnu@2.1.3': + resolution: {integrity: sha1-dU+8dfFIrWu0XkI8mCr44x+d9FA=} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-riscv64-musl@2.1.3': + resolution: {integrity: sha1-RKZd966TINjY8PM/0DCh1N5PlkI=} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rspack/binding-linux-x64-gnu@2.1.3': + resolution: {integrity: sha1-sT/HsgO4THBlhqqIWKPoopil6ls=} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rspack/binding-linux-x64-musl@2.1.3': + resolution: {integrity: sha1-a5bLmhCpj4ZcH5JuBtBzPSzV/58=} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rspack/binding-wasm32-wasi@2.1.3': + resolution: {integrity: sha1-TWhyegZXJ8uv2j3vFLdXm2hCNBY=} + cpu: [wasm32] + + '@rspack/binding-win32-arm64-msvc@2.1.3': + resolution: {integrity: sha1-0iYXAHmq69YrjgCE9rS1I6lrWIQ=} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@2.1.3': + resolution: {integrity: sha1-F5IeTesHdap09TTlt/o3E48Gphc=} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@2.1.3': + resolution: {integrity: sha1-Fv9YyQ2HK3EovkorROxAE0Gx2yQ=} + cpu: [x64] + os: [win32] + + '@rspack/binding@2.1.3': + resolution: {integrity: sha1-wJbAtyD+rBjMrDPipz+fdj8TveM=} + + '@rspack/cli@2.1.3': + resolution: {integrity: sha1-05KXGDVF7IMErIhyYBwoHuCYFMs=} + hasBin: true + peerDependencies: + '@rspack/core': ^2.0.0-0 + '@rspack/dev-server': ^2.0.0-0 + peerDependenciesMeta: + '@rspack/dev-server': + optional: true + + '@rspack/core@2.1.3': + resolution: {integrity: sha1-CgizhaJbbT0+CpDg5IOOZP4VXuw=} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 + '@swc/helpers': ^0.5.23 + peerDependenciesMeta: + '@module-federation/runtime-tools': + optional: true + '@swc/helpers': + optional: true + + '@secretlint/config-creator@10.2.2': + resolution: {integrity: sha1-XWRug7sqrPvVIYlozrNYQgtMLLM=} + engines: {node: '>=20.0.0'} + + '@secretlint/config-loader@10.2.2': + resolution: {integrity: sha1-p3kMjQMB209tR+b7Dw+Ugv5lLZo=} + engines: {node: '>=20.0.0'} + + '@secretlint/core@10.2.2': + resolution: {integrity: sha1-zUHVwnugfCF/CvTg4k29/l72IEI=} + engines: {node: '>=20.0.0'} + + '@secretlint/formatter@10.2.2': + resolution: {integrity: sha1-yM41gDrQ2EHMm25wPW+raKFE6cA=} + engines: {node: '>=20.0.0'} + + '@secretlint/node@10.2.2': + resolution: {integrity: sha1-HYpu1iAXC/TymCmjqRh4aCxDxNk=} + engines: {node: '>=20.0.0'} + + '@secretlint/profiler@10.2.2': + resolution: {integrity: sha1-gsCFqxlmgGdju/btuDCYfyXU55c=} + + '@secretlint/resolver@10.2.2': + resolution: {integrity: sha1-nDw+L+8AZ5/M6ZeT524Z5XW3VyE=} + + '@secretlint/secretlint-formatter-sarif@10.2.2': + resolution: {integrity: sha1-XEBEpqbJ2V4vVycNYYSTHwl51kk=} + + '@secretlint/secretlint-rule-no-dotenv@10.2.2': + resolution: {integrity: sha1-6kPcwqvR2sMoiwVmEDYfMZ9c5uk=} + engines: {node: '>=20.0.0'} + + '@secretlint/secretlint-rule-preset-recommend@10.2.2': + resolution: {integrity: sha1-J7F8OLNgxniIJtKPzaKKxul3LQs=} + engines: {node: '>=20.0.0'} + + '@secretlint/source-creator@10.2.2': + resolution: {integrity: sha1-1gC21Eh4Wc3Tm7sc+M90RUCz96E=} + engines: {node: '>=20.0.0'} + + '@secretlint/types@10.2.2': + resolution: {integrity: sha1-FBLY9pn9kAGCy/TCkjqd+esyHKc=} + engines: {node: '>=20.0.0'} + + '@sigstore/bundle@4.0.0': + resolution: {integrity: sha1-hU7aQ+tqWTUgN+SQABd8iQRXL4M=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/core@3.2.1': + resolution: {integrity: sha1-Tv1KsPWedottr2VhICS6kleH3nI=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/protobuf-specs@0.5.1': + resolution: {integrity: sha1-VAHkRLarDbfRlpyRxD55VJJ6Uv4=} + engines: {node: ^18.17.0 || >=20.5.0} + + '@sigstore/sign@4.1.1': + resolution: {integrity: sha1-NHZf5KGQ1pM0DAdxo9FQo5e8/FU=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/tuf@4.0.2': + resolution: {integrity: sha1-fS+iq81a+luvdSZx0UocbtDtMZY=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sigstore/verify@3.1.1': + resolution: {integrity: sha1-E8HBz/KP6B9mLeKdhbpa4Ej8vY0=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha1-TxNpI08uz2k4ZkdsOy4bVNKp1o4=} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha1-cZ33+0F2a8FDNp6qDdVtjch8mVg=} + engines: {node: '>=18'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha1-ECk1fkTKkBphVYX20nc428iQhM0=} + + '@sinonjs/fake-timers@15.4.0': + resolution: {integrity: sha1-XUDBUanmYHX+RSC+xAvM/lSTGWI=} + + '@textlint/ast-node-types@15.7.1': + resolution: {integrity: sha1-IPP5ER1zW+cIMb5hzLPo1EIKjHE=} + + '@textlint/linter-formatter@15.7.1': + resolution: {integrity: sha1-bDwS+vgDKKq3h53BfD3LG8oY9vU=} + + '@textlint/module-interop@15.7.1': + resolution: {integrity: sha1-Vdha/cscgg/9tQ+R3jU7IM8k+Vc=} + + '@textlint/resolver@15.7.1': + resolution: {integrity: sha1-hYy85448O2Y1Sw6x/sd7+o+e5dk=} + + '@textlint/types@15.7.1': + resolution: {integrity: sha1-4eQzVw3HaJNJkkKXSDbYxf18G+I=} + + '@tufjs/canonical-json@2.0.0': + resolution: {integrity: sha1-pS9ho9c3SDP8qUWyVJvDCi3UDQo=} + engines: {node: ^16.14.0 || >=18.0.0} + + '@tufjs/models@4.1.0': + resolution: {integrity: sha1-SUs5z14vaFXYADEkbdI22AhgabM=} + engines: {node: ^20.17.0 || >=22.9.0} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha1-AVy6np3UfOFNA9KoxdVHv7FpZl0=} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha1-PnXrAGBMjW20cL8Yw3t9mEoOM1U=} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha1-PfFfJ7qFMZyqB7oI0HIYibs5wBc=} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha1-tYGSlMUReZV6+uw0FEL5NB5BCKk=} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha1-VnJRNwHBshmbxtrWNqnXSRWGdm8=} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha1-B9cT1szg0mXJhJ2wy+YtP2Hzb3Q=} + + '@types/command-line-args@5.2.3': + resolution: {integrity: sha1-VTzi/VrPFgtEjTB2SbOP/GDTljk=} + + '@types/emscripten@1.41.5': + resolution: {integrity: sha1-VnDktSsJhpHLhEuE7kjJF2aZto0=} + + '@types/estree@1.0.9': + resolution: {integrity: sha1-zz8Oh2177hWpOrkluCv1cKOQSiQ=} + + '@types/fs-extra@11.0.4': + resolution: {integrity: sha1-4WqGO7iEP7qMUAQ2K1pz4XvsykU=} + + '@types/glob@8.1.0': + resolution: {integrity: sha1-tj5wFVORsFhNzkTn6iUZC7w48vw=} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha1-dznCMqH+6bTTzomF8xTAxtM1Sdc=} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha1-UwR2FK5y4Z/AQB2HLeOuK0zjUL8=} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha1-DwPj0vZw+9rFhuNLQzeDBwzBb1Q=} + + '@types/jest@30.0.0': + resolution: {integrity: sha1-XoWuVoAGcS5K1m8lQz6b2siAHx0=} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha1-WWoXRyM2lNUPatinhp/Lb1bPWEE=} + + '@types/jsonfile@6.1.4': + resolution: {integrity: sha1-YUr+waEWTn1nC0p61k3z5763twI=} + + '@types/lodash@4.17.24': + resolution: {integrity: sha1-SuM0/GLA6RXKjtjjXcxtTuspIV8=} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha1-B1CLRXl8uB7D8nMBGwVM0HVe3co=} + + '@types/minimist@1.2.5': + resolution: {integrity: sha1-7BB1XocUl7zYPv6SfkPsRujAdH4=} + + '@types/node@25.9.4': + resolution: {integrity: sha1-GLY8R/iMH7vtnVXqK2b/1JSkcAE=} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha1-VuLMJsOXwDj6sOOpF6EtXFkJ6QE=} + + '@types/sarif@2.1.7': + resolution: {integrity: sha1-2rTRa6dWjphGxFSodk8zxdmOVSQ=} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha1-YgkyHrLBcSp+dGZCK4yx/A2d1dg=} + + '@types/tmp@0.2.6': + resolution: {integrity: sha1-14XukMUtfMAg4knJSMNvezLR4hc=} + + '@types/vscode@1.125.0': + resolution: {integrity: sha1-lEdV/hb8rxUGCJm/IUVWx1SeTNY=} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha1-gV4wt4bS6PDc2F/VvPXhoE0AjxU=} + + '@types/yargs@16.0.11': + resolution: {integrity: sha1-3pWPti53/Dg/ps2AZuq90T2ojwQ=} + + '@types/yargs@17.0.35': + resolution: {integrity: sha1-BwE+RqpNfX1QpJ4VYEwcU0DU6yQ=} + + '@typescript-eslint/eslint-plugin@8.60.1': + resolution: {integrity: sha1-wQYLuPpL6AYk0/PeyN2crKNzr3Y=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.60.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.60.1': + resolution: {integrity: sha1-qdfzCFA4TTS0H0aH3YlEgjwJ4ok=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.60.1': + resolution: {integrity: sha1-6ylxL1jXLCIvxycWLpLyq0Zwlxs=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.60.1': + resolution: {integrity: sha1-L4dZYuqtCgeJzDw2rqm03est2cg=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.60.1': + resolution: {integrity: sha1-vui5QqE2eah4EBycdFd9cyBi7ZM=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.60.1': + resolution: {integrity: sha1-GuRfDypwE1S+6kpYwhYeQKXjw3k=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.60.1': + resolution: {integrity: sha1-zNxIK6nhf5cjoQziQLXmfa0wRsQ=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.60.1': + resolution: {integrity: sha1-AWYwsRkii/SD3cZScDpqA48/3XQ=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.60.1': + resolution: {integrity: sha1-Mc9WYJVgLZ/orZGDfS61ILjedis=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.60.1': + resolution: {integrity: sha1-Fl0diQETe5RO+vGPAKtey1fwaZU=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typespec/ts-http-runtime@0.3.6': + resolution: {integrity: sha1-7aeLX/+znKhqTa27WgwmABMdNXA=} + engines: {node: '>=20.0.0'} + + '@ungap/structured-clone@1.3.2': + resolution: {integrity: sha1-oDrYLNVnZBTQaLqG+IDFaBGUqt8=} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha1-mKn+5iwB8gl0ekq1hV8c7Tim0Do=} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha1-RrfooTk/kHRiMk8VduiINSms8GY=} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha1-DqB7AOJYOrAEuFPUwC7F8HRdSQw=} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha1-oqaQHtWESbkbRDjlgvaJDLqVYEk=} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha1-6+b+f2cGtzeOpKSKAkYC6cL0j4k=} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha1-5gQP7aokASRBnTWyW2nF+hXdtJk=} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha1-0heo+1n2WcExU5MmwUDnti4+PGo=} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha1-7asTxGpFeDp+ATUeETglwE81LiQ=} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha1-5eGV2xEw99O2qi/Wezyf4epIWaA=} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha1-8B0i4JG64TAW9GNmmNncu9p3XD4=} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha1-fSPvy5it8Ha/vOzCe0ISw2qmaX0=} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha1-HzXx6qMi8zzy2W2sJ/BiapP/4vY=} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha1-Z0+qaW9c6W8hSHOUah4tbKlnI90=} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha1-N4Nf3QtHLs3P/M1CiPGQGEVLE4w=} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha1-tu3xPbS7Cszc0a1IKk7qAwHekiQ=} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha1-2t2tAL9lpAUgIoTaHrHbjrg7IY8=} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha1-39/x4MK60lQgtBx2p0YBHDmDubs=} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha1-zgfE9ee0L3v85F52KbhlkGOu/v4=} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha1-glFPBQbPr2Xxf+FglfktRQ5IcYM=} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha1-UhQn3Vmo9HQN3R3Hw7xq8aodJg0=} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha1-BbYyhv8to34M4wg7g5CIQ4Xv/2I=} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha1-ctoNpI1yseh4MbnAMIkx0/RmkCc=} + cpu: [x64] + os: [win32] + + '@vscode/vsce-sign-alpine-arm64@2.0.6': + resolution: {integrity: sha1-LNJEyvXo7FQ/QvuR1N87kzZByPo=} + cpu: [arm64] + os: [alpine] + + '@vscode/vsce-sign-alpine-x64@2.0.6': + resolution: {integrity: sha1-sOgKR5IAHGbif+7iwR6CGtH6FoA=} + cpu: [x64] + os: [alpine] + + '@vscode/vsce-sign-darwin-arm64@2.0.6': + resolution: {integrity: sha1-S4+hq1XygKmZhb48BvtzDleBDM4=} + cpu: [arm64] + os: [darwin] + + '@vscode/vsce-sign-darwin-x64@2.0.6': + resolution: {integrity: sha1-0skYbZUFSYJyy93YODuwOOvPWCA=} + cpu: [x64] + os: [darwin] + + '@vscode/vsce-sign-linux-arm64@2.0.6': + resolution: {integrity: sha1-s9hWAUQEC5INjG7dQ3QxS1glVIE=} + cpu: [arm64] + os: [linux] + + '@vscode/vsce-sign-linux-arm@2.0.6': + resolution: {integrity: sha1-CifEKkrbN+lu7HjNe/o4jNTp++8=} + cpu: [arm] + os: [linux] + + '@vscode/vsce-sign-linux-x64@2.0.6': + resolution: {integrity: sha1-reEcru7VJPwWvWxDykmuoAKV3ow=} + cpu: [x64] + os: [linux] + + '@vscode/vsce-sign-win32-arm64@2.0.6': + resolution: {integrity: sha1-BoiWgUjgPrOSR5yEkcclBnIb7/w=} + cpu: [arm64] + os: [win32] + + '@vscode/vsce-sign-win32-x64@2.0.6': + resolution: {integrity: sha1-dEMO/0HSaBjCP5gmsEXYx1cy6us=} + cpu: [x64] + os: [win32] + + '@vscode/vsce-sign@2.0.9': + resolution: {integrity: sha1-KtSLtlNzwa6rsL6v3bKespi9YDA=} + + '@vscode/vsce@3.9.2': + resolution: {integrity: sha1-kmLRc326bGHZHcVq4pAa8+HgKUo=} + engines: {node: '>= 20'} + hasBin: true + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha1-qfagfysDyVyNOMRTah/ftSH/VbY=} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha1-/Moe7dscxOe27tT8eVbWgTshufs=} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha1-4KFhUiSLw42u523X4h8Vxe86sec=} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha1-giqbxgMWZTH31d+E5ntb+ZtyuWs=} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha1-29kyVI5xGfS4p4d/1ajSDmNJCy0=} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha1-5VYQh1j0SKroTIUOWTzhig6zHgs=} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha1-lindqcRDDqtUtZEFPW3G87oFA0g=} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha1-HF6qzh1gatosf9cEXqk1bFnuDbo=} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha1-V8XD3rAQXQLOJfo/109OvJ/Qu7A=} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha1-kXog6T9xrVYClmwtaFrgxsIfYPE=} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha1-rGaJ9QIhm1kZjd7ELc1JaxAE1Zc=} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha1-mR5/DAkMsLtiu6yIIHbj0hnalXA=} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha1-5vce18yuRngcIGAX08FMUO+oEGs=} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha1-s+E/GJNgXKeLUsaOVM9qhl+Qufs=} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha1-O7PpY4qK5f2vlhDnoGtNn5qm/gc=} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=} + + '@yarnpkg/fslib@2.10.4': + resolution: {integrity: sha1-jVnsDxl+xs9JCEv+DXKh8FtB+Ik=} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@yarnpkg/libzip@2.3.0': + resolution: {integrity: sha1-/h52Lkdmn24slg/BGENmCNg0474=} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha1-53qX+9NFt22DJF7c0X05OxtB+zE=} + + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha1-Swy3hSINfCjODsTQgE3rXYIerok=} + hasBin: true + + JSONStream@1.3.5: + resolution: {integrity: sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=} + hasBin: true + + abbrev@3.0.1: + resolution: {integrity: sha1-isiztQJNMUZP4qX+7qn0U2v0QCU=} + engines: {node: ^18.17.0 || >=20.5.0} + + abbrev@4.0.0: + resolution: {integrity: sha1-7JM/Die2zWDom1xrKjBK9CIJuwU=} + engines: {node: ^20.17.0 || >=22.9.0} + + acorn-import-phases@1.0.4: + resolution: {integrity: sha1-FuuFC6maBWy3y/6HL/uJcuGMi9c=} + engines: {node: '>=10.13.0'} + peerDependencies: + acorn: ^8.14.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha1-ftW7VZCLOy8bxVxq8WU7rafweTc=} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.17.0: + resolution: {integrity: sha1-F4WtuE+vjYrdEDabk4Jvwr0I8f4=} + engines: {node: '>=0.4.0'} + hasBin: true + + add-stream@1.0.0: + resolution: {integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=} + + agent-base@6.0.2: + resolution: {integrity: sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha1-48121MVI7oldPD/Y3B9sW5Ay56g=} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=} + engines: {node: '>=8'} + + ajv-formats@2.1.1: + resolution: {integrity: sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: {integrity: sha1-adTThaRzPNvqtElkoRcKiPh/DhY=} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.15.0: + resolution: {integrity: sha1-B+mCx0YmFnqnoklcU4F4ktcTlJI=} + + ajv@8.20.0: + resolution: {integrity: sha1-MEs2Nq3Yi6fZNnYN1Q7OAG3qlfk=} + + ansi-colors@4.1.3: + resolution: {integrity: sha1-N2ETQOsiQ+cMxgTK011jJw1IeBs=} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=} + engines: {node: '>=8'} + + ansi-escapes@7.3.0: + resolution: {integrity: sha1-U5W7dLIVCkodbjwlZfSuynjShic=} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha1-YCFu6kZNhkWXzigyAAc4oFiWUME=} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha1-B0SWkK1Fd30ZJKwquy/IiV26g2s=} + engines: {node: '>=10'} + + ansi-styles@6.2.3: + resolution: {integrity: sha1-wETV3MUhoHZBNHJZehrLHxA8QEE=} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha1-eQxYsZuhcgqEIFtXxhjVrYUklz4=} + engines: {node: '>= 8'} + + aproba@2.0.0: + resolution: {integrity: sha1-UlILiuW1aSFbNU78DKo/4eRaitw=} + + argparse@1.0.10: + resolution: {integrity: sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=} + + argparse@2.0.1: + resolution: {integrity: sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=} + + array-back@3.1.0: + resolution: {integrity: sha1-uIWdelCIccmnss9C+ZQo9l6Wv7A=} + engines: {node: '>=6'} + + array-ify@1.0.0: + resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=} + + arrify@1.0.1: + resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha1-SDFDxWeu7UeFdZwIZXhtx319LjE=} + engines: {node: '>=8'} + + asynckit@0.4.0: + resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + + axios@1.16.0: + resolution: {integrity: sha1-+OXdkxzvKl+MMiFtV4Ttovh1Drc=} + + axios@1.18.1: + resolution: {integrity: sha1-1j+YY7zYk4gVyG+eKr04AYnZbf4=} + + azure-devops-node-api@12.5.0: + resolution: {integrity: sha1-OLnv18WsdDVP5Ojb5CaX2wuOhaU=} + + babel-jest@30.4.1: + resolution: {integrity: sha1-Y8upBEOLvmTEzwrN6oewpFy4Cfw=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-0 + + babel-plugin-istanbul@7.0.1: + resolution: {integrity: sha1-2LUYyOoZk2TPhMzILeiXQCNtr5I=} + engines: {node: '>=12'} + + babel-plugin-jest-hoist@30.4.0: + resolution: {integrity: sha1-99am2PQ1gItWtFqB3Etho542eUo=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha1-IHMNbNx92l2JQByrEKxqMgZ6zeY=} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@30.4.0: + resolution: {integrity: sha1-KVSGwuwRJ7PcfQ0q2qcqHcqq/M0=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@babel/core': ^7.11.0 || ^8.0.0-beta.1 + + balanced-match@1.0.2: + resolution: {integrity: sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=} + + balanced-match@4.0.3: + resolution: {integrity: sha1-Yzei8j4GBKMEgUI0MvmerGA1mfk=} + engines: {node: 20 || >=22} + + balanced-match@4.0.4: + resolution: {integrity: sha1-v7EGYv7tgZaixi58aOF3IMJ0F5o=} + engines: {node: 18 || 20 || >=22} + + base64-js@1.5.1: + resolution: {integrity: sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=} + + baseline-browser-mapping@2.10.42: + resolution: {integrity: sha1-GV3MdrqiaaSX8LB97Kzhaf7prFg=} + engines: {node: '>=6.0.0'} + hasBin: true + + before-after-hook@2.2.3: + resolution: {integrity: sha1-xR6AnIGk41QIRCK5smutiCScUXw=} + + big.js@5.2.2: + resolution: {integrity: sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=} + + bin-links@5.0.0: + resolution: {integrity: sha1-KwYFti3V4d2rO5KjxOJCIcrgbMo=} + engines: {node: ^18.17.0 || >=20.5.0} + + binary-extensions@2.3.0: + resolution: {integrity: sha1-9uFKl4WNMnJSIAJC1Mz+UixEVSI=} + engines: {node: '>=8'} + + binaryextensions@6.11.0: + resolution: {integrity: sha1-w2s+a1xZ5iFgVwmwmc2o3agkzHI=} + engines: {node: '>=4'} + + bl@4.1.0: + resolution: {integrity: sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo=} + + boolbase@1.0.0: + resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + + boundary@2.0.0: + resolution: {integrity: sha1-FpyLHw1Ezywlk4lnoyjzfgpOXvw=} + + brace-expansion@1.1.15: + resolution: {integrity: sha1-ptkNVAZyNuX0JXCjtzeNWU2bdzg=} + + brace-expansion@2.1.1: + resolution: {integrity: sha1-xoscQRHHaq46b7pV1JbO4Qw52tg=} + + brace-expansion@5.0.6: + resolution: {integrity: sha1-7Gj+CmQaKdhxFXnK9kHQW64fIoU=} + engines: {node: 18 || 20 || >=22} + + brace-expansion@5.0.7: + resolution: {integrity: sha1-Gw5GlltHna1lr3N7SgJ5CgVJgzc=} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha1-SQMy9AkZRSJy1VqEgK3AxEE1h4k=} + engines: {node: '>=8'} + + browserslist@4.28.5: + resolution: {integrity: sha1-Q4t9OMDUtHdAu7NneNW9ygGzeDg=} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha1-6302UwenLPl0zGzadraDVK0za9g=} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha1-5nh9og7OnQeZhTPP2d5vXDj0vAU=} + + buffer-crc32@0.2.13: + resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + + buffer-from@1.1.2: + resolution: {integrity: sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=} + + buffer@5.7.1: + resolution: {integrity: sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=} + + bundle-name@4.1.0: + resolution: {integrity: sha1-87lrNBYNZDGhnXaIE1r3z7h5eIk=} + engines: {node: '>=18'} + + byte-size@8.1.1: + resolution: {integrity: sha1-NCRgjGLVneW/2gXTHgMTxhdIQq4=} + engines: {node: '>=12.17'} + + cacache@20.0.4: + resolution: {integrity: sha1-m1R9w9sMH4fLptu/+R+xcYG0u7E=} + engines: {node: ^20.17.0 || >=22.9.0} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha1-S1QowiK+mF15w9gmV0edvgtZstY=} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha1-I43pNdKippKSjFOMfM+pEGf9Bio=} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=} + engines: {node: '>=6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha1-XnVda6UaoiPsfT1S8ld4IQ+dw8A=} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha1-VoW5XrIJrJwMF3Rnd4ychN9Yupo=} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001803: + resolution: {integrity: sha1-sqXWluBCvIME3NSULDn+Mw+7yyQ=} + + chalk@4.1.0: + resolution: {integrity: sha1-ThSHCmGNni7dl92DRf2dncMVZGo=} + engines: {node: '>=10'} + + chalk@4.1.2: + resolution: {integrity: sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha1-sSOLbiPqM3r3HH+KKV21rwwViuo=} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + char-regex@1.0.2: + resolution: {integrity: sha1-10Q1giYhf5ge1Y9Hmx1rzClUXc8=} + engines: {node: '>=10'} + + chardet@2.2.0: + resolution: {integrity: sha1-AF1mTyy9SWGIjS4sMsWmnlnY7sQ=} + + cheerio-select@2.1.0: + resolution: {integrity: sha1-TYZzKGuBJsoqjkJ0DV48SISuIbQ=} + + cheerio@1.2.0: + resolution: {integrity: sha1-8jt3fEkCHq10ddzzOQ01Naf4ltY=} + engines: {node: '>=20.18.1'} + + chokidar@3.6.0: + resolution: {integrity: sha1-GXxsxmnvKo3F57TZfuTgksPrDVs=} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=} + + chownr@3.0.0: + resolution: {integrity: sha1-mFXmTs0kCpzEJnzopKpdJKHaFeQ=} + engines: {node: '>=18'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha1-Bb/9f/koRlCTMUcIyTvfqb0fD1s=} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha1-QnmmICinsfJi80c/yWBfXiGMWbQ=} + engines: {node: '>=8'} + + ci-info@4.3.1: + resolution: {integrity: sha1-NVrVcZIIELViPhHUAjL0Q/FvHao=} + engines: {node: '>=8'} + + ci-info@4.4.0: + resolution: {integrity: sha1-fVTv+fVLRbYkAcJgMmlutZyL0Yw=} + engines: {node: '>=8'} + + cjs-module-lexer@2.2.0: + resolution: {integrity: sha1-s8pRAYQziSWa3n2Ix3vQbOVYSco=} + + clean-stack@2.2.0: + resolution: {integrity: sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=} + engines: {node: '>=8'} + + cli-spinners@2.6.1: + resolution: {integrity: sha1-rclU6+KBw3pjGb+kAebdJIj/tw0=} + engines: {node: '>=6'} + + cli-width@4.1.0: + resolution: {integrity: sha1-QtqsQdPCVO84rYrAN2chMBc2kcU=} + engines: {node: '>= 12'} + + cliui@7.0.4: + resolution: {integrity: sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=} + + cliui@8.0.1: + resolution: {integrity: sha1-DASwddsCy/5g3I5s8vVIaxo2CKo=} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} + engines: {node: '>=0.8'} + + cmd-shim@6.0.3: + resolution: {integrity: sha1-xJHpZWWUuhesg8S9kxWQqdbiYDM=} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + cmd-shim@7.0.0: + resolution: {integrity: sha1-I7y/af/1IXL358AjdOGPshWCbZU=} + engines: {node: ^18.17.0 || >=20.5.0} + + co@4.6.0: + resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + cockatiel@3.2.1: + resolution: {integrity: sha1-V1+Te8QECiCuJzUqbQfJxadBmB8=} + engines: {node: '>=16'} + + collect-v8-coverage@1.0.3: + resolution: {integrity: sha1-zB8B640CKYy8mkN8dMcKtOUhC4A=} + + color-convert@2.0.1: + resolution: {integrity: sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=} + + color-support@1.1.3: + resolution: {integrity: sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=} + hasBin: true + + columnify@1.6.0: + resolution: {integrity: sha1-aYlTFxPJAIuylzXmHjes9b1VPPM=} + engines: {node: '>=8.0.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=} + engines: {node: '>= 0.8'} + + command-line-args@5.2.1: + resolution: {integrity: sha1-xEwy5DelfXxRFXaWiTxZCenOxC4=} + engines: {node: '>=4.0.0'} + + commander@12.1.0: + resolution: {integrity: sha1-AUI7NvUBJZ/arE0OTWDJbJkVhdM=} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha1-T30tE5TZG3q99Rhxxi9x6tsBgqc=} + + compare-func@2.0.0: + resolution: {integrity: sha1-+2XnXtvd/S5WhVTotbBf/3pR/LM=} + + concat-map@0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + + concat-stream@2.0.0: + resolution: {integrity: sha1-QUz1r3kKSMYKub5FJ9VtXkETPLE=} + engines: {'0': node >= 6.0} + + console-control-strings@1.1.0: + resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha1-XuyO2/8VqpsWgKjc+9U+LX6yuno=} + engines: {node: '>=16'} + + conventional-changelog-core@5.0.1: + resolution: {integrity: sha1-PDMbFV1bmFD0e0dgrt38mDqSrUk=} + engines: {node: '>=14'} + + conventional-changelog-preset-loader@3.0.0: + resolution: {integrity: sha1-FJde91nSJRXW6rrmOWwq5yHUwQU=} + engines: {node: '>=14'} + + conventional-changelog-writer@6.0.1: + resolution: {integrity: sha1-2NO7Xh9iMMrtlp3MdiscNoqPewE=} + engines: {node: '>=14'} + hasBin: true + + conventional-commits-filter@3.0.0: + resolution: {integrity: sha1-vxETJmFR3WTEnNJp4+t9cdcBXuI=} + engines: {node: '>=14'} + + conventional-commits-parser@4.0.0: + resolution: {integrity: sha1-Aq4ReKOBMEg5vOfOqdpfG1Sa5QU=} + engines: {node: '>=14'} + hasBin: true + + conventional-recommended-bump@7.0.1: + resolution: {integrity: sha1-7AH2x/XQ4kkcLYlIiw11c5M5JCQ=} + engines: {node: '>=14'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co=} + + copy-webpack-plugin@14.0.0: + resolution: {integrity: sha1-zSU7YOjlW7QQGd/j7yl5unBVksc=} + engines: {node: '>= 20.9.0'} + peerDependencies: + webpack: ^5.1.0 + + core-util-is@1.0.3: + resolution: {integrity: sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=} + + cosmiconfig@9.0.0: + resolution: {integrity: sha1-NMP8WCh7kV866QWrbcPeJYtVrZ0=} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-env@10.1.0: + resolution: {integrity: sha1-z9KmIA357XW/ucs9fOYJwT6iF4M=} + engines: {node: '>=20'} + hasBin: true + + cross-spawn@6.0.6: + resolution: {integrity: sha1-MNDvoHEt2361p24ehyG/+vprXVc=} + engines: {node: '>=4.8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha1-ilj+ePANzXDDcEUXWd+/rwPo7p8=} + engines: {node: '>= 8'} + + css-select@5.2.2: + resolution: {integrity: sha1-Abbo0WNje7LdbJgspO1lhjaCeG4=} + + css-what@6.2.2: + resolution: {integrity: sha1-zcyPm2l3cZ/fvR3nrsJKv3Vrneo=} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=} + engines: {node: '>=4'} + hasBin: true + + dargs@7.0.0: + resolution: {integrity: sha1-BAFcQd4Ly2nshAUPPZvgyvjW1cw=} + engines: {node: '>=8'} + + dateformat@3.0.3: + resolution: {integrity: sha1-puN0maTZqc+F71hyBE1ikByYia4=} + + debug@4.4.3: + resolution: {integrity: sha1-xq5DLZvZZiWC/OCHCbA4xY6ePWo=} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha1-BKLVI7LxjYDQFYpDuJXVbf+NGdg=} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} + engines: {node: '>=0.10.0'} + + decompress-response@6.0.0: + resolution: {integrity: sha1-yjh2Et234QS9FthaqwDV7PCcZvw=} + engines: {node: '>=10'} + + dedent@1.5.3: + resolution: {integrity: sha1-ma7hnrm65VpnMncXtuhI0L93flo=} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + dedent@1.7.2: + resolution: {integrity: sha1-NOImSrU4MB4nz3sHvyNpwZuqjdk=} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-extend@0.6.0: + resolution: {integrity: sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha1-pvLc5hL63S7x9Rm3NVHxfoUZmDE=} + + deepmerge@4.3.1: + resolution: {integrity: sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo=} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha1-96fMuPUQS/jg9xujscz6Xq/bIeg=} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha1-J5LohvJCKJRUWUfMgOGkRElsWXY=} + engines: {node: '>=18'} + + defaults@1.0.4: + resolution: {integrity: sha1-sLAgYsHiqmL/XZUo8PmLqpCXjXo=} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha1-27Ga37dG1/xtc0oGty9KANAhJV8=} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + engines: {node: '>=0.4.0'} + + deprecation@2.3.1: + resolution: {integrity: sha1-Y2jL20Cr8zc7UlrIfkomDDpwCRk=} + + detect-libc@2.1.2: + resolution: {integrity: sha1-aJxdzcGQDvVYOky59te0c3QgdK0=} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE=} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha1-5BuALh7t+fbK4YPOXmIteJ19jlM=} + + domelementtype@2.3.0: + resolution: {integrity: sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=} + + domhandler@5.0.3: + resolution: {integrity: sha1-zDhff3UfHR/GUMITdIBCVFOMfTE=} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha1-7b/itmiwwdl8JLrw8QYrEyIhvHg=} + + dot-prop@5.3.0: + resolution: {integrity: sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=} + engines: {node: '>=8'} + + dotenv-expand@12.0.3: + resolution: {integrity: sha1-YyPOylHKDBsfAFXiq6OceXgXOaY=} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha1-DiDFuClQFAqpm+NgqKX1IzX1PCY=} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha1-165mfh3INIL4tw/Q9u78UNow9Yo=} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha1-aWzi7Aqg5uqTo5f/zySqeEDIJ8s=} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha1-rg8PothQRe8UqBfao86azQSJ5b8=} + + editions@6.22.0: + resolution: {integrity: sha1-ORPE7qmqRYbhe80l1k1e3xeQZXo=} + engines: {ecmascript: '>= es5', node: '>=4'} + + ejs@5.0.1: + resolution: {integrity: sha1-F5UjpDftRIVDrRt2yk+0wuiVAwQ=} + engines: {node: '>=0.12.18'} + hasBin: true + + electron-to-chromium@1.5.389: + resolution: {integrity: sha1-U4vp6+x4Am1Nq6a+Mhq4VN+sKo8=} + + emittery@0.13.1: + resolution: {integrity: sha1-wEuMNFdJDghHrlH87Tr1LTOOPa0=} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=} + + emoji-regex@9.2.2: + resolution: {integrity: sha1-hAyIA7DYBH9P8M+WMXazLU7z7XI=} + + emojis-list@3.0.0: + resolution: {integrity: sha1-VXBmIEatKeLpFucariYKvf9Pang=} + engines: {node: '>= 4'} + + encoding-sniffer@0.2.1: + resolution: {integrity: sha1-OW7JesIs5aA3ukSvGZKsnUanuBk=} + + encoding@0.1.13: + resolution: {integrity: sha1-VldK/deR9UqOmyeFwFgqLSYhD6k=} + + end-of-stream@1.4.5: + resolution: {integrity: sha1-c0TXEd6kDgt0q8LtSXeHQ8ztsIw=} + + enhanced-resolve@5.24.2: + resolution: {integrity: sha1-8l1wOiRDHLHgL5RK23Su+k/LjX4=} + engines: {node: '>=10.13.0'} + + enquirer@2.3.6: + resolution: {integrity: sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha1-wow0pDN5yn9h0HQTCy9fcCCjBpQ=} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha1-JuioiInbY0F9y5oeeaPxvJK1l2s=} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha1-QgOZ1BbOH76bwKB8Yvpo1n/Q+PI=} + engines: {node: '>=6'} + + envinfo@7.13.0: + resolution: {integrity: sha1-gfu4Hl2jXXToFJQa6rfDJaYG+zE=} + engines: {node: '>=4'} + hasBin: true + + environment@1.1.0: + resolution: {integrity: sha1-jobGaxgPNjx6sxF4fgJZZl9FqfE=} + engines: {node: '>=18'} + + err-code@2.0.3: + resolution: {integrity: sha1-I8Lzt1b/38YI0w4nyalBAkgH5/k=} + + error-ex@1.3.4: + resolution: {integrity: sha1-s6jYu2+S7swWKePifTyGB6ijJBQ=} + + es-define-property@1.0.1: + resolution: {integrity: sha1-mD6y+aZyTpMD9hrd8BHHLgngsPo=} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha1-BfdaJdq5jk+x3NXhRywFRtUFfI8=} + engines: {node: '>= 0.4'} + + es-module-lexer@2.3.0: + resolution: {integrity: sha1-/adwI0w0UGTBIuuQXhxCAP+kzn4=} + + es-object-atoms@1.1.1: + resolution: {integrity: sha1-HE8sSDcydZfOadLKGQp/3RcjOME=} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.2: + resolution: {integrity: sha1-otCzcyBXJN+lJdI7DD4bHKWCyZs=} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha1-8x274MGDsAptJutjJcgQwP0YvU0=} + engines: {node: '>= 0.4'} + + esbuild-loader@4.5.0: + resolution: {integrity: sha1-XKoibVkvFUvr8sZhCRIs6d8dtdM=} + peerDependencies: + webpack: ^4.40.0 || ^5.0.0 + + esbuild@0.28.1: + resolution: {integrity: sha1-70W0Y0ycnZeilq6kEUpfmED5VXg=} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha1-ARo/aYVroYnf+n3I/M6Z0qh5A+U=} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=} + engines: {node: '>=10'} + + eslint-config-prettier@8.10.2: + resolution: {integrity: sha1-BkLlNiXrxiwxwkcmsPBQ32vZei4=} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-simple-import-sort@10.0.0: + resolution: {integrity: sha1-zEzqqBunMlJCcGJwW2QyGUb2E1E=} + peerDependencies: + eslint: '>=5.0.0' + + eslint-scope@5.1.1: + resolution: {integrity: sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=} + engines: {node: '>=8.0.0'} + + eslint-scope@8.4.0: + resolution: {integrity: sha1-iOZGogf61hQ2/6OetQUUcgBlXII=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha1-DNcv6FUOPC6uFWqWpN3c0cisWAA=} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha1-TP6mD+fdCtjoFuHtAmwdUlG1EsE=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha1-njyUiWl4JNLUzjqK0SYo+R6fWb4=} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha1-hV2hsuKtZtxZkRlfNeJivOyBF7U=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha1-1U9JSdRikAWh+haNk3w/8ffiqDc=} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=} + engines: {node: '>=4'} + hasBin: true + + esquery@1.7.0: + resolution: {integrity: sha1-CNBI8mHw3e21uulfRoCUY9nJSW0=} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha1-eteWTWeauyi+5yzsY3WLHF0smSE=} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha1-LupSkHAvJquP5TcDcP+GyWXSESM=} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=} + engines: {node: '>=0.10.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=} + + events@3.3.0: + resolution: {integrity: sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=} + engines: {node: '>=0.8.x'} + + execa@1.0.0: + resolution: {integrity: sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=} + engines: {node: '>=6'} + + execa@5.0.0: + resolution: {integrity: sha1-QCmwAHmYqEH70QMuX03oajweM3Y=} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=} + engines: {node: '>=10'} + + exit-x@0.2.2: + resolution: {integrity: sha1-H5BS3juNmaaWsQ2tW87ZvdXDqmQ=} + engines: {node: '>= 0.8.0'} + + expand-template@2.0.3: + resolution: {integrity: sha1-bhSz/O4POmNA7LV9LokYaSBSpHw=} + engines: {node: '>=6'} + + expect@30.4.1: + resolution: {integrity: sha1-iX4DkKC2wzPbzzok3uOtSVU1d+A=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + exponential-backoff@3.1.3: + resolution: {integrity: sha1-Uc+SwcBJPHZgU/nTq+5ENMJE0vY=} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=} + + fast-glob@3.3.3: + resolution: {integrity: sha1-0G1YXOjbqQoWsFBcVDw8z7OuuBg=} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + + fast-uri@3.1.3: + resolution: {integrity: sha1-9pWkDwBqulBWMVc6ACHdshGUrRE=} + + fastq@1.20.1: + resolution: {integrity: sha1-ynUKENySW8ixiDn9ID4+9LPO1nU=} + + fb-watchman@2.0.2: + resolution: {integrity: sha1-6VJO5rXHfp5QAa8PhfOtu4YjJVw=} + + fdir@6.5.0: + resolution: {integrity: sha1-7Sq5Z6MxreYvGNB32uGSaE1Q01A=} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@3.2.0: + resolution: {integrity: sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=} + engines: {node: '>=8'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha1-d4e93PETG/+5JjbGlFe7wO3W2B8=} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha1-RCZdPKwH4+p9wkdRY4BkN1SgUpI=} + engines: {node: '>=8'} + + find-replace@3.0.0: + resolution: {integrity: sha1-Pn4j07BRZ6dvdwyfvVJYsN72jDg=} + engines: {node: '>=4.0.0'} + + find-up@2.1.0: + resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} + engines: {node: '>=4'} + + find-up@4.1.0: + resolution: {integrity: sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw=} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha1-Ds45/LFO4BL0sEEL0z3ZwfAREnw=} + engines: {node: '>=16'} + + flat@5.0.2: + resolution: {integrity: sha1-jKb+MyBp/6nTJMMnGYxZglnOskE=} + hasBin: true + + flatted@3.4.2: + resolution: {integrity: sha1-9cI8EH8PN96NvfJPE3IrO5jVJyY=} + + follow-redirects@1.16.0: + resolution: {integrity: sha1-KEdKFZ07nRHvYgUKFO1g5N9tYbw=} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha1-Mujp7Rtoo0l777msK2rfkqY4V28=} + engines: {node: '>=14'} + + form-data@4.0.6: + resolution: {integrity: sha1-KOhk4beG2+u2jbH0UvljUnhmWCc=} + engines: {node: '>= 6'} + + fs-constants@1.0.0: + resolution: {integrity: sha1-a+Dem+mYzhavivwkSXue6bfM2a0=} + + fs-extra@11.3.6: + resolution: {integrity: sha1-98uA6d9VDNHbb1N/pc3VaNPnDRA=} + engines: {node: '>=14.14'} + + fs-minipass@3.0.3: + resolution: {integrity: sha1-eahZgcTcEgBl6W9iCGv2+dwmzFQ=} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + fs.realpath@1.0.0: + resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + + fsevents@2.3.3: + resolution: {integrity: sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha1-LALYZNl/PqbIgwxGTL0Rq26rehw=} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha1-dD8OO2lkqTpUke0b/6rgVNf5jQE=} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha1-jeLYA8/0TfO8bEVuZmizbDkm4Ro=} + engines: {node: '>=8.0.0'} + + get-pkg-repo@4.2.1: + resolution: {integrity: sha1-dZc+HIBQxz9IGQxSBHxM7jrL84U=} + engines: {node: '>=6.9.0'} + hasBin: true + + get-proto@1.0.1: + resolution: {integrity: sha1-FQs/J0OGnvPoUewMSdFbHRTQDuE=} + engines: {node: '>= 0.4'} + + get-stream@4.1.0: + resolution: {integrity: sha1-wbJVV189wh1Zv8ec09K0axw6VLU=} + engines: {node: '>=6'} + + get-stream@6.0.0: + resolution: {integrity: sha1-PgASy2gnMZ2icG5gGhWD6GKaZxg=} + engines: {node: '>=10'} + + get-stream@6.0.1: + resolution: {integrity: sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=} + engines: {node: '>=10'} + + get-tsconfig@4.14.0: + resolution: {integrity: sha1-mF2FxSqZA4ZCgMzCRI1BP78e/tg=} + + git-raw-commits@3.0.0: + resolution: {integrity: sha1-VDLwU6l0T2fo2wPbxIrdgSUs/es=} + engines: {node: '>=14'} + hasBin: true + + git-remote-origin-url@2.0.0: + resolution: {integrity: sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=} + engines: {node: '>=4'} + + git-semver-tags@5.0.1: + resolution: {integrity: sha1-23SKoOQ9MTvzjc1oYk2EQyNOHBU=} + engines: {node: '>=14'} + hasBin: true + + git-up@7.0.0: + resolution: {integrity: sha1-us4weG429W6jQbb2mt/YMoYzdGc=} + + git-url-parse@14.0.0: + resolution: {integrity: sha1-GM6DRybV+8oMJaRVUQGqJ3AXQY8=} + + gitconfiglocal@1.0.0: + resolution: {integrity: sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=} + + github-from-package@0.0.0: + resolution: {integrity: sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=} + + glob-parent@5.1.2: + resolution: {integrity: sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM=} + engines: {node: '>=10.13.0'} + + glob@10.5.0: + resolution: {integrity: sha1-jsA1WRnNMzjChCiiPU8k7MX+c4w=} + hasBin: true + + glob@11.1.0: + resolution: {integrity: sha1-T4JlduTrmcfa04N5PS+fCPZ+UKY=} + engines: {node: 20 || >=22} + hasBin: true + + glob@13.0.6: + resolution: {integrity: sha1-B4ZmVmpCUUfMrPvS4zLetmor5x0=} + engines: {node: 18 || 20 || >=22} + + glob@7.2.3: + resolution: {integrity: sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=} + deprecated: Glob versions prior to v9 are no longer supported + + globals@14.0.0: + resolution: {integrity: sha1-iY10E8Kbq89rr+Vvyt3thYrack4=} + engines: {node: '>=18'} + + globby@14.1.0: + resolution: {integrity: sha1-E4t453z1qNeU4yexXc6Avx+wpz4=} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha1-ifVrghe9vIgCvSmd9tfxCB1+UaE=} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha1-QYPk6L8Iu24Fu7L30uDI9xLKQOM=} + + handlebars@4.7.9: + resolution: {integrity: sha1-bxOQgqtY3E5aDlHv59ta6JDVag8=} + engines: {node: '>=0.4.7'} + hasBin: true + + hard-rejection@2.1.0: + resolution: {integrity: sha1-HG7aXBaFxjlCdm15u0Cudzzs2IM=} + engines: {node: '>=6'} + + has-flag@4.0.0: + resolution: {integrity: sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha1-/JxqeDoISVHQuXH+EBjegTcHozg=} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha1-LNxC1AvvLltO6rfAGnPFTOerWrw=} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} + + hasown@2.0.4: + resolution: {integrity: sha1-jGLYy5C+sqrV0KW2dYGtmFTD8AM=} + engines: {node: '>= 0.4'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=} + + hosted-git-info@4.1.0: + resolution: {integrity: sha1-gnuChn6f8cjQxNnVOIA5fSyG0iQ=} + engines: {node: '>=10'} + + hosted-git-info@7.0.2: + resolution: {integrity: sha1-m3UaysCXdXZn8wEUYH73tmH/Txc=} + engines: {node: ^16.14.0 || >=18.0.0} + + hosted-git-info@8.1.0: + resolution: {integrity: sha1-FTzYTAPGchSB4WpXCet0saCrLtA=} + engines: {node: ^18.17.0 || >=20.5.0} + + hosted-git-info@9.0.3: + resolution: {integrity: sha1-Y3tRHOYqKOQmGpK42gpNa+NSLNQ=} + engines: {node: ^20.17.0 || >=22.9.0} + + html-escaper@2.0.2: + resolution: {integrity: sha1-39YAJ9o2o238viNiYsAKWCJoFFM=} + + htmlparser2@10.1.0: + resolution: {integrity: sha1-/j8uEsc7bkYtThA5XbnBEZ5NauQ=} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha1-IF9Ntk+FYrdqT/kjWqUnmDmgndU=} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha1-mosfJGhmwChQlIZYX2K48sGMJw4=} + engines: {node: '>= 14'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha1-xZ7yJKBP6LdU89sAY6Jeow0ABdY=} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha1-2o3+rH2hMLBcK6S1nJts1mYRprk=} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=} + engines: {node: '>=10.17.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE=} + engines: {node: '>=0.10.0'} + + iconv-lite@0.7.3: + resolution: {integrity: sha1-hO4S+WPn3lC8AaE+FgoHizsPQV8=} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=} + + ignore-walk@8.0.0: + resolution: {integrity: sha1-OAwXO63DoYxX/zNEB1PwBS9XKxQ=} + engines: {node: ^20.17.0 || >=22.9.0} + + ignore@5.3.2: + resolution: {integrity: sha1-PNQOcp82Q/2HywTlC/DrcivFlvU=} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha1-TLX2zX1MerA2VzjHrqiIuqbX79k=} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha1-nOy1ZQPAraHydB271lRuSxO1fM8=} + engines: {node: '>=6'} + + import-local@3.1.0: + resolution: {integrity: sha1-tEed+KX9RPbNziQHBnVnYGPJXLQ=} + engines: {node: '>=8'} + hasBin: true + + import-local@3.2.0: + resolution: {integrity: sha1-w9XHRXmMAqb4uJdyarpRABhu4mA=} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=} + engines: {node: '>=8'} + + index-to-position@1.2.0: + resolution: {integrity: sha1-yADrNNrPTb+WubBsfreNX3BBOLQ=} + engines: {node: '>=18'} + + inflight@1.0.6: + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=} + + ini@1.3.8: + resolution: {integrity: sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=} + + ini@5.0.0: + resolution: {integrity: sha1-p6RhUzmEPZqMzC2Fydgc+T/7xjg=} + engines: {node: ^18.17.0 || >=20.5.0} + + ini@6.0.0: + resolution: {integrity: sha1-78dkKydvajfSL99W71CInXFGvzA=} + engines: {node: ^20.17.0 || >=22.9.0} + + init-package-json@8.2.2: + resolution: {integrity: sha1-X9CJKJlcOktu14C+HtrVbmK/pB4=} + engines: {node: ^20.17.0 || >=22.9.0} + + inquirer@12.9.6: + resolution: {integrity: sha1-F4oH9WeOqNnEtSiOWkfEDlfWho8=} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + interpret@1.4.0: + resolution: {integrity: sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=} + engines: {node: '>= 0.10'} + + ip-address@10.2.0: + resolution: {integrity: sha1-gF/BeLIMUYvUyFSLJP4wiS1/MgY=} + engines: {node: '>= 12'} + + is-arrayish@0.2.1: + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + + is-binary-path@2.1.0: + resolution: {integrity: sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=} + engines: {node: '>=8'} + + is-ci@3.0.1: + resolution: {integrity: sha1-227L7RvWWcQ9rA9FZh52dBA9GGc=} + hasBin: true + + is-core-module@2.16.2: + resolution: {integrity: sha1-PgdFCoCA684/vwysSU9NKrMk4II=} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha1-kAk6oxBid9inelkQ265xdH4VogA=} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha1-fRQK3DiarzARqPKipM+m+q3/sRg=} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ=} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha1-6B+6aZZi6zHb2vJnZqYdSBRxfqQ=} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} + engines: {node: '>=0.10.0'} + + is-ssh@1.4.1: + resolution: {integrity: sha1-dt4c2+j5KouQXRoXK2vAlwTCA5Y=} + + is-stream@1.1.0: + resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha1-+sHj1TuXrVqdCunO8jifWBClwHc=} + engines: {node: '>=8'} + + is-text-path@1.0.1: + resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc=} + engines: {node: '>=10'} + + is-wsl@2.2.0: + resolution: {integrity: sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=} + engines: {node: '>=8'} + + is-wsl@3.1.1: + resolution: {integrity: sha1-MniXsmgyo+sRfabCdJLQTKEyWU8=} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + + isexe@2.0.0: + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + + isexe@3.1.5: + resolution: {integrity: sha1-QuNo9o1eENrf7k/ae1ULwtiJLck=} + engines: {node: '>=18'} + + isexe@4.0.0: + resolution: {integrity: sha1-SPZXavjoehj+t5a37V4uWQO0Pco=} + engines: {node: '>=20'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha1-LRZsSwZE1Do58Ev2wu3R5YXzF1Y=} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha1-+hVAHfbBWHS8shBfdzMl14xmZ2U=} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha1-kIMFusmlvRdaxqdEier9D8JEWn0=} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha1-rK75SN93R8jrX78SZcuYD2NTpEE=} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha1-y0U1FitXhKpiPO4hpyUs8sgHrJM=} + engines: {node: '>=8'} + + istextorbinary@9.5.0: + resolution: {integrity: sha1-5uE/6/HBaFEAriZICaT49G4B39M=} + engines: {node: '>=4'} + + jackspeak@3.4.3: + resolution: {integrity: sha1-iDOp2Jq0rN5hiJQr0cU7Y5DtWoo=} + + jackspeak@4.2.3: + resolution: {integrity: sha1-J++A8zuTQSA3w76k+O3fgOGTFIM=} + engines: {node: 20 || >=22} + + jest-changed-files@30.4.1: + resolution: {integrity: sha1-OW/PkUFlKH8FlgNypdCR9vInXsU=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-circus@30.4.2: + resolution: {integrity: sha1-mlubnFe/UYcfESzPemc9SGwo+Oc=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-cli@30.4.2: + resolution: {integrity: sha1-41PvVANcWsl/IAgHyXs9hX9Svdw=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@30.4.2: + resolution: {integrity: sha1-ePWJtUENKAVRi4vc5Rchf7lrXmE=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + '@types/node': '*' + esbuild-register: '>=3.4.0' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + + jest-diff@30.4.1: + resolution: {integrity: sha1-Jmkcc5dXaECa9KZrJ1TOoxgqotw=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-docblock@30.4.0: + resolution: {integrity: sha1-Ord5oCfRSVriFVCszUJmu+ma96M=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-each@30.4.1: + resolution: {integrity: sha1-tp5m2o4rV4xhQNNX9ldARMKkBTc=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-environment-node@30.4.1: + resolution: {integrity: sha1-Q7u+6QPhfYdOsYFxlcUP+LkOL+A=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-haste-map@30.4.1: + resolution: {integrity: sha1-bYDQnWaMIL85RJd+UKyslPzWcv4=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-junit@17.0.0: + resolution: {integrity: sha1-33CDLXgN6Vd7oTNojalEh/W7wQU=} + engines: {node: '>=20.0.0'} + + jest-leak-detector@30.4.1: + resolution: {integrity: sha1-lgdwWaaOWHH8j1OqkGR6ajP5Fs0=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-matcher-utils@30.4.1: + resolution: {integrity: sha1-P+6MidvY/G5g61kN75iX4Y8RDsQ=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-message-util@30.4.1: + resolution: {integrity: sha1-QPa/pfVkNj7cunzgymQnf9Ktavc=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-mock@30.4.1: + resolution: {integrity: sha1-XhGgXXcZoePHu6Y0i3D/ThvF6mg=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha1-kwsVRhZNStWTfVVA5xHU041MrS4=} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@30.4.0: + resolution: {integrity: sha1-91zMQ4V2M98lY6A1iLXLRcfClBs=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-resolve-dependencies@30.4.2: + resolution: {integrity: sha1-FS+KTLLdNRzt61raU8ifloOjrZI=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-resolve@30.4.1: + resolution: {integrity: sha1-ueQyiS3A4qRw60gm718SClCzIF4=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-runner@30.4.2: + resolution: {integrity: sha1-Fd6/PLbYF1OKqXQn1aeSd83/Zf4=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-runtime@30.4.2: + resolution: {integrity: sha1-A7WVUANECXWxLnZRjshdCRwluEo=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-snapshot@30.4.1: + resolution: {integrity: sha1-A4DLuqnVPTLPfmGvmEWawQozmEI=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-util@30.4.1: + resolution: {integrity: sha1-l5ydAU/dEruV09zeAZLhqeC8k9Y=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-validate@30.4.1: + resolution: {integrity: sha1-3MR4RUe/ZE3KAibTJm+xveOSxaQ=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-watcher@30.4.1: + resolution: {integrity: sha1-0qeP0nVT25IGlH7tpgaNdrrP0nY=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha1-jRRvCQDolzsQa29zzB6ajLhvjbA=} + engines: {node: '>= 10.13.0'} + + jest-worker@30.4.1: + resolution: {integrity: sha1-rAEOtsUSQldIo54ta/BbLEhmyk8=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest@30.4.2: + resolution: {integrity: sha1-6b2wD0vxEm14Gw2Y4jEw2wlrvZo=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha1-GSA/tZmR35jjoocFDUZHzerzJJk=} + + js-yaml@3.15.0: + resolution: {integrity: sha1-WG5SFOr+Pok3VqQel5tQ2J0+Smc=} + hasBin: true + + js-yaml@4.1.1: + resolution: {integrity: sha1-hUwpJGdwW2mUduGi3swMijRYgGs=} + hasBin: true + + js-yaml@4.3.0: + resolution: {integrity: sha1-0ZAFcqf3zwtfVAyDZz5gutNDZZI=} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha1-dNM1ojT2ftGZB/2t+sfM+dQJgl0=} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM=} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=} + + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha1-0/Z71ZJegdPjGqRmrMghyDdc7EM=} + engines: {node: ^18.17.0 || >=20.5.0} + + json-parse-even-better-errors@5.0.0: + resolution: {integrity: sha1-k8ifUp8CLl2twjNAkyTwFnsekD4=} + engines: {node: ^20.17.0 || >=22.9.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha1-afaofZUTq4u4/mO9sJecRI5oRmA=} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + + json-stringify-nice@1.1.4: + resolution: {integrity: sha1-LJN5YrgBgdPzF905qjI+FPWmCmc=} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + + json5@2.2.3: + resolution: {integrity: sha1-eM1vGhm9wStz21rQxh79ZsHikoM=} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha1-Mf8/TCuXk/icZyEmJ8UcY5T4jnY=} + + jsonc-parser@3.3.1: + resolution: {integrity: sha1-8qUktPf9EePXkeVZl3rWC5i3mLQ=} + + jsonfile@6.2.1: + resolution: {integrity: sha1-tuMXF/Isw3MwsIHOAFHtXeU68vY=} + + jsonparse@1.3.1: + resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=} + engines: {'0': node >= 0.2.0} + + jsonwebtoken@9.0.3: + resolution: {integrity: sha1-bNV6sB6bCsB8uEfVPTybbuMfeuI=} + engines: {node: '>=12', npm: '>=6'} + + just-diff-apply@5.5.0: + resolution: {integrity: sha1-dxwsqfpp89K1Tnw/XB38vMR/nw8=} + + just-diff@6.0.2: + resolution: {integrity: sha1-A7ZZCFQ6wFIcr22OuFA199J+ooU=} + + jwa@2.0.1: + resolution: {integrity: sha1-v4F20a0M1y4PP1gzhZWhPhELyAQ=} + + jws@4.0.1: + resolution: {integrity: sha1-B+3Bvo+sIOZ3soPs4mFJi9OPBpA=} + + keytar@7.9.0: + resolution: {integrity: sha1-TGIlcI9RtQy/d8Wq6BchlkwpGMs=} + + keyv@4.5.4: + resolution: {integrity: sha1-qHmpnilFL5QkOfKkBeOvizHU3pM=} + + kind-of@6.0.3: + resolution: {integrity: sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=} + engines: {node: '>=0.10.0'} + + lerna@9.0.7: + resolution: {integrity: sha1-gFaGpoRxpPj5GLEl5mE1DvrXD8U=} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=} + engines: {node: '>= 0.8.0'} + + libnpmaccess@10.0.3: + resolution: {integrity: sha1-hW3Cn9NQUBWd/wA5M3qrUDNnWGs=} + engines: {node: ^20.17.0 || >=22.9.0} + + libnpmpublish@11.1.2: + resolution: {integrity: sha1-3+S7UzuFKtKIUmVMByMV4tZTwjU=} + engines: {node: ^20.17.0 || >=22.9.0} + + lines-and-columns@1.2.4: + resolution: {integrity: sha1-7KKE910pZQeTCdwK2SVauy68FjI=} + + lines-and-columns@2.0.3: + resolution: {integrity: sha1-svC63ttVa3RwIKuOp/A3PiLvrBs=} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + linkify-it@5.0.2: + resolution: {integrity: sha1-074KaTrz2p3ziD8eNGoOl0YajBk=} + + load-json-file@4.0.0: + resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} + engines: {node: '>=4'} + + load-json-file@6.2.0: + resolution: {integrity: sha1-XHdwtCyvqXB0yihIcHxhZi9CUaE=} + engines: {node: '>=8'} + + loader-runner@4.3.2: + resolution: {integrity: sha1-mRPToVlx+PY1kV5gH7XJ1JXZGOk=} + engines: {node: '>=6.11.5'} + + loader-utils@2.0.4: + resolution: {integrity: sha1-i1yzi1w0qaAY7h/A5qBm0d/MUow=} + engines: {node: '>=8.9.0'} + + locate-path@2.0.0: + resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} + engines: {node: '>=4'} + + locate-path@5.0.0: + resolution: {integrity: sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha1-VTIeswn+u8WcSAHZMackUqaB0oY=} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=} + + lodash.includes@4.3.0: + resolution: {integrity: sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=} + + lodash.ismatch@4.4.0: + resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} + + lodash.isstring@4.0.1: + resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=} + + lodash.memoize@4.1.2: + resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + + lodash.merge@4.6.2: + resolution: {integrity: sha1-VYqlO0O2YeGSWgr9+japoQhf5Xo=} + + lodash.once@4.1.1: + resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} + + lodash.truncate@4.4.2: + resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} + + lodash@4.18.1: + resolution: {integrity: sha1-/ytmwfYybVlRPeJAe/iBQ5gSdxw=} + + log-symbols@4.1.0: + resolution: {integrity: sha1-P727lbRoOsn8eFER55LlWNSr1QM=} + engines: {node: '>=10'} + + lru-cache@10.4.3: + resolution: {integrity: sha1-QQ/IoXtw5ZgBPfJXwkRrfzOD8Rk=} + + lru-cache@11.5.2: + resolution: {integrity: sha1-AOFmZckMYg+6FKPDaHMql2ST92A=} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=} + + lru-cache@6.0.0: + resolution: {integrity: sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=} + engines: {node: '>=10'} + + make-dir@4.0.0: + resolution: {integrity: sha1-w8IwencSd82WODBfkVwprnQbYU4=} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha1-LrLjfqm2fEiR9oShOUeZr0hM96I=} + + make-fetch-happen@15.0.2: + resolution: {integrity: sha1-T9TmJj4PJoUs1zyuBP8rLkM8qnY=} + engines: {node: ^20.17.0 || >=22.9.0} + + make-fetch-happen@15.0.6: + resolution: {integrity: sha1-B53ucIyIoEofeXNbsCeJpjWXhA4=} + engines: {node: ^20.17.0 || >=22.9.0} + + makeerror@1.0.12: + resolution: {integrity: sha1-Pl3SB5qC6BLpg8xmEMSiyw6qgBo=} + + map-obj@1.0.1: + resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha1-kwT5Buk/qucIgNoQKp8d8OqLsFo=} + engines: {node: '>=8'} + + markdown-it@14.3.0: + resolution: {integrity: sha1-hUL6VQbjUw9+KwjcOIVjATXFYg4=} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha1-oN10voHiqlwvJ+Zc4oNgXuTit/k=} + engines: {node: '>= 0.4'} + + mdurl@2.0.0: + resolution: {integrity: sha1-gGduwEMwJd0+F+6YPQ/o3loiN+A=} + + meow@8.1.2: + resolution: {integrity: sha1-vL5FvaDuFynTUMA8/8g5WjbE6Jc=} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=} + + merge2@1.4.1: + resolution: {integrity: sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha1-1m+hjzpHB2eJMgubGvMr2G2fogI=} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha1-u6vNwChZ9JhzAchW4zh85exDv3A=} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha1-zds+5PnGRTDf9kAjZmHULLajFPU=} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha1-OBqHG2KnNEUGYK497uRIE/cNlZo=} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=} + engines: {node: '>=6'} + + mimic-response@3.1.0: + resolution: {integrity: sha1-LR1Zr5wbEpgVrMwsRqAipc4fo8k=} + engines: {node: '>=10'} + + min-indent@1.0.1: + resolution: {integrity: sha1-pj9oFnOzBXH76LwlaGrnRu76mGk=} + engines: {node: '>=4'} + + minimatch@10.2.5: + resolution: {integrity: sha1-vUhoegvjjtKWE5kQVgD4MglYYdE=} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.4: + resolution: {integrity: sha1-idkQ6jlwp3rI7f0wNAzNA4t1gHk=} + + minimatch@3.1.5: + resolution: {integrity: sha1-WAyI+NVEXyvWqo88re+g3nn71p4=} + + minimatch@9.0.9: + resolution: {integrity: sha1-mwy5/LeAh/b9fqur4lEcTT1gV04=} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha1-wGVXE8U6ii69d/+iR9NCxA8BBhk=} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=} + + minimizer-webpack-plugin@5.6.1: + resolution: {integrity: sha1-KJkipMlsTtHdt2uKAL2AdOiaL38=} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@minify-html/node': '*' + '@swc/core': '*' + '@swc/css': '*' + '@swc/html': '*' + clean-css: '*' + cssnano: '*' + csso: '*' + esbuild: '*' + html-minifier-terser: '*' + lightningcss: '*' + postcss: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@minify-html/node': + optional: true + '@swc/core': + optional: true + '@swc/css': + optional: true + '@swc/html': + optional: true + clean-css: + optional: true + cssnano: + optional: true + csso: + optional: true + esbuild: + optional: true + html-minifier-terser: + optional: true + lightningcss: + optional: true + postcss: + optional: true + uglify-js: + optional: true + + minipass-collect@2.0.1: + resolution: {integrity: sha1-FiG8d+EiWKEsYNNOInbsXCBoCGM=} + engines: {node: '>=16 || 14 >=14.17'} + + minipass-fetch@4.0.1: + resolution: {integrity: sha1-8tcX1aQYrQsacnT5uRNRXT54+eU=} + engines: {node: ^18.17.0 || >=20.5.0} + + minipass-fetch@5.0.2: + resolution: {integrity: sha1-OXOmBd39iruGXlDW/GNIU8gjlyk=} + engines: {node: ^20.17.0 || >=22.9.0} + + minipass-flush@1.0.7: + resolution: {integrity: sha1-FFw4PVrilLNgMKqA1Ohy0Ivry3M=} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha1-aEcveXEcCEZXwGfFxq2Tzd6oIUw=} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha1-cO5afFBSBwr6z7wil36nne81O3A=} + engines: {node: '>=8'} + + minipass-sized@2.0.0: + resolution: {integrity: sha1-Iijul+P3T2sium0TGa3bdiFTQwY=} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha1-e7o4TbOhUg0YycDlJRw0ROld2Uo=} + engines: {node: '>=8'} + + minipass@7.1.3: + resolution: {integrity: sha1-eTibTrG7LQA6m7qH1JLyvTe9xls=} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha1-atdsOo8QInybUdHJrI4wsn9aJRw=} + engines: {node: '>= 18'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha1-+hDJEVzG2IZb4iG6R+6b7XhgERM=} + + mkdirp@1.0.4: + resolution: {integrity: sha1-PrXtYmInVteaXw4qIh3+utdcL34=} + engines: {node: '>=10'} + hasBin: true + + modify-values@1.0.1: + resolution: {integrity: sha1-s5OfpgVUZHTj4+PGPWS9Q7TuYCI=} + engines: {node: '>=0.10.0'} + + ms@2.1.3: + resolution: {integrity: sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=} + + mute-stream@0.0.8: + resolution: {integrity: sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=} + + mute-stream@2.0.0: + resolution: {integrity: sha1-pURvwMUStxyDxE2QjVx7e0xJOys=} + engines: {node: ^18.17.0 || >=20.5.0} + + napi-build-utils@2.0.0: + resolution: {integrity: sha1-E8IsAYf8/MzhRhhEE2NypH3cAn4=} + + napi-postinstall@0.3.4: + resolution: {integrity: sha1-evJW1liLX46VK5GQll1rAZZTu7k=} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + + negotiator@1.0.0: + resolution: {integrity: sha1-tskbtHFy1p+Tz9fDV7u1KQGbX2o=} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha1-tKr7k+OustgXTKU88WOrfXMIMF8=} + + nice-try@1.0.5: + resolution: {integrity: sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=} + + node-abi@3.94.0: + resolution: {integrity: sha1-AHGB7Q0bVq6WcOpsCE0r+DU4QF8=} + engines: {node: '>=10'} + + node-addon-api@4.3.0: + resolution: {integrity: sha1-UqGgtHUZPgko6Y4EJqDRJUeCt38=} + + node-gyp@12.4.0: + resolution: {integrity: sha1-LQF7bqHKkpTbvudb5TNyj0klcCQ=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} + + node-releases@2.0.50: + resolution: {integrity: sha1-WXGXqFIHHOQvwlUOWOIjJCvLqWk=} + engines: {node: '>=18'} + + node-sarif-builder@3.4.0: + resolution: {integrity: sha1-nBrAJpGfWXfhAU8OJtT2nw9Fvs0=} + engines: {node: '>=20'} + + nopt@8.1.0: + resolution: {integrity: sha1-sR04yvD4ZDzohYGFGAZBJ/YC6uM=} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + nopt@9.0.0: + resolution: {integrity: sha1-a/8INrKWTSRQi2tBtamknE9KH5Y=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=} + + normalize-package-data@3.0.3: + resolution: {integrity: sha1-28w+LaWVCaCYNCKITNFy7v36Ul4=} + engines: {node: '>=10'} + + normalize-package-data@6.0.2: + resolution: {integrity: sha1-p7wiFn/iQCVBK8/wqWUet2iwNQY=} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-path@3.0.0: + resolution: {integrity: sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=} + engines: {node: '>=0.10.0'} + + npm-bundled@4.0.0: + resolution: {integrity: sha1-9bmD8FP+fGFWbPByQfqy1OnVE9M=} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-bundled@5.0.0: + resolution: {integrity: sha1-UCXYR8/QbHuNlDLfAWldATPZ7oA=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-check-updates@19.6.6: + resolution: {integrity: sha1-V/aogktqmebOSBSdM/yS0DfXeJs=} + engines: {node: '>=20.0.0', npm: '>=8.12.1'} + hasBin: true + + npm-install-checks@7.1.2: + resolution: {integrity: sha1-4zjTM5MO4Y4PsL5r2LZ6+Yvj0vo=} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-install-checks@8.0.0: + resolution: {integrity: sha1-9dGOkJu4MY2FCT6djzasQnwcvjA=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha1-33nnDNChE7d8AtH+JDyWuOYYrLE=} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-normalize-package-bin@5.0.0: + resolution: {integrity: sha1-KyB/8mDy5SXdzpM1ZhTi9zZyj4k=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-package-arg@12.0.2: + resolution: {integrity: sha1-Ox4E6+ZRzEUCjimGZOjBXOnAykA=} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-package-arg@13.0.1: + resolution: {integrity: sha1-Ny3I1OXKUOEbpZF10Mz13RZ9QQQ=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-packlist@10.0.3: + resolution: {integrity: sha1-4iwDk1f6+Bp10bDN9T3RE/K+2cc=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-pick-manifest@10.0.0: + resolution: {integrity: sha1-bMEgxkc87qVt/q1QDwBzWyuJKFE=} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-pick-manifest@11.0.3: + resolution: {integrity: sha1-ds9lk6NRhJAGw2s4pzJnmOKnbRM=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-registry-fetch@19.1.0: + resolution: {integrity: sha1-6E9kJj95ySaVpzRNkvk3Jt5eBwc=} + engines: {node: ^20.17.0 || >=22.9.0} + + npm-run-path@2.0.2: + resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha1-t+zR5e1T2o43pV4cImnguX7XSOo=} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha1-yeq0KO/842zWuSySS9sADvHx7R0=} + + nx@22.7.6: + resolution: {integrity: sha1-D8wapiC8vN0+1IVqzRhlsyWX0sk=} + hasBin: true + peerDependencies: + '@swc-node/register': ^1.11.1 + '@swc/core': ^1.15.8 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + + object-inspect@1.13.4: + resolution: {integrity: sha1-g3UmXiG8IND6WCwi4bE0hdbgAhM=} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + + onetime@5.1.2: + resolution: {integrity: sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=} + engines: {node: '>=6'} + + open@10.2.0: + resolution: {integrity: sha1-udhVvgB2IOgLb7BfrJgUH+Yttzw=} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha1-W1/+Ko95Pc0qrXPlUMuHtZywhPk=} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha1-fqHBpdkddk+yghOciP4R4YKjpzQ=} + engines: {node: '>= 0.8.0'} + + ora@5.3.0: + resolution: {integrity: sha1-+4MomdOhNy/nHIssU0u/50lhu28=} + engines: {node: '>=10'} + + p-finally@1.0.0: + resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} + engines: {node: '>=4'} + + p-limit@1.3.0: + resolution: {integrity: sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs=} + engines: {node: '>=10'} + + p-locate@2.0.0: + resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} + engines: {node: '>=4'} + + p-locate@4.1.0: + resolution: {integrity: sha1-o0KLtwiLOmApL2aRkni3wpetTwc=} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ=} + engines: {node: '>=10'} + + p-map-series@2.1.0: + resolution: {integrity: sha1-dWDUxFLZ2gwH5pL9v+biyBoqkfI=} + engines: {node: '>=8'} + + p-map@4.0.0: + resolution: {integrity: sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs=} + engines: {node: '>=10'} + + p-map@7.0.5: + resolution: {integrity: sha1-5IvQm/3fK19d45Oq0Qm9WpBBUHo=} + engines: {node: '>=18'} + + p-pipe@3.1.0: + resolution: {integrity: sha1-SLV8kiqi4a9qZATLfGvw65zI5g4=} + engines: {node: '>=8'} + + p-queue@6.6.2: + resolution: {integrity: sha1-IGip3PjmfdDsPnory3aBD6qF5CY=} + engines: {node: '>=8'} + + p-reduce@2.1.0: + resolution: {integrity: sha1-CUCNpJUHxsJ0+qMfKN8zS8cStko=} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha1-x+F6vJcdKnli74NiazXWNazyPf4=} + engines: {node: '>=8'} + + p-try@1.0.0: + resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} + engines: {node: '>=4'} + + p-try@2.2.0: + resolution: {integrity: sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=} + engines: {node: '>=6'} + + p-waterfall@2.1.1: + resolution: {integrity: sha1-YxU6d09HLM3E6ygc2yln/PFYsu4=} + engines: {node: '>=8'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha1-TxRxoBCCeob5TP2bByfjbSZ95QU=} + + pacote@21.0.1: + resolution: {integrity: sha1-40l8awOAutIdhAzjycH1O5rkAxU=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + pacote@21.5.1: + resolution: {integrity: sha1-dKuJb8ex8AVF7Lu/ZmphiVzVDTg=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + parent-module@1.0.1: + resolution: {integrity: sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=} + engines: {node: '>=6'} + + parse-conflict-json@4.0.0: + resolution: {integrity: sha1-mWse38DHJ1g7VsdkTbsyWPyenks=} + engines: {node: ^18.17.0 || >=20.5.0} + + parse-json@4.0.0: + resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=} + engines: {node: '>=8'} + + parse-json@8.3.0: + resolution: {integrity: sha1-iKGVohVwJROaIxek8vklK2EwTtU=} + engines: {node: '>=18'} + + parse-path@7.1.0: + resolution: {integrity: sha1-QftRPLEigxgHpMeynIcnlHoJ2MY=} + + parse-semver@1.1.1: + resolution: {integrity: sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=} + + parse-url@8.1.0: + resolution: {integrity: sha1-ly4IJ+1LV/yF8OprDYOfDYpXpX0=} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha1-tagGVI7Yk6Q+JMy0L7t4BpMR6Bs=} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha1-18IOrcN5aNJy4sAmYP/5LdJ+YOE=} + + parse5@7.3.0: + resolution: {integrity: sha1-1+Ik+nI5nHoXUJn0X8KtAksF7AU=} + + path-exists@3.0.0: + resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=} + + path-scurry@1.11.1: + resolution: {integrity: sha1-eWCmaIiFlKByCxKpEdGnQqufEdI=} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.2: + resolution: {integrity: sha1-a+DQ7gKhDZ4N56mLrmXhgskGH4U=} + engines: {node: 18 || 20 || >=22} + + path-type@3.0.0: + resolution: {integrity: sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=} + engines: {node: '>=4'} + + path-type@6.0.0: + resolution: {integrity: sha1-Lxu2eRqRzpkZTK7eXWxZIO2B61E=} + engines: {node: '>=18'} + + pend@1.2.0: + resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} + + picocolors@1.1.1: + resolution: {integrity: sha1-PTIa8+q5ObCDyPkpodEs2oHCa2s=} + + picomatch@2.3.2: + resolution: {integrity: sha1-WpQpFeJrNy3A8OZ1MUmhbmscVgE=} + engines: {node: '>=8.6'} + + picomatch@4.0.5: + resolution: {integrity: sha1-UepXoX2G9gX4EDlZX7xA7QalX6s=} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} + engines: {node: '>=4'} + + pirates@4.0.7: + resolution: {integrity: sha1-ZDtKGMQlfIplEEtz8wSc6aChXiI=} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=} + engines: {node: '>=8'} + + pluralize@2.0.0: + resolution: {integrity: sha1-crcmqm+sHt7uQiVsfY3CVrM1Z38=} + + pluralize@8.0.0: + resolution: {integrity: sha1-Gm+hajjRKhkB4DIPoBcFHFOc47E=} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.4: + resolution: {integrity: sha1-adx6UmUXVy/2sVDjUrNqAWAXtIU=} + engines: {node: '>=4'} + + prebuild-install@7.1.3: + resolution: {integrity: sha1-1jCrrSsUdEPyCiEpF76uaLgJLuw=} + engines: {node: '>=10'} + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=} + engines: {node: '>= 0.8.0'} + + prettier@2.8.8: + resolution: {integrity: sha1-6MXX6YpDBf/j3i4fxKyhpxwosdo=} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-format@30.4.1: + resolution: {integrity: sha1-CRFlLpLh6R9HXj5qFuYo5QZJ6mk=} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + proc-log@5.0.0: + resolution: {integrity: sha1-5sk883rvM/g1xTSF8xT1DqkGqdg=} + engines: {node: ^18.17.0 || >=20.5.0} + + proc-log@6.1.0: + resolution: {integrity: sha1-GFGUgqN9UZjiMRM6cBRKUPIfAhU=} + engines: {node: ^20.17.0 || >=22.9.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha1-eCDZsWEgzFXKmud5JoCufbptf+I=} + + proggy@3.0.0: + resolution: {integrity: sha1-h06R/tJ/4ApRF1joMhamtlFIvWw=} + engines: {node: ^18.17.0 || >=20.5.0} + + promise-all-reject-late@1.0.1: + resolution: {integrity: sha1-+OvxNIPlypGtgJzML88l8m+GQ8I=} + + promise-call-limit@3.0.2: + resolution: {integrity: sha1-Ukt/S5dyn/cEF9k9JPRvAmXvpPk=} + + promise-retry@2.0.1: + resolution: {integrity: sha1-/3R6E2IKtXumiPX8Z4VUEMNw2iI=} + engines: {node: '>=10'} + + promzard@2.0.0: + resolution: {integrity: sha1-A60OTbcGVE391PRZKB8TSE/BDEk=} + engines: {node: ^18.17.0 || >=20.5.0} + + protocols@2.0.2: + resolution: {integrity: sha1-gi6Pzcs99TVlOLPpG/2JCwZ/0KQ=} + + proxy-from-env@2.1.0: + resolution: {integrity: sha1-p0h1aK2tV3z6qn6IxJyrOrMIGro=} + engines: {node: '>=10'} + + pump@3.0.4: + resolution: {integrity: sha1-HzE0MFJ/qLkFYi69Iv4UROdXqzw=} + + punycode.js@2.3.1: + resolution: {integrity: sha1-a1PlatdViCNOefSv+pCXLH3Yzbc=} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha1-AnQi4vrsCyXhVJw+G9gwm5EztuU=} + engines: {node: '>=6'} + + pure-rand@7.0.1: + resolution: {integrity: sha1-b1OlqePkpHRFgir5aCHKUJ7TdWY=} + + qs@6.15.3: + resolution: {integrity: sha1-doUhMqWO1cfA72fkRBubtdYGGzs=} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha1-SSkii7xyTfrEPg77BYyve2z7YkM=} + + quick-lru@4.0.1: + resolution: {integrity: sha1-W4h48ROlgheEjGSCAmxz4bpXcn8=} + engines: {node: '>=8'} + + rc-config-loader@4.1.4: + resolution: {integrity: sha1-bMeQQqwZPr7Z8IL8unuCPZ3BQ8w=} + + rc@1.2.8: + resolution: {integrity: sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=} + hasBin: true + + react-is@18.3.1: + resolution: {integrity: sha1-6DVX3BLq5jqZ4AOkY4ix3LtE234=} + + react-is@19.2.7: + resolution: {integrity: sha1-V2aO6Gp4V0pUKwpTlFUhKywIbfI=} + + read-cmd-shim@4.0.0: + resolution: {integrity: sha1-ZAoItHOkkEPjlK4MejTdgixzubs=} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + read-cmd-shim@5.0.0: + resolution: {integrity: sha1-blRQSSGHoHSfbIDcvvDevBEXrMo=} + engines: {node: ^18.17.0 || >=20.5.0} + + read-pkg-up@3.0.0: + resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} + engines: {node: '>=4'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha1-86YTV1hFlzOuK5VjgFbhhU5+9Qc=} + engines: {node: '>=8'} + + read-pkg@3.0.0: + resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} + engines: {node: '>=4'} + + read-pkg@5.2.0: + resolution: {integrity: sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=} + engines: {node: '>=8'} + + read-pkg@9.0.1: + resolution: {integrity: sha1-sbgfsVEE9duxIba73um7yXOfVps=} + engines: {node: '>=18'} + + read@1.0.7: + resolution: {integrity: sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=} + engines: {node: '>=0.8'} + + read@4.1.0: + resolution: {integrity: sha1-2XwlVrAJtHsWtbuCMR1HfMdQNUg=} + engines: {node: ^18.17.0 || >=20.5.0} + + readable-stream@2.3.8: + resolution: {integrity: sha1-kRJegEK7obmIf0k0X2J3Anzovps=} + + readable-stream@3.6.2: + resolution: {integrity: sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=} + engines: {node: '>=8.10.0'} + + rechoir@0.6.2: + resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=} + engines: {node: '>= 0.10'} + + redent@3.0.0: + resolution: {integrity: sha1-5Ve3mYMWu1PJ8fVvpiY1LGljBZ8=} + engines: {node: '>=8'} + + require-directory@2.1.1: + resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha1-DwB18bslRHZs9zumpuKt/ryxPy0=} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha1-YWs9wsVwVrVYjDHN9LPWTbEzcg8=} + + resolve.exports@2.0.3: + resolution: {integrity: sha1-QZVebxtAE7dYb4c3SaY13qB+vj8=} + engines: {node: '>=10'} + + resolve@1.22.12: + resolution: {integrity: sha1-9bKmgIl8acI4oTzRaxVnH4tzVJ8=} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=} + engines: {node: '>=8'} + + retry@0.12.0: + resolution: {integrity: sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha1-D+E7lSLhRz9RtVjueW4I8R+bSJ8=} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-applescript@7.1.0: + resolution: {integrity: sha1-Lp5UxGZOwxBsW1Yw4knT1llcSRE=} + engines: {node: '>=18'} + + run-async@4.0.6: + resolution: {integrity: sha1-1TuGrLcfQmUP4j3is8G2trNLkpQ=} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=} + + rxjs@7.8.2: + resolution: {integrity: sha1-lVvEc+2K8RoAKivlIHG/R1Y4YHs=} + + safe-buffer@5.1.2: + resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=} + + safe-buffer@5.2.1: + resolution: {integrity: sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=} + + safer-buffer@2.1.2: + resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=} + + sax@1.6.0: + resolution: {integrity: sha1-2lljdikwe5fnxMso4ICnvDhWDVs=} + engines: {node: '>=11.0.0'} + + schema-utils@4.3.3: + resolution: {integrity: sha1-WxhQkS+jHfkHFpY9RdkSH9/An0Y=} + engines: {node: '>= 10.13.0'} + + secretlint@10.2.2: + resolution: {integrity: sha1-wM+ZcVOivvC2U4dNyHAw2qajUUA=} + engines: {node: '>=20.0.0'} + hasBin: true + + semver@5.7.2: + resolution: {integrity: sha1-SNVdtzfDKHzUg14X+hP+rOHEHvg=} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha1-VW0u+GiRRuRtzqS/3QlfNDTf/LQ=} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha1-Z9mf3NNc7CHm+Lh6f9UVoz+YK1g=} + engines: {node: '>=10'} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha1-KEZONgYOmR+noR0CedLT87V6foo=} + engines: {node: '>=10'} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha1-ObZGA33VDBT7RR5+TKxY7YuGP2k=} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@7.0.7: + resolution: {integrity: sha1-BuxAV21M6pbWgBClNFIL/x+UinI=} + engines: {node: '>=20.0.0'} + + shebang-command@1.2.0: + resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=} + engines: {node: '>=8'} + + shelljs@0.9.2: + resolution: {integrity: sha1-qKxyRDRSDNeuJNUgceN6GKwrsYM=} + engines: {node: '>=18'} + hasBin: true + + shx@0.4.0: + resolution: {integrity: sha1-xupqzn53jaCrMtLqud71nXiOkzY=} + engines: {node: '>=18'} + hasBin: true + + side-channel-list@1.0.1: + resolution: {integrity: sha1-wuC1oUpUCuvuO7xsP4ZmzJtQkSc=} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha1-1rtrN5Asb+9RdOX1M/q0xzKib0I=} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha1-Ed2hnVNo5Azp7CvcH7DsvAeQ7Oo=} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha1-6gLGLgXcS+pn1EQvD7ce4ZL44Ks=} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha1-qaF2f4r4QVURTqq9c/mSc8j1mtk=} + + signal-exit@4.1.0: + resolution: {integrity: sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=} + engines: {node: '>=14'} + + sigstore@4.1.1: + resolution: {integrity: sha1-KVmZPb+XjHWaXSPYVMvTcpttzZc=} + engines: {node: ^20.17.0 || >=22.9.0} + + simple-concat@1.0.1: + resolution: {integrity: sha1-9Gl2CCujXCJj8cirXt/ibEHJVS8=} + + simple-get@4.0.1: + resolution: {integrity: sha1-SjnbVJKHyXnTUhEvoD/Zn9a8NUM=} + + slash@3.0.0: + resolution: {integrity: sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha1-vjrd3N8JrDjuvo3Nx7GlenWwlc4=} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha1-UA6N0P1VsFgVCGJVsxla3ypF/ms=} + engines: {node: '>=10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha1-bh1x+k8YwF99D/IW3RakgdDo2a4=} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + smol-toml@1.6.1: + resolution: {integrity: sha1-T86198S4bCVEAk72huEv8Jg0Zb4=} + engines: {node: '>= 18'} + + smol-toml@1.7.0: + resolution: {integrity: sha1-7RslnOfgWQffGr51iXG9Cg7ywN0=} + engines: {node: '>= 18'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha1-uc205+mYUJ12WdaJznaXrCFkW+4=} + engines: {node: '>= 14'} + + socks@2.8.9: + resolution: {integrity: sha1-ql8TDKD4ikP6RPr0hpxQ0iqid1I=} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha1-MbJKnC5zwt6FBmwP631Edn7VKTI=} + + source-map-support@0.5.21: + resolution: {integrity: sha1-BP58f54e0tZiIzwoyys1ufY/bk8=} + + source-map@0.6.1: + resolution: {integrity: sha1-dHIq8y6WFOnCh6jQu95IteLxomM=} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha1-o2WKuH5bZCnIofO6AIPUxhyj7wI=} + engines: {node: '>= 12'} + + spdx-correct@3.2.0: + resolution: {integrity: sha1-T1qwZo8AWeNPnADc4zF4ShLeTpw=} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha1-XWB9J/yAb2bXtkp2ZlD6iQ8E7WY=} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha1-sGnmh7EpGjLxJok+12onp0XuITM=} + + split2@3.2.2: + resolution: {integrity: sha1-vyzyo32DgxLCSciSBv16F90SNl8=} + + split@1.0.1: + resolution: {integrity: sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=} + + sprintf-js@1.0.3: + resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + + ssri@12.0.0: + resolution: {integrity: sha1-vLQlhBfHAkcvgZGYHTyKdx/uaDI=} + engines: {node: ^18.17.0 || >=20.5.0} + + ssri@13.0.1: + resolution: {integrity: sha1-LYlGYU0z9NDISUa7Nw3OepN5/Rg=} + engines: {node: ^20.17.0 || >=22.9.0} + + stack-utils@2.0.6: + resolution: {integrity: sha1-qvB0gWnAL8M8gjKrzPkz9Uocw08=} + engines: {node: '>=10'} + + string-length@4.0.2: + resolution: {integrity: sha1-qKjce9XBqCubPIuH4SX2aHG25Xo=} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha1-FPja7G2B5yIdKjV+Zoyrc728p5Q=} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=} + + string_decoder@1.3.0: + resolution: {integrity: sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=} + + strip-ansi@6.0.1: + resolution: {integrity: sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha1-0iomlSKDamJ6+NBLXD/Sx/o+MuM=} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha1-nDUFwdtFvO3KPZz3oW9cWqOQGHg=} + engines: {node: '>=8'} + + strip-eof@1.0.0: + resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha1-wy4c7pQLazQyx3G8LFS8znPNMAE=} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=} + engines: {node: '>=8'} + + structured-source@4.0.0: + resolution: {integrity: sha1-DJ5Z7kPe3Y/GCmNzH2DjWBAqSUg=} + + supports-color@7.2.0: + resolution: {integrity: sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=} + engines: {node: '>=10'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha1-uOSFsXloHepJah56vfiYW9MUVGE=} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha1-btpL00SjyUrqN21MwxvHcxEDngk=} + engines: {node: '>= 0.4'} + + synckit@0.11.13: + resolution: {integrity: sha1-BipepX2Bvvw1iS+CVN5cVn6XyAo=} + engines: {node: ^14.18.0 || >=16.0.0} + + syncpack-darwin-arm64@15.3.2: + resolution: {integrity: sha1-3/zaXDs4DUHg+twadnhM/4BzKS0=} + cpu: [arm64] + os: [darwin] + + syncpack-darwin-x64@15.3.2: + resolution: {integrity: sha1-d//9jsRl8hFn/hKui7VvOYEFBwA=} + cpu: [x64] + os: [darwin] + + syncpack-linux-arm64-musl@15.3.2: + resolution: {integrity: sha1-XjfXe6qrlRN5JBKN9sFMX1fK+P0=} + cpu: [arm64] + os: [linux] + + syncpack-linux-arm64@15.3.2: + resolution: {integrity: sha1-XDO+betSYOKwg1tPp3pWXylXut0=} + cpu: [arm64] + os: [linux] + + syncpack-linux-x64-musl@15.3.2: + resolution: {integrity: sha1-ELxCuxMDVgZJVOm56+gyAjODJV4=} + cpu: [x64] + os: [linux] + + syncpack-linux-x64@15.3.2: + resolution: {integrity: sha1-9L9xO79uJw9RSfdZdvhcgzXtrvA=} + cpu: [x64] + os: [linux] + + syncpack-windows-arm64@15.3.2: + resolution: {integrity: sha1-2Pvwm98ktMtNFZBHqYWctnb9JAo=} + cpu: [arm64] + os: [win32] + + syncpack-windows-x64@15.3.2: + resolution: {integrity: sha1-SAProvB4nVg73BLeSq2WXiml8Z0=} + cpu: [x64] + os: [win32] + + syncpack@15.3.2: + resolution: {integrity: sha1-HyJc40MnSEy8uNH/5FQXNRhcqtE=} + engines: {node: '>=14.17.0'} + hasBin: true + + table@6.9.0: + resolution: {integrity: sha1-UAQK+mJkFBx1ZrO4HU2CxHqGaPU=} + engines: {node: '>=10.0.0'} + + tapable@2.3.3: + resolution: {integrity: sha1-XafJmSxGA4IhJnmFqyhCGoh58WA=} + engines: {node: '>=6'} + + tar-fs@2.1.5: + resolution: {integrity: sha1-M+nClBPc4MWK2n/3fbTlowr//nA=} + + tar-stream@2.2.0: + resolution: {integrity: sha1-rK2EwoQTawYNw/qmRHSqmuvXcoc=} + engines: {node: '>=6'} + + tar@7.5.11: + resolution: {integrity: sha1-ElD65F2YgGs21wOzCXP6jgptiGg=} + engines: {node: '>=18'} + + terminal-link@4.0.0: + resolution: {integrity: sha1-Xz5QMpQg+tl9B9Yk998YUdgpY/E=} + engines: {node: '>=18'} + + terser@5.48.0: + resolution: {integrity: sha1-izkRcc+7esSoj58Euhz6vFT2Q9s=} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha1-BKhphmHYBepvopO2y55jrARO8V4=} + engines: {node: '>=8'} + + text-extensions@1.9.0: + resolution: {integrity: sha1-GFPkX+45yUXOb2w2stZZtaq8KiY=} + engines: {node: '>=0.10'} + + text-table@0.2.0: + resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + + textextensions@6.11.0: + resolution: {integrity: sha1-hkU10J9JAmFQyW8LDXnx+ghp2xU=} + engines: {node: '>=4'} + + through2@2.0.5: + resolution: {integrity: sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=} + + through@2.3.8: + resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + + tinyglobby@0.2.12: + resolution: {integrity: sha1-rJQaQuDFdzvQtdCPMt6C50oaYbU=} + engines: {node: '>=12.0.0'} + + tinyglobby@0.2.17: + resolution: {integrity: sha1-ViqabJ6ys7Ej05cZ+a9btE/NdjE=} + engines: {node: '>=12.0.0'} + + tmp@0.2.7: + resolution: {integrity: sha1-JvTbEdFgHOgBLcuKeY7OHAapkFk=} + engines: {node: '>=14.14'} + + tmpl@1.0.5: + resolution: {integrity: sha1-hoPguQK7nCDE9ybjwLafNlGMB8w=} + + to-regex-range@5.0.1: + resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=} + engines: {node: '>=8.0'} + + tree-kill@1.2.2: + resolution: {integrity: sha1-TKCakJLIi3OnzcXooBtQeweQoMw=} + hasBin: true + + treeverse@3.0.0: + resolution: {integrity: sha1-3YLenrYCEVxuvXeldKrmcAPLSMg=} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + trim-newlines@3.0.1: + resolution: {integrity: sha1-Jgpdli2LdSQlsy86fbDcrNF2wUQ=} + engines: {node: '>=8'} + + ts-api-utils@2.5.0: + resolution: {integrity: sha1-Ss1KFV4ic0mQpe0f6el/ETvLN8E=} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-jest@29.4.11: + resolution: {integrity: sha1-QvXeIcN8zAGlgCU6+uaVWrv00LM=} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + esbuild: '*' + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: '>=4.3 <7' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true + + ts-loader@9.6.2: + resolution: {integrity: sha1-oI9JNd24ftvVjOM7eyVYwqd/3Uc=} + engines: {node: '>=12.0.0'} + peerDependencies: + loader-utils: '*' + typescript: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + loader-utils: + optional: true + + tsconfig-paths@4.2.0: + resolution: {integrity: sha1-73jhkDkTNEbSRL6sD9ahYy4tEHw=} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=} + + tslib@2.8.1: + resolution: {integrity: sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8=} + + tuf-js@4.1.0: + resolution: {integrity: sha1-rk75r6RW/LSvED3FCkO8Ax8GZgM=} + engines: {node: ^20.17.0 || >=22.9.0} + + tunnel-agent@0.6.0: + resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} + + tunnel@0.0.6: + resolution: {integrity: sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + type-check@0.4.0: + resolution: {integrity: sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=} + engines: {node: '>=4'} + + type-fest@0.18.1: + resolution: {integrity: sha1-20vBUaSiz07r+a3V23VQjbbMhB8=} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha1-jSojcNPfiG61yQraHFv2GIrPg4s=} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=} + engines: {node: '>=8'} + + type-fest@4.41.0: + resolution: {integrity: sha1-auHI5XMSc8K/H1itOcuuLJGkbFg=} + engines: {node: '>=16'} + + typed-rest-client@1.8.11: + resolution: {integrity: sha1-aQbwLjyR6NhRV58lWr8P1ggAoE0=} + + typedarray@0.0.6: + resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} + + typescript@5.9.3: + resolution: {integrity: sha1-W09Z4VMQqxeiFvXWz1PuR27eZw8=} + engines: {node: '>=14.17'} + hasBin: true + + typescript@6.0.3: + resolution: {integrity: sha1-kCUdwAeRbpcnhsuU100VsYVXfSE=} + engines: {node: '>=14.17'} + hasBin: true + + typical@4.0.0: + resolution: {integrity: sha1-y+r/O5164eK7+vWk5vEezP3pT8Q=} + engines: {node: '>=8'} + + uc.micro@2.1.0: + resolution: {integrity: sha1-+NP30OxMPeo1p+PI76TLi0XJ5+4=} + + uglify-js@3.19.3: + resolution: {integrity: sha1-gjFem7xvKyWIiFis0f/4RBA1t38=} + engines: {node: '>=0.8.0'} + hasBin: true + + underscore@1.13.8: + resolution: {integrity: sha1-qTohGGwEnb8OhHSW26cre9jB6Ss=} + + undici-types@7.24.6: + resolution: {integrity: sha1-YSdbSF1/1OnSacfPBOwoc8nMD5E=} + + undici@6.27.0: + resolution: {integrity: sha1-Qfnkj3xaQNJzdsqurYyan8e8qcQ=} + engines: {node: '>=18.17'} + + undici@7.28.0: + resolution: {integrity: sha1-l9ZFZBmLKFvCgfDo4pWX49Ef5+w=} + engines: {node: '>=20.18.1'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha1-G7mlHII6r51zqL/NPRoj3elLDOQ=} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha1-Tv1FyFpp4N1XbSVTL7+iKqXIoQQ=} + engines: {node: '>=18'} + + universal-user-agent@6.0.1: + resolution: {integrity: sha1-FfIPVdo8kwxXvdvxc0xmVNX9Nao=} + + universalify@2.0.1: + resolution: {integrity: sha1-Fo78IYCWTmOG0GHglN9hr+I5sY0=} + engines: {node: '>= 10.0.0'} + + unrs-resolver@1.12.2: + resolution: {integrity: sha1-psaIg5arulrarEyrZYffhm8dev0=} + + upath@2.0.1: + resolution: {integrity: sha1-UMc96mjW9rmQ9R0nnOYIFmXWGos=} + engines: {node: '>=4'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha1-ZNdttYcTE2rL60xJEUNmzGzC6A0=} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=} + + url-join@4.0.1: + resolution: {integrity: sha1-tkLiGiZGgI/6F4xMX9o5hE4Szec=} + + util-deprecate@1.0.2: + resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + + uuid@14.0.1: + resolution: {integrity: sha1-ill1s+A4kCv9FpoQtSAvXsDPP68=} + hasBin: true + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha1-uVcqv6Yr1VbBbXX968GkEdX/MXU=} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha1-/JH2uce6FchX9MssXe/uw51PQQo=} + + validate-npm-package-name@6.0.2: + resolution: {integrity: sha1-To0sTZOZdac90bemXo8I1EyF35Y=} + engines: {node: ^18.17.0 || >=20.5.0} + + version-range@4.15.0: + resolution: {integrity: sha1-id8ekhsU03UVqrXkLtSsBRXKssE=} + engines: {node: '>=4'} + + vscode-jsonrpc@9.0.1: + resolution: {integrity: sha1-XoSKSt3wBLYzcVb3hYoAbgg4tPU=} + engines: {node: '>=14.0.0'} + + vscode-languageclient@10.1.0: + resolution: {integrity: sha1-OMCdg29YM9WXL7VSSzYrnRch818=} + engines: {vscode: ^1.91.0} + + vscode-languageserver-protocol@3.18.2: + resolution: {integrity: sha1-5/s25royvHumIiV623imEmJz3cU=} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha1-RX7gQnGrOJmKCTxowjQvU/bkpjE=} + + vscode-languageserver-textdocument@1.0.13: + resolution: {integrity: sha1-gYRnRdd7n8eHkR5k4uEQ0kTJuLI=} + + vscode-languageserver-types@3.18.0: + resolution: {integrity: sha1-EyMhIpYEg2urcQyXSH5s2vub17s=} + + vscode-languageserver@10.1.0: + resolution: {integrity: sha1-6IB0MTmF2kpsCPrCvr1zN5ykv8U=} + hasBin: true + + vscode-uri@3.1.0: + resolution: {integrity: sha1-3QnsWmaji1w//8d0AVcTSW0U4Jw=} + + walk-up-path@4.0.0: + resolution: {integrity: sha1-WQZm3PgUbi1yMYFk8fKsbvUdQZg=} + engines: {node: 20 || >=22} + + walker@1.0.8: + resolution: {integrity: sha1-vUmNtHev5XPcBBhfAR06uKjXZT8=} + + watchpack@2.5.2: + resolution: {integrity: sha1-4S6C2EZ0Jm/Bxtv+OIkbkv8FIuw=} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} + + webpack-sources@3.5.1: + resolution: {integrity: sha1-dsJBhIbcwCsqoGlMEEF2woWP6Eo=} + engines: {node: '>=10.13.0'} + + webpack@5.108.4: + resolution: {integrity: sha1-FBgYpBFmJ3OguzLcVTasxUCZQ7c=} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-encoding@3.1.1: + resolution: {integrity: sha1-0PTvdpkF1CbhaI8+NDgambYLduU=} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha1-vBv5SphdxQOI1UqSWKxAXDyi/Ao=} + engines: {node: '>=18'} + + which@1.3.1: + resolution: {integrity: sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=} + engines: {node: '>= 8'} + hasBin: true + + which@5.0.0: + resolution: {integrity: sha1-2T8tk/eYNNQ2PH0MI+ANB8RmyNY=} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + which@6.0.1: + resolution: {integrity: sha1-AhZCRDoZj7k7eEpWBnIcsYz8v84=} + engines: {node: ^20.17.0 || >=22.9.0} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha1-3x1MIGhUNp7PPJpImPGyP72dFdM=} + + word-wrap@1.2.5: + resolution: {integrity: sha1-0sRcbdT7zmIaZvE2y+Mor9BBCzQ=} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} + + wrap-ansi@6.2.0: + resolution: {integrity: sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha1-VtwiNo7lcPrOG0mBmXXZuaXq0hQ=} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + + write-file-atomic@5.0.1: + resolution: {integrity: sha1-aN9HF8Vcb6QoGnhgtMK6Cm0rEec=} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + write-file-atomic@6.0.0: + resolution: {integrity: sha1-6cicgZGz7wYGvHn7kmgaoaoW+pM=} + engines: {node: ^18.17.0 || >=20.5.0} + + wsl-utils@0.1.0: + resolution: {integrity: sha1-h4PU32cdTVA2W+LuTHGRegVXuqs=} + engines: {node: '>=18'} + + xml2js@0.5.0: + resolution: {integrity: sha1-2UQGMfuy7YACA/rRBvJyT2LEk7c=} + engines: {node: '>=4.0.0'} + + xml@1.0.1: + resolution: {integrity: sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=} + + xmlbuilder@11.0.1: + resolution: {integrity: sha1-vpuuHIoEbnazESdyY0fQrXACvrM=} + engines: {node: '>=4.0'} + + xtend@4.0.2: + resolution: {integrity: sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=} + + yallist@4.0.0: + resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=} + + yallist@5.0.0: + resolution: {integrity: sha1-AOLeRDY57Q14/YfeDSdGn7z/tTM=} + engines: {node: '>=18'} + + yaml@2.9.0: + resolution: {integrity: sha1-eCdK/ZNZih391hMN9qVm3vy/mqQ=} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU=} + engines: {node: '>=12'} + + yargs@16.2.2: + resolution: {integrity: sha1-xWcx3KDSeIrghm3TyDkH1rq4X30=} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha1-mR3zmspnWhkrgW4eA2P5110qomk=} + engines: {node: '>=12'} + + yargs@17.7.3: + resolution: {integrity: sha1-d53/5ryv7FlqcXLpgyiaWIZH+qo=} + engines: {node: '>=12'} + + yauzl@3.4.0: + resolution: {integrity: sha1-iLKiFFXzfKfczy7rM7rLQ5IyJxk=} + engines: {node: '>=12'} + + yazl@2.5.1: + resolution: {integrity: sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU=} + + yocto-queue@0.1.0: + resolution: {integrity: sha1-ApTrPe4FAo0x7hpfosVWpqrxChs=} + engines: {node: '>=10'} + + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha1-fklk6o7EIrekCskX06NEz9IwS6o=} + engines: {node: '>=18'} + +snapshots: + + '@azu/format-text@1.0.2': {} + + '@azu/style-format@1.0.1': + dependencies: + '@azu/format-text': 1.0.2 + + '@azure/abort-controller@2.1.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-auth@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-client@1.10.2': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.24.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-rest-pipeline@1.24.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@typespec/ts-http-runtime': 0.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-tracing@1.3.1': + dependencies: + tslib: 2.8.1 + + '@azure/core-util@1.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@typespec/ts-http-runtime': 0.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/identity@4.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.2 + '@azure/core-rest-pipeline': 1.24.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.17.0 + '@azure/msal-node': 5.4.0 + open: 10.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/logger@1.3.0': + dependencies: + '@typespec/ts-http-runtime': 0.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/msal-browser@5.17.0': + dependencies: + '@azure/msal-common': 16.11.1 + + '@azure/msal-common@16.11.1': {} + + '@azure/msal-node@5.4.0': + dependencies: + '@azure/msal-common': 16.11.1 + jsonwebtoken: 9.0.3 + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@bcoe/v8-coverage@0.2.3': {} + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.4.5': + dependencies: + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + + '@emnapi/wasi-threads@1.0.4': + dependencies: + tslib: 2.8.1 + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@epic-web/invariant@1.0.0': {} + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': + dependencies: + eslint: 9.39.4 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.3.0 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@gar/promise-retry@1.0.3': {} + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@hutson/parse-repository-url@3.0.2': {} + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@25.9.4)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.9.4) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/confirm@5.1.21(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/core@10.3.2(@types/node@25.9.4)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.9.4) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/editor@4.2.23(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/external-editor': 1.0.3(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/expand@4.0.23(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/external-editor@1.0.3(@types/node@25.9.4)': + dependencies: + chardet: 2.2.0 + iconv-lite: 0.7.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/number@3.0.23(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/password@4.0.23(@types/node@25.9.4)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/prompts@7.10.1(@types/node@25.9.4)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@25.9.4) + '@inquirer/confirm': 5.1.21(@types/node@25.9.4) + '@inquirer/editor': 4.2.23(@types/node@25.9.4) + '@inquirer/expand': 4.0.23(@types/node@25.9.4) + '@inquirer/input': 4.3.1(@types/node@25.9.4) + '@inquirer/number': 3.0.23(@types/node@25.9.4) + '@inquirer/password': 4.0.23(@types/node@25.9.4) + '@inquirer/rawlist': 4.1.11(@types/node@25.9.4) + '@inquirer/search': 3.2.2(@types/node@25.9.4) + '@inquirer/select': 4.4.2(@types/node@25.9.4) + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/rawlist@4.1.11(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/search@3.2.2(@types/node@25.9.4)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.9.4) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/select@4.4.2(@types/node@25.9.4)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.9.4) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.9.4 + + '@inquirer/type@3.0.10(@types/node@25.9.4)': + optionalDependencies: + '@types/node': 25.9.4 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/cliui@9.0.0': {} + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@isaacs/string-locale-compare@1.1.0': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.15.0 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.6': {} + + '@jest/console@30.4.1': + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + chalk: 4.1.2 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + slash: 3.0.0 + + '@jest/core@30.4.2': + dependencies: + '@jest/console': 30.4.1 + '@jest/pattern': 30.4.0 + '@jest/reporters': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 4.4.0 + exit-x: 0.2.2 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-changed-files: 30.4.1 + jest-config: 30.4.2(@types/node@25.9.4) + jest-haste-map: 30.4.1 + jest-message-util: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-resolve-dependencies: 30.4.2 + jest-runner: 30.4.2 + jest-runtime: 30.4.2 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + jest-validate: 30.4.1 + jest-watcher: 30.4.1 + pretty-format: 30.4.1 + slash: 3.0.0 + transitivePeerDependencies: + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + '@jest/diff-sequences@30.0.1': {} + + '@jest/diff-sequences@30.4.0': {} + + '@jest/environment@30.4.1': + dependencies: + '@jest/fake-timers': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + jest-mock: 30.4.1 + + '@jest/expect-utils@30.4.1': + dependencies: + '@jest/get-type': 30.1.0 + + '@jest/expect@30.4.1': + dependencies: + expect: 30.4.1 + jest-snapshot: 30.4.1 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@30.4.1': + dependencies: + '@jest/types': 30.4.1 + '@sinonjs/fake-timers': 15.4.0 + '@types/node': 25.9.4 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 + + '@jest/get-type@30.1.0': {} + + '@jest/globals@30.4.1': + dependencies: + '@jest/environment': 30.4.1 + '@jest/expect': 30.4.1 + '@jest/types': 30.4.1 + jest-mock: 30.4.1 + transitivePeerDependencies: + - supports-color + + '@jest/pattern@30.4.0': + dependencies: + '@types/node': 25.9.4 + jest-regex-util: 30.4.0 + + '@jest/reporters@30.4.1': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 25.9.4 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + exit-x: 0.2.2 + glob: 10.5.0 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.2.0 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + jest-worker: 30.4.1 + slash: 3.0.0 + string-length: 4.0.2 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@30.4.1': + dependencies: + '@sinclair/typebox': 0.34.49 + + '@jest/snapshot-utils@30.4.1': + dependencies: + '@jest/types': 30.4.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + natural-compare: 1.4.0 + + '@jest/source-map@30.0.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@30.4.1': + dependencies: + '@jest/console': 30.4.1 + '@jest/types': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + + '@jest/test-sequencer@30.4.1': + dependencies: + '@jest/test-result': 30.4.1 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + slash: 3.0.0 + + '@jest/transform@30.4.1': + dependencies: + '@babel/core': 7.29.7 + '@jest/types': 30.4.1 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 7.0.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-regex-util: 30.4.0 + jest-util: 30.4.1 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + + '@jest/types@30.4.1': + dependencies: + '@jest/pattern': 30.4.0 + '@jest/schemas': 30.4.1 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.9.4 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@napi-rs/wasm-runtime@0.2.4': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.9.0 + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@npmcli/agent@4.0.2': + dependencies: + agent-base: 7.1.4 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + lru-cache: 11.5.2 + socks-proxy-agent: 8.0.5 + transitivePeerDependencies: + - supports-color + + '@npmcli/arborist@9.1.6': + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/fs': 4.0.0 + '@npmcli/installed-package-contents': 3.0.0 + '@npmcli/map-workspaces': 5.0.3 + '@npmcli/metavuln-calculator': 9.0.3 + '@npmcli/name-from-folder': 3.0.0 + '@npmcli/node-gyp': 4.0.0 + '@npmcli/package-json': 7.0.2 + '@npmcli/query': 4.0.1 + '@npmcli/redact': 3.2.2 + '@npmcli/run-script': 10.0.3 + bin-links: 5.0.0 + cacache: 20.0.4 + common-ancestor-path: 1.0.1 + hosted-git-info: 9.0.3 + json-stringify-nice: 1.1.4 + lru-cache: 11.5.2 + minimatch: 10.2.5 + nopt: 8.1.0 + npm-install-checks: 7.1.2 + npm-package-arg: 13.0.1 + npm-pick-manifest: 11.0.3 + npm-registry-fetch: 19.1.0 + pacote: 21.5.1 + parse-conflict-json: 4.0.0 + proc-log: 5.0.0 + proggy: 3.0.0 + promise-all-reject-late: 1.0.1 + promise-call-limit: 3.0.2 + semver: 7.7.2 + ssri: 12.0.0 + treeverse: 3.0.0 + walk-up-path: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@npmcli/fs@4.0.0': + dependencies: + semver: 7.7.2 + + '@npmcli/fs@5.0.0': + dependencies: + semver: 7.7.2 + + '@npmcli/git@6.0.3': + dependencies: + '@npmcli/promise-spawn': 8.0.3 + ini: 5.0.0 + lru-cache: 10.4.3 + npm-pick-manifest: 10.0.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + semver: 7.7.2 + which: 5.0.0 + + '@npmcli/git@7.0.2': + dependencies: + '@gar/promise-retry': 1.0.3 + '@npmcli/promise-spawn': 9.0.1 + ini: 6.0.0 + lru-cache: 11.5.2 + npm-pick-manifest: 11.0.3 + proc-log: 6.1.0 + semver: 7.7.2 + which: 6.0.1 + + '@npmcli/installed-package-contents@3.0.0': + dependencies: + npm-bundled: 4.0.0 + npm-normalize-package-bin: 4.0.0 + + '@npmcli/installed-package-contents@4.0.0': + dependencies: + npm-bundled: 5.0.0 + npm-normalize-package-bin: 5.0.0 + + '@npmcli/map-workspaces@5.0.3': + dependencies: + '@npmcli/name-from-folder': 4.0.0 + '@npmcli/package-json': 7.0.2 + glob: 13.0.6 + minimatch: 10.2.5 + + '@npmcli/metavuln-calculator@9.0.3': + dependencies: + cacache: 20.0.4 + json-parse-even-better-errors: 5.0.0 + pacote: 21.5.1 + proc-log: 6.1.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + '@npmcli/name-from-folder@3.0.0': {} + + '@npmcli/name-from-folder@4.0.0': {} + + '@npmcli/node-gyp@4.0.0': {} + + '@npmcli/node-gyp@5.0.0': {} + + '@npmcli/package-json@7.0.2': + dependencies: + '@npmcli/git': 7.0.2 + glob: 11.1.0 + hosted-git-info: 9.0.3 + json-parse-even-better-errors: 5.0.0 + proc-log: 6.1.0 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + '@npmcli/promise-spawn@8.0.3': + dependencies: + which: 5.0.0 + + '@npmcli/promise-spawn@9.0.1': + dependencies: + which: 6.0.1 + + '@npmcli/query@4.0.1': + dependencies: + postcss-selector-parser: 7.1.4 + + '@npmcli/redact@3.2.2': {} + + '@npmcli/redact@4.0.0': {} + + '@npmcli/run-script@10.0.3': + dependencies: + '@npmcli/node-gyp': 5.0.0 + '@npmcli/package-json': 7.0.2 + '@npmcli/promise-spawn': 9.0.1 + node-gyp: 12.4.0 + proc-log: 6.1.0 + which: 6.0.1 + + '@nx/devkit@22.7.6(nx@22.7.6)': + dependencies: + '@zkochan/js-yaml': 0.0.7 + ejs: 5.0.1 + enquirer: 2.3.6 + minimatch: 10.2.5 + nx: 22.7.6 + semver: 7.7.2 + tslib: 2.8.1 + yargs-parser: 21.1.1 + + '@nx/nx-darwin-arm64@22.7.6': + optional: true + + '@nx/nx-darwin-x64@22.7.6': + optional: true + + '@nx/nx-freebsd-x64@22.7.6': + optional: true + + '@nx/nx-linux-arm-gnueabihf@22.7.6': + optional: true + + '@nx/nx-linux-arm64-gnu@22.7.6': + optional: true + + '@nx/nx-linux-arm64-musl@22.7.6': + optional: true + + '@nx/nx-linux-x64-gnu@22.7.6': + optional: true + + '@nx/nx-linux-x64-musl@22.7.6': + optional: true + + '@nx/nx-win32-arm64-msvc@22.7.6': + optional: true + + '@nx/nx-win32-x64-msvc@22.7.6': + optional: true + + '@octokit/auth-token@4.0.0': {} + + '@octokit/core@5.2.2': + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.1 + '@octokit/request': 8.4.1 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + + '@octokit/endpoint@9.0.6': + dependencies: + '@octokit/types': 13.10.0 + universal-user-agent: 6.0.1 + + '@octokit/graphql@7.1.1': + dependencies: + '@octokit/request': 8.4.1 + '@octokit/types': 13.10.0 + universal-user-agent: 6.0.1 + + '@octokit/openapi-types@24.2.0': {} + + '@octokit/plugin-enterprise-rest@6.0.1': {} + + '@octokit/plugin-paginate-rest@11.4.4-cjs.2(@octokit/core@5.2.2)': + dependencies: + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 + + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.2)': + dependencies: + '@octokit/core': 5.2.2 + + '@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1(@octokit/core@5.2.2)': + dependencies: + '@octokit/core': 5.2.2 + '@octokit/types': 13.10.0 + + '@octokit/request-error@5.1.1': + dependencies: + '@octokit/types': 13.10.0 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request@8.4.1': + dependencies: + '@octokit/endpoint': 9.0.6 + '@octokit/request-error': 5.1.1 + '@octokit/types': 13.10.0 + universal-user-agent: 6.0.1 + + '@octokit/rest@20.1.2': + dependencies: + '@octokit/core': 5.2.2 + '@octokit/plugin-paginate-rest': 11.4.4-cjs.2(@octokit/core@5.2.2) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.2) + '@octokit/plugin-rest-endpoint-methods': 13.3.2-cjs.1(@octokit/core@5.2.2) + + '@octokit/types@13.10.0': + dependencies: + '@octokit/openapi-types': 24.2.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.3.6': {} + + '@rspack/binding-darwin-arm64@2.1.3': + optional: true + + '@rspack/binding-darwin-x64@2.1.3': + optional: true + + '@rspack/binding-linux-arm64-gnu@2.1.3': + optional: true + + '@rspack/binding-linux-arm64-musl@2.1.3': + optional: true + + '@rspack/binding-linux-riscv64-gnu@2.1.3': + optional: true + + '@rspack/binding-linux-riscv64-musl@2.1.3': + optional: true + + '@rspack/binding-linux-x64-gnu@2.1.3': + optional: true + + '@rspack/binding-linux-x64-musl@2.1.3': + optional: true + + '@rspack/binding-wasm32-wasi@2.1.3': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + + '@rspack/binding-win32-arm64-msvc@2.1.3': + optional: true + + '@rspack/binding-win32-ia32-msvc@2.1.3': + optional: true + + '@rspack/binding-win32-x64-msvc@2.1.3': + optional: true + + '@rspack/binding@2.1.3': + optionalDependencies: + '@rspack/binding-darwin-arm64': 2.1.3 + '@rspack/binding-darwin-x64': 2.1.3 + '@rspack/binding-linux-arm64-gnu': 2.1.3 + '@rspack/binding-linux-arm64-musl': 2.1.3 + '@rspack/binding-linux-riscv64-gnu': 2.1.3 + '@rspack/binding-linux-riscv64-musl': 2.1.3 + '@rspack/binding-linux-x64-gnu': 2.1.3 + '@rspack/binding-linux-x64-musl': 2.1.3 + '@rspack/binding-wasm32-wasi': 2.1.3 + '@rspack/binding-win32-arm64-msvc': 2.1.3 + '@rspack/binding-win32-ia32-msvc': 2.1.3 + '@rspack/binding-win32-x64-msvc': 2.1.3 + + '@rspack/cli@2.1.3(@rspack/core@2.1.3)': + dependencies: + '@rspack/core': 2.1.3 + + '@rspack/core@2.1.3': + dependencies: + '@rspack/binding': 2.1.3 + + '@secretlint/config-creator@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + + '@secretlint/config-loader@10.2.2': + dependencies: + '@secretlint/profiler': 10.2.2 + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 + ajv: 8.20.0 + debug: 4.4.3 + rc-config-loader: 4.1.4 + transitivePeerDependencies: + - supports-color + + '@secretlint/core@10.2.2': + dependencies: + '@secretlint/profiler': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3 + structured-source: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@secretlint/formatter@10.2.2': + dependencies: + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 + '@textlint/linter-formatter': 15.7.1 + '@textlint/module-interop': 15.7.1 + '@textlint/types': 15.7.1 + chalk: 5.6.2 + debug: 4.4.3 + pluralize: 8.0.0 + strip-ansi: 7.2.0 + table: 6.9.0 + terminal-link: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@secretlint/node@10.2.2': + dependencies: + '@secretlint/config-loader': 10.2.2 + '@secretlint/core': 10.2.2 + '@secretlint/formatter': 10.2.2 + '@secretlint/profiler': 10.2.2 + '@secretlint/source-creator': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3 + p-map: 7.0.5 + transitivePeerDependencies: + - supports-color + + '@secretlint/profiler@10.2.2': {} + + '@secretlint/resolver@10.2.2': {} + + '@secretlint/secretlint-formatter-sarif@10.2.2': + dependencies: + node-sarif-builder: 3.4.0 + + '@secretlint/secretlint-rule-no-dotenv@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + + '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} + + '@secretlint/source-creator@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + istextorbinary: 9.5.0 + + '@secretlint/types@10.2.2': {} + + '@sigstore/bundle@4.0.0': + dependencies: + '@sigstore/protobuf-specs': 0.5.1 + + '@sigstore/core@3.2.1': {} + + '@sigstore/protobuf-specs@0.5.1': {} + + '@sigstore/sign@4.1.1': + dependencies: + '@gar/promise-retry': 1.0.3 + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.2.1 + '@sigstore/protobuf-specs': 0.5.1 + make-fetch-happen: 15.0.6 + proc-log: 6.1.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@4.0.2': + dependencies: + '@sigstore/protobuf-specs': 0.5.1 + tuf-js: 4.1.0 + transitivePeerDependencies: + - supports-color + + '@sigstore/verify@3.1.1': + dependencies: + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.2.1 + '@sigstore/protobuf-specs': 0.5.1 + + '@sinclair/typebox@0.34.49': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@15.4.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@textlint/ast-node-types@15.7.1': {} + + '@textlint/linter-formatter@15.7.1': + dependencies: + '@azu/format-text': 1.0.2 + '@azu/style-format': 1.0.1 + '@textlint/module-interop': 15.7.1 + '@textlint/resolver': 15.7.1 + '@textlint/types': 15.7.1 + chalk: 4.1.2 + debug: 4.4.3 + js-yaml: 4.3.0 + lodash: 4.18.1 + pluralize: 2.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + table: 6.9.0 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + '@textlint/module-interop@15.7.1': {} + + '@textlint/resolver@15.7.1': {} + + '@textlint/types@15.7.1': + dependencies: + '@textlint/ast-node-types': 15.7.1 + + '@tufjs/canonical-json@2.0.0': {} + + '@tufjs/models@4.1.0': + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 10.2.5 + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.7 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.7 + + '@types/command-line-args@5.2.3': {} + + '@types/emscripten@1.41.5': {} + + '@types/estree@1.0.9': {} + + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 25.9.4 + + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 25.9.4 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@30.0.0': + dependencies: + expect: 30.4.1 + pretty-format: 30.4.1 + + '@types/json-schema@7.0.15': {} + + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 25.9.4 + + '@types/lodash@4.17.24': {} + + '@types/minimatch@5.1.2': {} + + '@types/minimist@1.2.5': {} + + '@types/node@25.9.4': + dependencies: + undici-types: 7.24.6 + + '@types/normalize-package-data@2.4.4': {} + + '@types/sarif@2.1.7': {} + + '@types/stack-utils@2.0.3': {} + + '@types/tmp@0.2.6': {} + + '@types/vscode@1.125.0': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@16.0.11': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4)(typescript@6.0.3))(eslint@9.39.4)(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/type-utils': 8.60.1(eslint@9.39.4)(typescript@6.0.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4)(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.60.1 + eslint: 9.39.4 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.60.1(eslint@9.39.4)(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.60.1 + debug: 4.4.3 + eslint: 9.39.4 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.60.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@6.0.3) + '@typescript-eslint/types': 8.60.1 + debug: 4.4.3 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.60.1': + dependencies: + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/visitor-keys': 8.60.1 + + '@typescript-eslint/tsconfig-utils@8.60.1(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/type-utils@8.60.1(eslint@9.39.4)(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4)(typescript@6.0.3) + debug: 4.4.3 + eslint: 9.39.4 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.60.1': {} + + '@typescript-eslint/typescript-estree@8.60.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.60.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@6.0.3) + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/visitor-keys': 8.60.1 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.60.1(eslint@9.39.4)(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@6.0.3) + eslint: 9.39.4 + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.60.1': + dependencies: + '@typescript-eslint/types': 8.60.1 + eslint-visitor-keys: 5.0.1 + + '@typespec/ts-http-runtime@0.3.6': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@ungap/structured-clone@1.3.2': {} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + optional: true + + '@unrs/resolver-binding-android-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + optional: true + + '@vscode/vsce-sign-alpine-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-alpine-x64@2.0.6': + optional: true + + '@vscode/vsce-sign-darwin-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-darwin-x64@2.0.6': + optional: true + + '@vscode/vsce-sign-linux-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-linux-arm@2.0.6': + optional: true + + '@vscode/vsce-sign-linux-x64@2.0.6': + optional: true + + '@vscode/vsce-sign-win32-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-win32-x64@2.0.6': + optional: true + + '@vscode/vsce-sign@2.0.9': + optionalDependencies: + '@vscode/vsce-sign-alpine-arm64': 2.0.6 + '@vscode/vsce-sign-alpine-x64': 2.0.6 + '@vscode/vsce-sign-darwin-arm64': 2.0.6 + '@vscode/vsce-sign-darwin-x64': 2.0.6 + '@vscode/vsce-sign-linux-arm': 2.0.6 + '@vscode/vsce-sign-linux-arm64': 2.0.6 + '@vscode/vsce-sign-linux-x64': 2.0.6 + '@vscode/vsce-sign-win32-arm64': 2.0.6 + '@vscode/vsce-sign-win32-x64': 2.0.6 + + '@vscode/vsce@3.9.2': + dependencies: + '@azure/identity': 4.13.1 + '@secretlint/node': 10.2.2 + '@secretlint/secretlint-formatter-sarif': 10.2.2 + '@secretlint/secretlint-rule-no-dotenv': 10.2.2 + '@secretlint/secretlint-rule-preset-recommend': 10.2.2 + '@vscode/vsce-sign': 2.0.9 + azure-devops-node-api: 12.5.0 + chalk: 4.1.2 + cheerio: 1.2.0 + cockatiel: 3.2.1 + commander: 12.1.0 + form-data: 4.0.6 + glob: 13.0.6 + hosted-git-info: 4.1.0 + jsonc-parser: 3.3.1 + leven: 3.1.0 + markdown-it: 14.3.0 + mime: 1.6.0 + minimatch: 10.2.5 + parse-semver: 1.1.1 + read: 1.0.7 + secretlint: 10.2.2 + semver: 7.8.5 + tmp: 0.2.7 + typed-rest-client: 1.8.11 + url-join: 4.0.1 + xml2js: 0.5.0 + yauzl: 3.4.0 + yazl: 2.5.1 + optionalDependencies: + keytar: 7.9.0 + transitivePeerDependencies: + - supports-color + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + '@yarnpkg/fslib@2.10.4': + dependencies: + '@yarnpkg/libzip': 2.3.0 + tslib: 1.14.1 + + '@yarnpkg/libzip@2.3.0': + dependencies: + '@types/emscripten': 1.41.5 + tslib: 1.14.1 + + '@yarnpkg/lockfile@1.1.0': {} + + '@zkochan/js-yaml@0.0.7': + dependencies: + argparse: 2.0.1 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abbrev@3.0.1: {} + + abbrev@4.0.0: {} + + acorn-import-phases@1.0.4(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + add-stream@1.0.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-formats@2.1.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-keywords@5.1.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + fast-deep-equal: 3.1.3 + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + aproba@2.0.0: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-back@3.1.0: {} + + array-ify@1.0.0: {} + + arrify@1.0.1: {} + + astral-regex@2.0.0: {} + + asynckit@0.4.0: {} + + axios@1.16.0: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.6 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + + axios@1.18.1: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.6 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + - supports-color + + azure-devops-node-api@12.5.0: + dependencies: + tunnel: 0.0.6 + typed-rest-client: 1.8.11 + + babel-jest@30.4.1(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@jest/transform': 30.4.1 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 7.0.1 + babel-preset-jest: 30.4.0(@babel/core@7.29.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@7.0.1: + dependencies: + '@babel/helper-plugin-utils': 7.29.7 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-instrument: 6.0.3 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@30.4.0: + dependencies: + '@types/babel__core': 7.20.5 + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7) + + babel-preset-jest@30.4.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + babel-plugin-jest-hoist: 30.4.0 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + + balanced-match@1.0.2: {} + + balanced-match@4.0.3: {} + + balanced-match@4.0.4: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.42: {} + + before-after-hook@2.2.3: {} + + big.js@5.2.2: {} + + bin-links@5.0.0: + dependencies: + cmd-shim: 7.0.0 + npm-normalize-package-bin: 4.0.0 + proc-log: 5.0.0 + read-cmd-shim: 5.0.0 + write-file-atomic: 6.0.0 + + binary-extensions@2.3.0: {} + + binaryextensions@6.11.0: + dependencies: + editions: 6.22.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + boundary@2.0.0: {} + + brace-expansion@1.1.15: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.1: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.3 + + brace-expansion@5.0.7: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.5: + dependencies: + baseline-browser-mapping: 2.10.42 + caniuse-lite: 1.0.30001803 + electron-to-chromium: 1.5.389 + node-releases: 2.0.50 + update-browserslist-db: 1.2.3(browserslist@4.28.5) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-crc32@0.2.13: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + byte-size@8.1.1: {} + + cacache@20.0.4: + dependencies: + '@npmcli/fs': 5.0.0 + fs-minipass: 3.0.3 + glob: 13.0.6 + lru-cache: 11.5.2 + minipass: 7.1.3 + minipass-collect: 2.0.1 + minipass-flush: 1.0.7 + minipass-pipeline: 1.2.4 + p-map: 7.0.5 + ssri: 13.0.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001803: {} + + chalk@4.1.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + char-regex@1.0.2: {} + + chardet@2.2.0: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.2.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.28.0 + whatwg-mimetype: 4.0.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@1.1.4: + optional: true + + chownr@3.0.0: {} + + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + ci-info@4.3.1: {} + + ci-info@4.4.0: {} + + cjs-module-lexer@2.2.0: {} + + clean-stack@2.2.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.6.1: {} + + cli-width@4.1.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + cmd-shim@6.0.3: {} + + cmd-shim@7.0.0: {} + + co@4.6.0: {} + + cockatiel@3.2.1: {} + + collect-v8-coverage@1.0.3: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + columnify@1.6.0: + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-line-args@5.2.1: + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + + commander@12.1.0: {} + + commander@2.20.3: {} + + common-ancestor-path@1.0.1: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + concat-map@0.0.1: {} + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + console-control-strings@1.1.0: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-core@5.0.1: + dependencies: + add-stream: 1.0.0 + conventional-changelog-writer: 6.0.1 + conventional-commits-parser: 4.0.0 + dateformat: 3.0.3 + get-pkg-repo: 4.2.1 + git-raw-commits: 3.0.0 + git-remote-origin-url: 2.0.0 + git-semver-tags: 5.0.1 + normalize-package-data: 3.0.3 + read-pkg: 3.0.0 + read-pkg-up: 3.0.0 + + conventional-changelog-preset-loader@3.0.0: {} + + conventional-changelog-writer@6.0.1: + dependencies: + conventional-commits-filter: 3.0.0 + dateformat: 3.0.3 + handlebars: 4.7.9 + json-stringify-safe: 5.0.1 + meow: 8.1.2 + semver: 7.7.2 + split: 1.0.1 + + conventional-commits-filter@3.0.0: + dependencies: + lodash.ismatch: 4.4.0 + modify-values: 1.0.1 + + conventional-commits-parser@4.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + + conventional-recommended-bump@7.0.1: + dependencies: + concat-stream: 2.0.0 + conventional-changelog-preset-loader: 3.0.0 + conventional-commits-filter: 3.0.0 + conventional-commits-parser: 4.0.0 + git-raw-commits: 3.0.0 + git-semver-tags: 5.0.1 + meow: 8.1.2 + + convert-source-map@2.0.0: {} + + copy-webpack-plugin@14.0.0(webpack@5.108.4): + dependencies: + glob-parent: 6.0.2 + normalize-path: 3.0.0 + schema-utils: 4.3.3 + serialize-javascript: 7.0.7 + tinyglobby: 0.2.17 + webpack: 5.108.4 + + core-util-is@1.0.3: {} + + cosmiconfig@9.0.0(typescript@5.9.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.9.3 + + cross-env@10.1.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-what@6.2.2: {} + + cssesc@3.0.0: {} + + dargs@7.0.0: {} + + dateformat@3.0.3: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + optional: true + + dedent@1.5.3: {} + + dedent@1.7.2: {} + + deep-extend@0.6.0: + optional: true + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + deprecation@2.3.1: {} + + detect-libc@2.1.2: + optional: true + + detect-newline@3.1.0: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@12.0.3: + dependencies: + dotenv: 16.4.7 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + editions@6.22.0: + dependencies: + version-range: 4.15.0 + + ejs@5.0.1: {} + + electron-to-chromium@1.5.389: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.24.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + enquirer@2.3.6: + dependencies: + ansi-colors: 4.1.3 + + entities@4.5.0: {} + + entities@6.0.1: {} + + entities@7.0.1: {} + + env-paths@2.2.1: {} + + envinfo@7.13.0: {} + + environment@1.1.0: {} + + err-code@2.0.3: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + esbuild-loader@4.5.0(webpack@5.108.4): + dependencies: + esbuild: 0.28.1 + get-tsconfig: 4.14.0 + loader-utils: 2.0.4 + webpack: 5.108.4 + webpack-sources: 3.5.1 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@8.10.2(eslint@9.39.4): + dependencies: + eslint: 9.39.4 + + eslint-plugin-simple-import-sort@10.0.0(eslint@9.39.4): + dependencies: + eslint: 9.39.4 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 4.2.1 + + esprima@4.0.1: {} + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + execa@1.0.0: + dependencies: + cross-spawn: 6.0.6 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + execa@5.0.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.0 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit-x@0.2.2: {} + + expand-template@2.0.3: + optional: true + + expect@30.4.1: + dependencies: + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-util: 30.4.1 + + exponential-backoff@3.1.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.1.3: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-replace@3.0.0: + dependencies: + array-back: 3.1.0 + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flat@5.0.2: {} + + flatted@3.4.2: {} + + follow-redirects@1.16.0: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.6: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + + fs-constants@1.0.0: {} + + fs-extra@11.3.6: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.3 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-pkg-repo@4.2.1: + dependencies: + '@hutson/parse-repository-url': 3.0.2 + hosted-git-info: 4.1.0 + through2: 2.0.5 + yargs: 16.2.2 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-stream@4.1.0: + dependencies: + pump: 3.0.4 + + get-stream@6.0.0: {} + + get-stream@6.0.1: {} + + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + git-raw-commits@3.0.0: + dependencies: + dargs: 7.0.0 + meow: 8.1.2 + split2: 3.2.2 + + git-remote-origin-url@2.0.0: + dependencies: + gitconfiglocal: 1.0.0 + pify: 2.3.0 + + git-semver-tags@5.0.1: + dependencies: + meow: 8.1.2 + semver: 7.7.2 + + git-up@7.0.0: + dependencies: + is-ssh: 1.4.1 + parse-url: 8.1.0 + + git-url-parse@14.0.0: + dependencies: + git-up: 7.0.0 + + gitconfiglocal@1.0.0: + dependencies: + ini: 1.3.8 + + github-from-package@0.0.0: + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@11.1.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.2.3 + minimatch: 10.2.5 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.2 + + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@14.0.0: {} + + globby@14.1.0: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 + slash: 5.1.0 + unicorn-magic: 0.3.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + handlebars@4.7.9: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + hard-rejection@2.1.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-unicode@2.0.1: {} + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hosted-git-info@8.1.0: + dependencies: + lru-cache: 10.4.3 + + hosted-git-info@9.0.3: + dependencies: + lru-cache: 11.5.2 + + html-escaper@2.0.2: {} + + htmlparser2@10.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 7.0.1 + + http-cache-semantics@4.2.0: {} + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore-walk@8.0.0: + dependencies: + minimatch: 10.2.5 + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.1.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + index-to-position@1.2.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@5.0.0: {} + + ini@6.0.0: {} + + init-package-json@8.2.2: + dependencies: + '@npmcli/package-json': 7.0.2 + npm-package-arg: 13.0.1 + promzard: 2.0.0 + read: 4.1.0 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 6.0.2 + + inquirer@12.9.6(@types/node@25.9.4): + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.9.4) + '@inquirer/prompts': 7.10.1(@types/node@25.9.4) + '@inquirer/type': 3.0.10(@types/node@25.9.4) + mute-stream: 2.0.0 + run-async: 4.0.6 + rxjs: 7.8.2 + optionalDependencies: + '@types/node': 25.9.4 + + interpret@1.4.0: {} + + ip-address@10.2.0: {} + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@1.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-obj@1.1.0: {} + + is-ssh@1.4.1: + dependencies: + protocols: 2.0.2 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-text-path@1.0.1: + dependencies: + text-extensions: 1.9.0 + + is-unicode-supported@0.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isexe@3.1.5: {} + + isexe@4.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-coverage: 3.2.2 + semver: 7.8.5 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + debug: 4.4.3 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + istextorbinary@9.5.0: + dependencies: + binaryextensions: 6.11.0 + editions: 6.22.0 + textextensions: 6.11.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jackspeak@4.2.3: + dependencies: + '@isaacs/cliui': 9.0.0 + + jest-changed-files@30.4.1: + dependencies: + execa: 5.1.1 + jest-util: 30.4.1 + p-limit: 3.1.0 + + jest-circus@30.4.2: + dependencies: + '@jest/environment': 30.4.1 + '@jest/expect': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.7.2 + is-generator-fn: 2.1.0 + jest-each: 30.4.1 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-runtime: 30.4.2 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + p-limit: 3.1.0 + pretty-format: 30.4.1 + pure-rand: 7.0.1 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@30.4.2(@types/node@25.9.4): + dependencies: + '@jest/core': 30.4.2 + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + chalk: 4.1.2 + exit-x: 0.2.2 + import-local: 3.2.0 + jest-config: 30.4.2(@types/node@25.9.4) + jest-util: 30.4.1 + jest-validate: 30.4.1 + yargs: 17.7.3 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + jest-config@30.4.2(@types/node@25.9.4): + dependencies: + '@babel/core': 7.29.7 + '@jest/get-type': 30.1.0 + '@jest/pattern': 30.4.0 + '@jest/test-sequencer': 30.4.1 + '@jest/types': 30.4.1 + babel-jest: 30.4.1(@babel/core@7.29.7) + chalk: 4.1.2 + ci-info: 4.4.0 + deepmerge: 4.3.1 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-circus: 30.4.2 + jest-docblock: 30.4.0 + jest-environment-node: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-runner: 30.4.2 + jest-util: 30.4.1 + jest-validate: 30.4.1 + parse-json: 5.2.0 + pretty-format: 30.4.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 25.9.4 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@30.4.1: + dependencies: + '@jest/diff-sequences': 30.4.0 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.4.1 + + jest-docblock@30.4.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.4.1 + chalk: 4.1.2 + jest-util: 30.4.1 + pretty-format: 30.4.1 + + jest-environment-node@30.4.1: + dependencies: + '@jest/environment': 30.4.1 + '@jest/fake-timers': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + jest-mock: 30.4.1 + jest-util: 30.4.1 + jest-validate: 30.4.1 + + jest-haste-map@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 30.4.0 + jest-util: 30.4.1 + jest-worker: 30.4.1 + picomatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-junit@17.0.0: + dependencies: + mkdirp: 1.0.4 + strip-ansi: 6.0.1 + uuid: 14.0.1 + xml: 1.0.1 + + jest-leak-detector@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + pretty-format: 30.4.1 + + jest-matcher-utils@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.4.1 + pretty-format: 30.4.1 + + jest-message-util@30.4.1: + dependencies: + '@babel/code-frame': 7.29.7 + '@jest/types': 30.4.1 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-util: 30.4.1 + picomatch: 4.0.5 + pretty-format: 30.4.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + jest-util: 30.4.1 + + jest-pnp-resolver@1.2.3(jest-resolve@30.4.1): + optionalDependencies: + jest-resolve: 30.4.1 + + jest-regex-util@30.4.0: {} + + jest-resolve-dependencies@30.4.2: + dependencies: + jest-regex-util: 30.4.0 + jest-snapshot: 30.4.1 + transitivePeerDependencies: + - supports-color + + jest-resolve@30.4.1: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-pnp-resolver: 1.2.3(jest-resolve@30.4.1) + jest-util: 30.4.1 + jest-validate: 30.4.1 + slash: 3.0.0 + unrs-resolver: 1.12.2 + + jest-runner@30.4.2: + dependencies: + '@jest/console': 30.4.1 + '@jest/environment': 30.4.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + chalk: 4.1.2 + emittery: 0.13.1 + exit-x: 0.2.2 + graceful-fs: 4.2.11 + jest-docblock: 30.4.0 + jest-environment-node: 30.4.1 + jest-haste-map: 30.4.1 + jest-leak-detector: 30.4.1 + jest-message-util: 30.4.1 + jest-resolve: 30.4.1 + jest-runtime: 30.4.2 + jest-util: 30.4.1 + jest-watcher: 30.4.1 + jest-worker: 30.4.1 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@30.4.2: + dependencies: + '@jest/environment': 30.4.1 + '@jest/fake-timers': 30.4.1 + '@jest/globals': 30.4.1 + '@jest/source-map': 30.0.1 + '@jest/test-result': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + chalk: 4.1.2 + cjs-module-lexer: 2.2.0 + collect-v8-coverage: 1.0.3 + glob: 10.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 30.4.1 + jest-message-util: 30.4.1 + jest-mock: 30.4.1 + jest-regex-util: 30.4.0 + jest-resolve: 30.4.1 + jest-snapshot: 30.4.1 + jest-util: 30.4.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@30.4.1: + dependencies: + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/types': 7.29.7 + '@jest/expect-utils': 30.4.1 + '@jest/get-type': 30.1.0 + '@jest/snapshot-utils': 30.4.1 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7) + chalk: 4.1.2 + expect: 30.4.1 + graceful-fs: 4.2.11 + jest-diff: 30.4.1 + jest-matcher-utils: 30.4.1 + jest-message-util: 30.4.1 + jest-util: 30.4.1 + pretty-format: 30.4.1 + semver: 7.8.5 + synckit: 0.11.13 + transitivePeerDependencies: + - supports-color + + jest-util@30.4.1: + dependencies: + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + chalk: 4.1.2 + ci-info: 4.4.0 + graceful-fs: 4.2.11 + picomatch: 4.0.5 + + jest-validate@30.4.1: + dependencies: + '@jest/get-type': 30.1.0 + '@jest/types': 30.4.1 + camelcase: 6.3.0 + chalk: 4.1.2 + leven: 3.1.0 + pretty-format: 30.4.1 + + jest-watcher@30.4.1: + dependencies: + '@jest/test-result': 30.4.1 + '@jest/types': 30.4.1 + '@types/node': 25.9.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 30.4.1 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 25.9.4 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@30.4.1: + dependencies: + '@types/node': 25.9.4 + '@ungap/structured-clone': 1.3.2 + jest-util: 30.4.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@30.4.2(@types/node@25.9.4): + dependencies: + '@jest/core': 30.4.2 + '@jest/types': 30.4.1 + import-local: 3.2.0 + jest-cli: 30.4.2(@types/node@25.9.4) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - esbuild-register + - supports-color + - ts-node + + js-tokens@4.0.0: {} + + js-yaml@3.15.0: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@4.0.0: {} + + json-parse-even-better-errors@5.0.0: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-nice@1.1.4: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.2.0: {} + + jsonc-parser@3.3.1: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonwebtoken@9.0.3: + dependencies: + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.8.5 + + just-diff-apply@5.5.0: {} + + just-diff@6.0.2: {} + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + keytar@7.9.0: + dependencies: + node-addon-api: 4.3.0 + prebuild-install: 7.1.3 + optional: true + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + lerna@9.0.7(@types/node@25.9.4): + dependencies: + '@npmcli/arborist': 9.1.6 + '@npmcli/package-json': 7.0.2 + '@npmcli/run-script': 10.0.3 + '@nx/devkit': 22.7.6(nx@22.7.6) + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 20.1.2 + aproba: 2.0.0 + byte-size: 8.1.1 + chalk: 4.1.0 + ci-info: 4.3.1 + cmd-shim: 6.0.3 + color-support: 1.1.3 + columnify: 1.6.0 + console-control-strings: 1.1.0 + conventional-changelog-angular: 7.0.0 + conventional-changelog-core: 5.0.1 + conventional-recommended-bump: 7.0.1 + cosmiconfig: 9.0.0(typescript@5.9.3) + dedent: 1.5.3 + envinfo: 7.13.0 + execa: 5.0.0 + fs-extra: 11.3.6 + get-stream: 6.0.0 + git-url-parse: 14.0.0 + glob-parent: 6.0.2 + has-unicode: 2.0.1 + import-local: 3.1.0 + ini: 1.3.8 + init-package-json: 8.2.2 + inquirer: 12.9.6(@types/node@25.9.4) + is-ci: 3.0.1 + jest-diff: 30.4.1 + js-yaml: 4.1.1 + libnpmaccess: 10.0.3 + libnpmpublish: 11.1.2 + load-json-file: 6.2.0 + make-fetch-happen: 15.0.2 + minimatch: 3.1.4 + npm-package-arg: 13.0.1 + npm-packlist: 10.0.3 + npm-registry-fetch: 19.1.0 + nx: 22.7.6 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-pipe: 3.1.0 + p-queue: 6.6.2 + p-reduce: 2.1.0 + p-waterfall: 2.1.1 + pacote: 21.0.1 + read-cmd-shim: 4.0.0 + semver: 7.7.2 + signal-exit: 3.0.7 + slash: 3.0.0 + ssri: 12.0.0 + string-width: 4.2.3 + tar: 7.5.11 + through: 2.3.8 + tinyglobby: 0.2.12 + typescript: 5.9.3 + upath: 2.0.1 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 6.0.2 + wide-align: 1.1.5 + write-file-atomic: 5.0.1 + yargs: 17.7.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - '@types/node' + - babel-plugin-macros + - debug + - supports-color + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + libnpmaccess@10.0.3: + dependencies: + npm-package-arg: 13.0.1 + npm-registry-fetch: 19.1.0 + transitivePeerDependencies: + - supports-color + + libnpmpublish@11.1.2: + dependencies: + '@npmcli/package-json': 7.0.2 + ci-info: 4.3.1 + npm-package-arg: 13.0.1 + npm-registry-fetch: 19.1.0 + proc-log: 5.0.0 + semver: 7.7.2 + sigstore: 4.1.1 + ssri: 12.0.0 + transitivePeerDependencies: + - supports-color + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.3: {} + + linkify-it@5.0.2: + dependencies: + uc.micro: 2.1.0 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + load-json-file@6.2.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 + + loader-runner@4.3.2: {} + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.ismatch@4.4.0: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash.truncate@4.4.2: {} + + lodash@4.18.1: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + lru-cache@10.4.3: {} + + lru-cache@11.5.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + make-dir@4.0.0: + dependencies: + semver: 7.8.5 + + make-error@1.3.6: {} + + make-fetch-happen@15.0.2: + dependencies: + '@npmcli/agent': 4.0.2 + cacache: 20.0.4 + http-cache-semantics: 4.2.0 + minipass: 7.1.3 + minipass-fetch: 4.0.1 + minipass-flush: 1.0.7 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + ssri: 12.0.0 + transitivePeerDependencies: + - supports-color + + make-fetch-happen@15.0.6: + dependencies: + '@gar/promise-retry': 1.0.3 + '@npmcli/agent': 4.0.2 + '@npmcli/redact': 4.0.0 + cacache: 20.0.4 + http-cache-semantics: 4.2.0 + minipass: 7.1.3 + minipass-fetch: 5.0.2 + minipass-flush: 1.0.7 + minipass-pipeline: 1.2.4 + negotiator: 1.0.0 + proc-log: 6.1.0 + ssri: 13.0.1 + transitivePeerDependencies: + - supports-color + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + markdown-it@14.3.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.2 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdurl@2.0.0: {} + + meow@8.1.2: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@3.1.0: + optional: true + + min-indent@1.0.1: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.7 + + minimatch@3.1.4: + dependencies: + brace-expansion: 1.1.15 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.15 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + minimizer-webpack-plugin@5.6.1(webpack@5.108.4): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.48.0 + webpack: 5.108.4 + + minipass-collect@2.0.1: + dependencies: + minipass: 7.1.3 + + minipass-fetch@4.0.1: + dependencies: + minipass: 7.1.3 + minipass-sized: 1.0.3 + minizlib: 3.1.0 + optionalDependencies: + encoding: 0.1.13 + + minipass-fetch@5.0.2: + dependencies: + minipass: 7.1.3 + minipass-sized: 2.0.0 + minizlib: 3.1.0 + optionalDependencies: + iconv-lite: 0.7.3 + + minipass-flush@1.0.7: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass-sized@2.0.0: + dependencies: + minipass: 7.1.3 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mkdirp-classic@0.5.3: + optional: true + + mkdirp@1.0.4: {} + + modify-values@1.0.1: {} + + ms@2.1.3: {} + + mute-stream@0.0.8: {} + + mute-stream@2.0.0: {} + + napi-build-utils@2.0.0: + optional: true + + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + + negotiator@1.0.0: {} + + neo-async@2.6.2: {} + + nice-try@1.0.5: {} + + node-abi@3.94.0: + dependencies: + semver: 7.8.5 + optional: true + + node-addon-api@4.3.0: + optional: true + + node-gyp@12.4.0: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.3 + graceful-fs: 4.2.11 + nopt: 9.0.0 + proc-log: 6.1.0 + semver: 7.7.2 + tar: 7.5.11 + tinyglobby: 0.2.12 + undici: 6.27.0 + which: 6.0.1 + + node-int64@0.4.0: {} + + node-releases@2.0.50: {} + + node-sarif-builder@3.4.0: + dependencies: + '@types/sarif': 2.1.7 + fs-extra: 11.3.6 + + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + + nopt@9.0.0: + dependencies: + abbrev: 4.0.0 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.12 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.16.2 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.8.5 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + npm-bundled@4.0.0: + dependencies: + npm-normalize-package-bin: 4.0.0 + + npm-bundled@5.0.0: + dependencies: + npm-normalize-package-bin: 5.0.0 + + npm-check-updates@19.6.6: {} + + npm-install-checks@7.1.2: + dependencies: + semver: 7.7.2 + + npm-install-checks@8.0.0: + dependencies: + semver: 7.7.2 + + npm-normalize-package-bin@4.0.0: {} + + npm-normalize-package-bin@5.0.0: {} + + npm-package-arg@12.0.2: + dependencies: + hosted-git-info: 8.1.0 + proc-log: 5.0.0 + semver: 7.7.2 + validate-npm-package-name: 6.0.2 + + npm-package-arg@13.0.1: + dependencies: + hosted-git-info: 9.0.3 + proc-log: 5.0.0 + semver: 7.7.2 + validate-npm-package-name: 6.0.2 + + npm-packlist@10.0.3: + dependencies: + ignore-walk: 8.0.0 + proc-log: 6.1.0 + + npm-pick-manifest@10.0.0: + dependencies: + npm-install-checks: 7.1.2 + npm-normalize-package-bin: 4.0.0 + npm-package-arg: 12.0.2 + semver: 7.7.2 + + npm-pick-manifest@11.0.3: + dependencies: + npm-install-checks: 8.0.0 + npm-normalize-package-bin: 5.0.0 + npm-package-arg: 13.0.1 + semver: 7.7.2 + + npm-registry-fetch@19.1.0: + dependencies: + '@npmcli/redact': 3.2.2 + jsonparse: 1.3.1 + make-fetch-happen: 15.0.2 + minipass: 7.1.3 + minipass-fetch: 4.0.1 + minizlib: 3.1.0 + npm-package-arg: 13.0.1 + proc-log: 5.0.0 + transitivePeerDependencies: + - supports-color + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nx@22.7.6: + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@emnapi/wasi-threads': 1.0.4 + '@jest/diff-sequences': 30.0.1 + '@napi-rs/wasm-runtime': 0.2.4 + '@tybys/wasm-util': 0.9.0 + '@yarnpkg/lockfile': 1.1.0 + '@zkochan/js-yaml': 0.0.7 + ansi-colors: 4.1.3 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + argparse: 2.0.1 + asynckit: 0.4.0 + axios: 1.16.0 + balanced-match: 4.0.3 + base64-js: 1.5.1 + bl: 4.1.0 + brace-expansion: 5.0.6 + buffer: 5.7.1 + call-bind-apply-helpers: 1.0.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + clone: 1.0.4 + color-convert: 2.0.1 + color-name: 1.1.4 + combined-stream: 1.0.8 + defaults: 1.0.4 + define-lazy-prop: 2.0.0 + delayed-stream: 1.0.0 + dotenv: 16.4.7 + dotenv-expand: 12.0.3 + dunder-proto: 1.0.1 + ejs: 5.0.1 + emoji-regex: 8.0.0 + end-of-stream: 1.4.5 + enquirer: 2.3.6 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + escalade: 3.2.0 + escape-string-regexp: 1.0.5 + figures: 3.2.0 + flat: 5.0.2 + follow-redirects: 1.16.0 + form-data: 4.0.6 + fs-constants: 1.0.0 + function-bind: 1.1.2 + get-caller-file: 2.0.5 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + has-flag: 4.0.0 + has-symbols: 1.1.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + ieee754: 1.2.1 + ignore: 7.0.5 + inherits: 2.0.4 + is-docker: 2.2.1 + is-fullwidth-code-point: 3.0.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + is-wsl: 2.2.0 + json5: 2.2.3 + jsonc-parser: 3.2.0 + lines-and-columns: 2.0.3 + log-symbols: 4.1.0 + math-intrinsics: 1.1.0 + mime-db: 1.52.0 + mime-types: 2.1.35 + mimic-fn: 2.1.0 + minimatch: 10.2.5 + minimist: 1.2.8 + npm-run-path: 4.0.1 + once: 1.4.0 + onetime: 5.1.2 + open: 8.4.2 + ora: 5.3.0 + path-key: 3.1.1 + picocolors: 1.1.1 + proxy-from-env: 2.1.0 + readable-stream: 3.6.2 + require-directory: 2.1.1 + resolve.exports: 2.0.3 + restore-cursor: 3.1.0 + safe-buffer: 5.2.1 + semver: 7.7.4 + signal-exit: 3.0.7 + smol-toml: 1.6.1 + string-width: 4.2.3 + string_decoder: 1.3.0 + strip-ansi: 6.0.1 + strip-bom: 3.0.0 + supports-color: 7.2.0 + tar-stream: 2.2.0 + tmp: 0.2.7 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + util-deprecate: 1.0.2 + wcwidth: 1.0.1 + wrap-ansi: 7.0.0 + wrappy: 1.0.2 + y18n: 5.0.8 + yaml: 2.9.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 22.7.6 + '@nx/nx-darwin-x64': 22.7.6 + '@nx/nx-freebsd-x64': 22.7.6 + '@nx/nx-linux-arm-gnueabihf': 22.7.6 + '@nx/nx-linux-arm64-gnu': 22.7.6 + '@nx/nx-linux-arm64-musl': 22.7.6 + '@nx/nx-linux-x64-gnu': 22.7.6 + '@nx/nx-linux-x64-musl': 22.7.6 + '@nx/nx-win32-arm64-msvc': 22.7.6 + '@nx/nx-win32-x64-msvc': 22.7.6 + transitivePeerDependencies: + - debug + + object-inspect@1.13.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.3.0: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + is-interactive: 1.0.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + p-finally@1.0.0: {} + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map-series@2.1.0: {} + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-map@7.0.5: {} + + p-pipe@3.1.0: {} + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-reduce@2.1.0: {} + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-try@1.0.0: {} + + p-try@2.2.0: {} + + p-waterfall@2.1.1: + dependencies: + p-reduce: 2.1.0 + + package-json-from-dist@1.0.1: {} + + pacote@21.0.1: + dependencies: + '@npmcli/git': 6.0.3 + '@npmcli/installed-package-contents': 3.0.0 + '@npmcli/package-json': 7.0.2 + '@npmcli/promise-spawn': 8.0.3 + '@npmcli/run-script': 10.0.3 + cacache: 20.0.4 + fs-minipass: 3.0.3 + minipass: 7.1.3 + npm-package-arg: 13.0.1 + npm-packlist: 10.0.3 + npm-pick-manifest: 10.0.0 + npm-registry-fetch: 19.1.0 + proc-log: 5.0.0 + promise-retry: 2.0.1 + sigstore: 4.1.1 + ssri: 12.0.0 + tar: 7.5.11 + transitivePeerDependencies: + - supports-color + + pacote@21.5.1: + dependencies: + '@gar/promise-retry': 1.0.3 + '@npmcli/git': 7.0.2 + '@npmcli/installed-package-contents': 4.0.0 + '@npmcli/package-json': 7.0.2 + '@npmcli/promise-spawn': 9.0.1 + '@npmcli/run-script': 10.0.3 + cacache: 20.0.4 + fs-minipass: 3.0.3 + minipass: 7.1.3 + npm-package-arg: 13.0.1 + npm-packlist: 10.0.3 + npm-pick-manifest: 11.0.3 + npm-registry-fetch: 19.1.0 + proc-log: 6.1.0 + sigstore: 4.1.1 + ssri: 13.0.1 + tar: 7.5.11 + transitivePeerDependencies: + - supports-color + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-conflict-json@4.0.0: + dependencies: + json-parse-even-better-errors: 4.0.0 + just-diff: 6.0.2 + just-diff-apply: 5.5.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.4 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.29.7 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + parse-path@7.1.0: + dependencies: + protocols: 2.0.2 + + parse-semver@1.1.1: + dependencies: + semver: 5.7.2 + + parse-url@8.1.0: + dependencies: + parse-path: 7.1.0 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.5.2 + minipass: 7.1.3 + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + path-type@6.0.0: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.5: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pluralize@2.0.0: {} + + pluralize@8.0.0: {} + + postcss-selector-parser@7.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.1.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.94.0 + pump: 3.0.4 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.5 + tunnel-agent: 0.6.0 + optional: true + + prelude-ls@1.2.1: {} + + prettier@2.8.8: {} + + pretty-format@30.4.1: + dependencies: + '@jest/schemas': 30.4.1 + ansi-styles: 5.2.0 + react-is-18: react-is@18.3.1 + react-is-19: react-is@19.2.7 + + proc-log@5.0.0: {} + + proc-log@6.1.0: {} + + process-nextick-args@2.0.1: {} + + proggy@3.0.0: {} + + promise-all-reject-late@1.0.1: {} + + promise-call-limit@3.0.2: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + promzard@2.0.0: + dependencies: + read: 4.1.0 + + protocols@2.0.2: {} + + proxy-from-env@2.1.0: {} + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + pure-rand@7.0.1: {} + + qs@6.15.3: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + rc-config-loader@4.1.4: + dependencies: + debug: 4.4.3 + js-yaml: 4.3.0 + json5: 2.2.3 + require-from-string: 2.0.2 + transitivePeerDependencies: + - supports-color + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + + react-is@18.3.1: {} + + react-is@19.2.7: {} + + read-cmd-shim@4.0.0: {} + + read-cmd-shim@5.0.0: {} + + read-pkg-up@3.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.41.0 + unicorn-magic: 0.1.0 + + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + + read@4.1.0: + dependencies: + mute-stream: 2.0.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + rechoir@0.6.2: + dependencies: + resolve: 1.22.12 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + reusify@1.1.0: {} + + run-applescript@7.1.0: {} + + run-async@4.0.6: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sax@1.6.0: {} + + schema-utils@4.3.3: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) + + secretlint@10.2.2: + dependencies: + '@secretlint/config-creator': 10.2.2 + '@secretlint/formatter': 10.2.2 + '@secretlint/node': 10.2.2 + '@secretlint/profiler': 10.2.2 + debug: 4.4.3 + globby: 14.1.0 + read-pkg: 9.0.1 + transitivePeerDependencies: + - supports-color + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + semver@7.7.4: {} + + semver@7.8.5: {} + + serialize-javascript@7.0.7: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shelljs@0.9.2: + dependencies: + execa: 1.0.0 + fast-glob: 3.3.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shx@0.4.0: + dependencies: + minimist: 1.2.8 + shelljs: 0.9.2 + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sigstore@4.1.1: + dependencies: + '@sigstore/bundle': 4.0.0 + '@sigstore/core': 3.2.1 + '@sigstore/protobuf-specs': 0.5.1 + '@sigstore/sign': 4.1.1 + '@sigstore/tuf': 4.0.2 + '@sigstore/verify': 3.1.1 + transitivePeerDependencies: + - supports-color + + simple-concat@1.0.1: + optional: true + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + optional: true + + slash@3.0.0: {} + + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + smart-buffer@4.2.0: {} + + smol-toml@1.6.1: {} + + smol-toml@1.7.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.9 + transitivePeerDependencies: + - supports-color + + socks@2.8.9: + dependencies: + ip-address: 10.2.0 + smart-buffer: 4.2.0 + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.23 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + + spdx-license-ids@3.0.23: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + split@1.0.1: + dependencies: + through: 2.3.8 + + sprintf-js@1.0.3: {} + + ssri@12.0.0: + dependencies: + minipass: 7.1.3 + + ssri@13.0.1: + dependencies: + minipass: 7.1.3 + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: + optional: true + + strip-json-comments@3.1.1: {} + + structured-source@4.0.0: + dependencies: + boundary: 2.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + + syncpack-darwin-arm64@15.3.2: + optional: true + + syncpack-darwin-x64@15.3.2: + optional: true + + syncpack-linux-arm64-musl@15.3.2: + optional: true + + syncpack-linux-arm64@15.3.2: + optional: true + + syncpack-linux-x64-musl@15.3.2: + optional: true + + syncpack-linux-x64@15.3.2: + optional: true + + syncpack-windows-arm64@15.3.2: + optional: true + + syncpack-windows-x64@15.3.2: + optional: true + + syncpack@15.3.2: + optionalDependencies: + syncpack-darwin-arm64: 15.3.2 + syncpack-darwin-x64: 15.3.2 + syncpack-linux-arm64: 15.3.2 + syncpack-linux-arm64-musl: 15.3.2 + syncpack-linux-x64: 15.3.2 + syncpack-linux-x64-musl: 15.3.2 + syncpack-windows-arm64: 15.3.2 + syncpack-windows-x64: 15.3.2 + + table@6.9.0: + dependencies: + ajv: 8.20.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@2.3.3: {} + + tar-fs@2.1.5: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + optional: true + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@7.5.11: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + terminal-link@4.0.0: + dependencies: + ansi-escapes: 7.3.0 + supports-hyperlinks: 3.2.0 + + terser@5.48.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.17.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.6 + glob: 7.2.3 + minimatch: 3.1.5 + + text-extensions@1.9.0: {} + + text-table@0.2.0: {} + + textextensions@6.11.0: + dependencies: + editions: 6.22.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through@2.3.8: {} + + tinyglobby@0.2.12: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tmp@0.2.7: {} + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tree-kill@1.2.2: {} + + treeverse@3.0.0: {} + + trim-newlines@3.0.1: {} + + ts-api-utils@2.5.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + + ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7))(jest-util@30.4.1)(jest@30.4.2(@types/node@25.9.4))(typescript@6.0.3): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + handlebars: 4.7.9 + jest: 30.4.2(@types/node@25.9.4) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.8.5 + type-fest: 4.41.0 + typescript: 6.0.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.29.7 + '@jest/transform': 30.4.1 + '@jest/types': 30.4.1 + babel-jest: 30.4.1(@babel/core@7.29.7) + jest-util: 30.4.1 + + ts-loader@9.6.2(loader-utils@2.0.4)(typescript@6.0.3)(webpack@5.108.4): + dependencies: + chalk: 4.1.2 + picomatch: 4.0.5 + source-map: 0.7.6 + typescript: 6.0.3 + webpack: 5.108.4 + optionalDependencies: + loader-utils: 2.0.4 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tuf-js@4.1.0: + dependencies: + '@tufjs/models': 4.1.0 + debug: 4.4.3 + make-fetch-happen: 15.0.2 + transitivePeerDependencies: + - supports-color + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + + tunnel@0.0.6: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.18.1: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@4.41.0: {} + + typed-rest-client@1.8.11: + dependencies: + qs: 6.15.3 + tunnel: 0.0.6 + underscore: 1.13.8 + + typedarray@0.0.6: {} + + typescript@5.9.3: {} + + typescript@6.0.3: {} + + typical@4.0.0: {} + + uc.micro@2.1.0: {} + + uglify-js@3.19.3: + optional: true + + underscore@1.13.8: {} + + undici-types@7.24.6: {} + + undici@6.27.0: {} + + undici@7.28.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + + universal-user-agent@6.0.1: {} + + universalify@2.0.1: {} + + unrs-resolver@1.12.2: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + + upath@2.0.1: {} + + update-browserslist-db@1.2.3(browserslist@4.28.5): + dependencies: + browserslist: 4.28.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.1: {} + + util-deprecate@1.0.2: {} + + uuid@14.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@6.0.2: {} + + version-range@4.15.0: {} + + vscode-jsonrpc@9.0.1: {} + + vscode-languageclient@10.1.0: + dependencies: + minimatch: 10.2.5 + semver: 7.8.5 + vscode-languageserver-protocol: 3.18.2 + vscode-languageserver-textdocument: 1.0.13 + + vscode-languageserver-protocol@3.18.2: + dependencies: + vscode-jsonrpc: 9.0.1 + vscode-languageserver-types: 3.18.0 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-textdocument@1.0.13: {} + + vscode-languageserver-types@3.18.0: {} + + vscode-languageserver@10.1.0: + dependencies: + vscode-languageserver-protocol: 3.18.2 + + vscode-uri@3.1.0: {} + + walk-up-path@4.0.0: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + watchpack@2.5.2: + dependencies: + graceful-fs: 4.2.11 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-sources@3.5.1: {} + + webpack@5.108.4: + dependencies: + '@types/estree': 1.0.9 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.17.0 + acorn-import-phases: 1.0.4(acorn@8.17.0) + browserslist: 4.28.5 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.24.2 + es-module-lexer: 2.3.0 + eslint-scope: 5.1.1 + events: 3.3.0 + graceful-fs: 4.2.11 + loader-runner: 4.3.2 + mime-db: 1.54.0 + minimizer-webpack-plugin: 5.6.1(webpack@5.108.4) + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.3 + watchpack: 2.5.2 + webpack-sources: 3.5.1 + transitivePeerDependencies: + - '@minify-html/node' + - '@swc/core' + - '@swc/css' + - '@swc/html' + - clean-css + - cssnano + - csso + - esbuild + - html-minifier-terser + - lightningcss + - postcss + - uglify-js + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@5.0.0: + dependencies: + isexe: 3.1.5 + + which@6.0.1: + dependencies: + isexe: 4.0.0 + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + write-file-atomic@6.0.0: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + + xml2js@0.5.0: + dependencies: + sax: 1.6.0 + xmlbuilder: 11.0.1 + + xml@1.0.1: {} + + xmlbuilder@11.0.1: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yallist@5.0.0: {} + + yaml@2.9.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@16.2.2: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@3.4.0: + dependencies: + pend: 1.2.0 + + yazl@2.5.1: + dependencies: + buffer-crc32: 0.2.13 + + yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000000..63d871e6b1bf --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,16 @@ +packages: + - 'packages/*' + +lockfileIncludeTarballUrl: false +strictDepBuilds: false +# The pyrx root workspace installs these packages; don't start a second install before scripts. +verifyDepsBeforeRun: false +onlyBuiltDependencies: + - '@vscode/vsce-sign' + - 'esbuild' + - 'keytar' + - 'nx' + - 'unrs-resolver' + +overrides: + tar: '7.5.11'