From b180c8361b8f5ad0079ae74b66fe3c9148c53cbe Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 06:51:29 +0000 Subject: [PATCH 1/2] feat(ci): implement comprehensive autonomous repository management workflows - Adds Code of Conduct, Contributing guidelines, and Codeowners. - Implements comprehensive issue and PR templates. - Configures GitHub actions for PR labeling, stale issues, greetings, and AI PR Reviews. - Updates node versions in existing actions to v22. - Consolidates repository maintenance (Docs sync, Architecture diagrams, SBOM, Knowledge graph) into one single action for autonomous generation. - Adds basic scripts for generating a codebase AST knowledge graph and dynamic API documentation indexes. - Configures GitHub pages for the React/Vite front-end. - Sets up generic CI to test every PR via uv. Co-authored-by: NITISH-R-G <225521762+NITISH-R-G@users.noreply.github.com> --- .github/CODEOWNERS | 1 + .github/ISSUE_TEMPLATE/bug_report.md | 27 ++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 19 +++++++ .github/PULL_REQUEST_TEMPLATE.md | 11 ++++ .github/labeler.yml | 20 +++++++ .github/workflows/ai-review.yml | 27 ++++++++++ .github/workflows/ci.yml | 29 ++++++++++ .github/workflows/code-quality.yml | 4 +- .github/workflows/greetings.yml | 21 ++++++++ .github/workflows/labeler.yml | 17 ++++++ .github/workflows/pages.yml | 45 ++++++++++++++++ .github/workflows/repo-maintenance.yml | 60 +++++++++++++++++++++ .github/workflows/security.yml | 2 +- .github/workflows/stale.yml | 20 +++++++ CODE_OF_CONDUCT.md | 26 +++++++++ CONTRIBUTING.md | 30 +++++++++++ tools/docs_sync.py | 37 +++++++++++++ tools/generate_knowledge_graph.py | 66 +++++++++++++++++++++++ 18 files changed, 459 insertions(+), 3 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/ai-review.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/greetings.yml create mode 100644 .github/workflows/labeler.yml create mode 100644 .github/workflows/pages.yml create mode 100644 .github/workflows/repo-maintenance.yml create mode 100644 .github/workflows/stale.yml create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100755 tools/docs_sync.py create mode 100755 tools/generate_knowledge_graph.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..95896af --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @NITISH-R-G diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..5f67494 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Environment (please complete the following information):** + - OS: [e.g. Ubuntu] + - Python Version: [e.g. 3.10] + - Browser [e.g. chrome] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..5f0a04c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..80cf17d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,11 @@ +## Description +Provide a brief description of the changes in this PR. + +## Related Issues +Fixes # (issue) + +## Checklist +- [ ] I have followed the contributing guidelines. +- [ ] I have run `./validate-submission.sh` locally and it passes. +- [ ] I have added tests that prove my fix is effective or that my feature works. +- [ ] I have updated the documentation accordingly. diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..a8e9154 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,20 @@ +python: + - any: + - '*.py' + - 'requirements.txt' + - 'pyproject.toml' + - 'uv.lock' + +frontend: + - any: + - 'web/**/*' + +documentation: + - any: + - '*.md' + - 'docs/**/*' + +github-actions: + - any: + - '.github/workflows/*' + - '.github/*' diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml new file mode 100644 index 0000000..cd5a7bc --- /dev/null +++ b/.github/workflows/ai-review.yml @@ -0,0 +1,27 @@ +name: AI PR Reviewer + +on: + pull_request: + types: [opened, synchronize, reopened] + pull_request_review_comment: + types: [created] + issue_comment: + types: [created] + +permissions: + pull-requests: write + contents: read + +jobs: + review: + runs-on: ubuntu-latest + if: ${{ github.event.sender.type != 'Bot' }} + steps: + - uses: coderabbitai/openai-pr-reviewer@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + with: + debug: false + review_simple_changes: false + review_comment_lgtm: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a1b0155 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: CI + +on: + push: + branches: [ "main", "master" ] + pull_request: + branches: [ "main", "master" ] + +jobs: + build-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install uv + run: curl -LsSf https://astral.sh/uv/install.sh | sh + + - name: Install dependencies + run: uv pip install --system -e ".[dev,demo]" + + - name: Run Pytest + run: python -m pytest tests/ -v diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 6eeeb32..9888c18 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -62,7 +62,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '24' + node-version: '22' cache: 'npm' cache-dependency-path: ./web/package-lock.json @@ -84,7 +84,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '24' + node-version: '22' - name: Install jscpd run: npm install -g jscpd diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 0000000..b1e3f43 --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,21 @@ +name: Greetings + +on: + pull_request_target: + types: [opened] + issues: + types: [opened] + +permissions: + issues: write + pull-requests: write + +jobs: + greeting: + runs-on: ubuntu-latest + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: "Welcome to the EV Grid Oracle repository! Thank you for opening your first issue. A maintainer will triage it shortly." + pr-message: "Welcome and thank you for contributing to EV Grid Oracle! Your first pull request is greatly appreciated. Our autonomous review systems will evaluate it shortly." diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..b61020e --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,17 @@ +name: "Pull Request Labeler" +on: + pull_request_target: + types: [opened, synchronize, reopened] + +permissions: + contents: read + pull-requests: write + +jobs: + triage: + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + sync-labels: true diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..d08a8d3 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,45 @@ +name: GitHub Pages + +on: + push: + branches: ["main", "master"] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + lfs: true + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + - name: Build frontend + run: | + cd web + npm ci + npm run build + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './web/dist' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/repo-maintenance.yml b/.github/workflows/repo-maintenance.yml new file mode 100644 index 0000000..4cb168e --- /dev/null +++ b/.github/workflows/repo-maintenance.yml @@ -0,0 +1,60 @@ +name: Repository Maintenance & Autonomous Governance + +on: + push: + branches: [ "main", "master" ] + pull_request: + branches: [ "main", "master" ] + schedule: + - cron: '0 0 * * *' # Daily + workflow_dispatch: + +permissions: + contents: write + +jobs: + maintenance: + # Only run if PR is not from a fork, to prevent 403 Forbidden errors + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref || github.ref }} + + - name: Install system dependencies (for pydeps) + run: sudo apt-get update && sudo apt-get install -y xdg-utils graphviz + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + cache: 'pip' + + - name: Install uv + run: curl -LsSf https://astral.sh/uv/install.sh | sh + + - name: Install dependencies + run: | + uv pip install --system cyclonedx-bom pydeps + uv pip install --system -e ".[dev,demo]" + + - name: Run autonomous tasks (knowledge-graph, docs-sync, architecture-diagrams, sbom) + run: | + python tools/generate_knowledge_graph.py + python tools/docs_sync.py + + # Generate architecture diagrams + mkdir -p artifacts + pydeps ev_grid_oracle --noshow -o artifacts/architecture.svg || true + + # Generate SBOM + cyclonedx-py environment -o artifacts/bom.json + + - name: Commit and Push Changes + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git add artifacts/ docs/ || true + git diff --staged --quiet || git commit -m "chore(auto): Update repository artifacts and documentation" + git push origin HEAD:${{ github.head_ref || github.ref }} diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 9115043..70225d3 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' cache: 'pip' - name: Install dependencies diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..78cd043 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,20 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '0 0 * * *' + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' + stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' + days-before-stale: 30 + days-before-close: 5 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..de773a0 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,26 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..06cf224 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contributing to EV Grid Oracle + +First off, thank you for considering contributing to EV Grid Oracle! + +## Code of Conduct + +By participating in this project, you agree to abide by the [Code of Conduct](CODE_OF_CONDUCT.md). + +## How Can I Contribute? + +### Reporting Bugs + +- Ensure the bug was not already reported by searching on GitHub under Issues. +- If you're unable to find an open issue addressing the problem, open a new one. + +### Submitting Pull Requests + +1. Fork the repo and create your branch from `main`. +2. If you've added code that should be tested, add tests. +3. If you've changed APIs, update the documentation. +4. Ensure the test suite passes. +5. Make sure your code lints. +6. Issue that pull request! + +## Local Development + +1. Follow the setup instructions in the README. +2. Run `./validate-submission.sh` before committing to make sure formatting and type checks pass. + +Thank you! diff --git a/tools/docs_sync.py b/tools/docs_sync.py new file mode 100755 index 0000000..39357db --- /dev/null +++ b/tools/docs_sync.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import os +from pathlib import Path + + +def sync_docs(): + repo_root = Path(__file__).parent.parent + docs_dir = repo_root / "docs" + docs_dir.mkdir(exist_ok=True) + + # Generate a simple dynamic index + index_path = docs_dir / "index.md" + index_content = "# EV Grid Oracle Documentation\n\n## Auto-generated API Index\n\n" + + for root, _, files in os.walk(repo_root): + if ( + ".git" in root + or "node_modules" in root + or "venv" in root + or ".venv" in root + or "docs" in root + ): + continue + for file in files: + if file.endswith(".py"): + file_path = os.path.join(root, file) + rel_path = os.path.relpath(file_path, repo_root) + index_content += f"- [{rel_path}](../{rel_path})\n" + + with open(index_path, "w") as f: + f.write(index_content) + + print(f"Docs synced. Updated {index_path}") + + +if __name__ == "__main__": + sync_docs() diff --git a/tools/generate_knowledge_graph.py b/tools/generate_knowledge_graph.py new file mode 100755 index 0000000..e590d44 --- /dev/null +++ b/tools/generate_knowledge_graph.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +import os +import ast +import json +from pathlib import Path + + +def generate_graph(): + graph: dict[str, list[dict[str, str | int]]] = {"nodes": [], "edges": []} + repo_root = Path(__file__).parent.parent + + # Simple AST-based knowledge graph for Python files + for root, _, files in os.walk(repo_root): + if ( + ".git" in root + or "node_modules" in root + or "venv" in root + or ".venv" in root + ): + continue + for file in files: + if file.endswith(".py"): + file_path = os.path.join(root, file) + rel_path = os.path.relpath(file_path, repo_root) + graph["nodes"].append({"id": rel_path, "group": 1}) + + try: + with open(file_path, "r") as f: + tree = ast.parse(f.read()) + for node in ast.walk(tree): + if isinstance(node, ast.ClassDef): + class_id = f"{rel_path}:{node.name}" + graph["nodes"].append( + {"id": class_id, "group": 2, "label": "Class"} + ) + graph["edges"].append( + { + "source": rel_path, + "target": class_id, + "type": "contains", + } + ) + elif isinstance(node, ast.FunctionDef): + func_id = f"{rel_path}:{node.name}" + graph["nodes"].append( + {"id": func_id, "group": 3, "label": "Function"} + ) + graph["edges"].append( + { + "source": rel_path, + "target": func_id, + "type": "contains", + } + ) + except Exception as e: + print(f"Failed to parse {file_path}: {e}") + + os.makedirs(repo_root / "artifacts", exist_ok=True) + out_path = repo_root / "artifacts" / "knowledge_graph.json" + with open(out_path, "w") as f: + json.dump(graph, f, indent=2) + print(f"Knowledge graph generated at {out_path}") + + +if __name__ == "__main__": + generate_graph() From a5686945bc89d0219e99a44b0ed673bf05db638c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jun 2026 06:54:02 +0000 Subject: [PATCH 2/2] chore(auto): Update repository artifacts and documentation --- artifacts/architecture.svg | 533 +++ artifacts/bom.json | 7435 ++++++++++++++++++++++++++++++++ artifacts/knowledge_graph.json | 3532 +++++++++++++++ docs/index.md | 68 + 4 files changed, 11568 insertions(+) create mode 100644 artifacts/architecture.svg create mode 100644 artifacts/bom.json create mode 100644 artifacts/knowledge_graph.json create mode 100644 docs/index.md diff --git a/artifacts/architecture.svg b/artifacts/architecture.svg new file mode 100644 index 0000000..322b231 --- /dev/null +++ b/artifacts/architecture.svg @@ -0,0 +1,533 @@ + + + + + + +G + + + +ev_grid_oracle + +ev_grid_oracle + + + +server_road_router + +server. +road_router + + + +ev_grid_oracle->server_road_router + + + + + + +ev_grid_oracle_bescom_feed + +ev_grid_oracle. +bescom_feed + + + +ev_grid_oracle_env + +ev_grid_oracle. +env + + + +ev_grid_oracle_bescom_feed->ev_grid_oracle_env + + + + + +ev_grid_oracle_city_graph + +ev_grid_oracle. +city_graph + + + +ev_grid_oracle_city_graph->ev_grid_oracle_env + + + + + +ev_grid_oracle_policies + +ev_grid_oracle. +policies + + + +ev_grid_oracle_city_graph->ev_grid_oracle_policies + + + + + +ev_grid_oracle_road_env + +ev_grid_oracle. +road_env + + + +ev_grid_oracle_city_graph->ev_grid_oracle_road_env + + + + + +ev_grid_oracle_demand_sim + +ev_grid_oracle. +demand_sim + + + +ev_grid_oracle_demand_sim->ev_grid_oracle_env + + + + + +ev_grid_oracle_multi_agent + +ev_grid_oracle. +multi_agent + + + +ev_grid_oracle_env->ev_grid_oracle_multi_agent + + + + + +ev_grid_oracle_world_model_verifier + +ev_grid_oracle. +world_model_verifier + + + +ev_grid_oracle_env->ev_grid_oracle_world_model_verifier + + + + + +ev_grid_oracle_grid_sim + +ev_grid_oracle. +grid_sim + + + +ev_grid_oracle_grid_sim->ev_grid_oracle_env + + + + + +ev_grid_oracle_grid_sim->ev_grid_oracle_world_model_verifier + + + + + +ev_grid_oracle_models + +ev_grid_oracle. +models + + + +ev_grid_oracle_models->ev_grid_oracle_bescom_feed + + + + + +ev_grid_oracle_models->ev_grid_oracle_city_graph + + + + + +ev_grid_oracle_models->ev_grid_oracle_env + + + + + +ev_grid_oracle_models->ev_grid_oracle_multi_agent + + + + + +ev_grid_oracle_oracle_agent + +ev_grid_oracle. +oracle_agent + + + +ev_grid_oracle_models->ev_grid_oracle_oracle_agent + + + + +ev_grid_oracle_parsing + +ev_grid_oracle. +parsing + + + +ev_grid_oracle_models->ev_grid_oracle_parsing + + + + + + +ev_grid_oracle_models->ev_grid_oracle_policies + + + + + +ev_grid_oracle_reward + +ev_grid_oracle. +reward + + + +ev_grid_oracle_models->ev_grid_oracle_reward + + + + + +ev_grid_oracle_reward_hack + +ev_grid_oracle. +reward_hack + + + +ev_grid_oracle_models->ev_grid_oracle_reward_hack + + + + + +ev_grid_oracle_models->ev_grid_oracle_world_model_verifier + + + + + +ev_grid_oracle_parsing->ev_grid_oracle_oracle_agent + + + + + +ev_grid_oracle_personas + +ev_grid_oracle. +personas + + + +ev_grid_oracle_personas->ev_grid_oracle_env + + + + + +ev_grid_oracle_policies->ev_grid_oracle_multi_agent + + + + + +ev_grid_oracle_policies->ev_grid_oracle_oracle_agent + + + + + +ev_grid_oracle_reward->ev_grid_oracle_env + + + + + +ev_grid_oracle_reward_hack->ev_grid_oracle_env + + + + + +ev_grid_oracle_road_models + +ev_grid_oracle. +road_models + + + +ev_grid_oracle_road_models->ev_grid_oracle_road_env + + + + +ev_grid_oracle_scenarios + +ev_grid_oracle. +scenarios + + + +ev_grid_oracle_scenarios->ev_grid_oracle_env + + + + + +ev_grid_oracle_traffic + +ev_grid_oracle. +traffic + + + +ev_grid_oracle_traffic->server_road_router + + + + +networkx + +networkx + + + +networkx->ev_grid_oracle_city_graph + + + + + + +networkx->ev_grid_oracle_env + + + + + +networkx->ev_grid_oracle_reward + + + + + +networkx->ev_grid_oracle_road_env + + + + + +networkx->server_road_router + + + + + +openenv + +openenv + + + +openenv->ev_grid_oracle_models + + + + +openenv->ev_grid_oracle_road_models + + + + +openenv_core + +openenv.core + + + +openenv_core->ev_grid_oracle_models + + + + +openenv_core->ev_grid_oracle_road_models + + + + + + +openenv_core_env_server + +openenv. +core. +env_server + + + +openenv_core_env_server->ev_grid_oracle_models + + + + +openenv_core_env_server->ev_grid_oracle_road_models + + + + + +openenv_core_env_server->openenv_core + + + + + +openenv_core_env_server_types + +openenv. +core. +env_server. +types + + + +openenv_core_env_server_types->ev_grid_oracle_models + + + + + +openenv_core_env_server_types->ev_grid_oracle_road_models + + + + + +openenv_core_env_server_types->openenv_core + + + + + +openenv_core_env_server_types->openenv_core_env_server + + + + + +peft + +peft + + + +peft->ev_grid_oracle_oracle_agent + + + + +pydantic + +pydantic + + + +pydantic->ev_grid_oracle_models + + + + + + + + +pydantic->ev_grid_oracle_road_models + + + + +pydantic->openenv_core_env_server_types + + + + + +server + +server + + + +server->ev_grid_oracle_road_env + + + + + + +server_road_router->ev_grid_oracle_road_env + + + + +torch + +torch + + + +torch->ev_grid_oracle_oracle_agent + + + + +transformers + +transformers + + + +transformers->ev_grid_oracle_oracle_agent + + + + + + diff --git a/artifacts/bom.json b/artifacts/bom.json new file mode 100644 index 0000000..64797f1 --- /dev/null +++ b/artifacts/bom.json @@ -0,0 +1,7435 @@ +{ + "components": [ + { + "bom-ref": "Authlib==1.7.2", + "description": "The ultimate Python library in building OAuth and OpenID Connect servers and clients.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://docs.authlib.org/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/authlib/authlib/issues" + }, + { + "comment": "from packaging metadata Project-URL: Purchase", + "type": "other", + "url": "https://authlib.org/plans" + }, + { + "comment": "from packaging metadata Project-URL: Blog", + "type": "other", + "url": "https://blog.authlib.org/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/authlib/authlib" + }, + { + "comment": "from packaging metadata Project-URL: Donate", + "type": "other", + "url": "https://github.com/sponsors/lepture" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "Authlib", + "purl": "pkg:pypi/authlib@1.7.2", + "type": "library", + "version": "1.7.2" + }, + { + "bom-ref": "Jinja2==3.1.6", + "description": "A very fast and expressive template engine.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Chat", + "type": "chat", + "url": "https://discord.gg/pallets" + }, + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://jinja.palletsprojects.com/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pallets/jinja/" + }, + { + "comment": "from packaging metadata Project-URL: Donate", + "type": "other", + "url": "https://palletsprojects.com/donate" + }, + { + "comment": "from packaging metadata Project-URL: Changes", + "type": "release-notes", + "url": "https://jinja.palletsprojects.com/changes/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "Jinja2", + "purl": "pkg:pypi/jinja2@3.1.6", + "type": "library", + "version": "3.1.6" + }, + { + "bom-ref": "Markdown==3.10.2", + "description": "Python implementation of John Gruber's Markdown.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://Python-Markdown.github.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/Python-Markdown/markdown/issues" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://python-markdown.github.io/changelog/" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/Python-Markdown/markdown" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://Python-Markdown.github.io/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "Markdown", + "purl": "pkg:pypi/markdown@3.10.2", + "type": "library", + "version": "3.10.2" + }, + { + "bom-ref": "MarkupSafe==3.0.3", + "description": "Safely add untrusted strings to HTML/XML markup.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Chat", + "type": "chat", + "url": "https://discord.gg/pallets" + }, + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://markupsafe.palletsprojects.com/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pallets/markupsafe/" + }, + { + "comment": "from packaging metadata Project-URL: Donate", + "type": "other", + "url": "https://palletsprojects.com/donate" + }, + { + "comment": "from packaging metadata Project-URL: Changes", + "type": "release-notes", + "url": "https://markupsafe.palletsprojects.com/page/changes/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "MarkupSafe", + "purl": "pkg:pypi/markupsafe@3.0.3", + "type": "library", + "version": "3.0.3" + }, + { + "bom-ref": "PyJWT==2.13.0", + "description": "JSON Web Token implementation in Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/jpadilla/pyjwt" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "PyJWT", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "crypto" + } + ], + "purl": "pkg:pypi/pyjwt@2.13.0", + "type": "library", + "version": "2.13.0" + }, + { + "bom-ref": "PyYAML==6.0.3", + "description": "YAML parser and emitter for Python", + "externalReferences": [ + { + "comment": "from packaging metadata: Download-URL", + "type": "distribution", + "url": "https://pypi.org/project/PyYAML/" + }, + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pyyaml.org/wiki/PyYAMLDocumentation" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/yaml/pyyaml/issues" + }, + { + "comment": "from packaging metadata Project-URL: Mailing lists", + "type": "other", + "url": "http://lists.sourceforge.net/lists/listinfo/yaml-core" + }, + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/yaml/pyyaml" + }, + { + "comment": "from packaging metadata Project-URL: CI", + "type": "other", + "url": "https://github.com/yaml/pyyaml/actions" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://pyyaml.org/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "PyYAML", + "purl": "pkg:pypi/pyyaml@6.0.3", + "type": "library", + "version": "6.0.3" + }, + { + "bom-ref": "Pygments==2.20.0", + "description": "Pygments is a syntax highlighting package written in Python.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pygments.org/docs" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/pygments/pygments/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pygments/pygments" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/pygments/pygments/blob/master/CHANGES" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://pygments.org" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-2-Clause" + } + } + ], + "name": "Pygments", + "purl": "pkg:pypi/pygments@2.20.0", + "type": "library", + "version": "2.20.0" + }, + { + "bom-ref": "SecretStorage==3.5.0", + "description": "Python bindings to FreeDesktop.org Secret Service API", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://secretstorage.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/mitya57/secretstorage/issues/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/mitya57/secretstorage" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "SecretStorage", + "purl": "pkg:pypi/secretstorage@3.5.0", + "type": "library", + "version": "3.5.0" + }, + { + "bom-ref": "Werkzeug==3.1.8", + "description": "The comprehensive WSGI web application library.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Chat", + "type": "chat", + "url": "https://discord.gg/pallets" + }, + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://werkzeug.palletsprojects.com/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pallets/werkzeug/" + }, + { + "comment": "from packaging metadata Project-URL: Donate", + "type": "other", + "url": "https://palletsprojects.com/donate" + }, + { + "comment": "from packaging metadata Project-URL: Changes", + "type": "release-notes", + "url": "https://werkzeug.palletsprojects.com/page/changes/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "Werkzeug", + "purl": "pkg:pypi/werkzeug@3.1.8", + "type": "library", + "version": "3.1.8" + }, + { + "bom-ref": "absl-py==2.4.0", + "description": "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://abseil.io/docs/python/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/abseil/abseil-py/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/abseil/abseil-py" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/abseil/abseil-py/blob/main/CHANGELOG.md" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "absl-py", + "purl": "pkg:pypi/absl-py@2.4.0", + "type": "library", + "version": "2.4.0" + }, + { + "bom-ref": "accelerate==1.14.0", + "description": "Accelerate", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/huggingface/accelerate" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "accelerate", + "purl": "pkg:pypi/accelerate@1.14.0", + "type": "library", + "version": "1.14.0" + }, + { + "bom-ref": "aiofile==3.11.1", + "description": "Asynchronous file operations.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/mosquito/aiofile" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "aiofile", + "purl": "pkg:pypi/aiofile@3.11.1", + "type": "library", + "version": "3.11.1" + }, + { + "bom-ref": "annotated-doc==0.0.4", + "description": "Document parameters, class attributes, return types, and variables inline, with Annotated.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://github.com/fastapi/annotated-doc" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/fastapi/annotated-doc/issues" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/fastapi/annotated-doc/release-notes.md" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/fastapi/annotated-doc" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/fastapi/annotated-doc" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "annotated-doc", + "purl": "pkg:pypi/annotated-doc@0.0.4", + "type": "library", + "version": "0.0.4" + }, + { + "bom-ref": "annotated-types==0.7.0", + "description": "Reusable constraint types to use with typing.Annotated", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/annotated-types/annotated-types" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/annotated-types/annotated-types/releases" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/annotated-types/annotated-types" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "annotated-types", + "purl": "pkg:pypi/annotated-types@0.7.0", + "type": "library", + "version": "0.7.0" + }, + { + "bom-ref": "anyio==4.14.1", + "description": "High-level concurrency and networking framework on top of asyncio or Trio", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://anyio.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Issue tracker", + "type": "issue-tracker", + "url": "https://github.com/agronholm/anyio/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source code", + "type": "other", + "url": "https://github.com/agronholm/anyio" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://anyio.readthedocs.io/en/stable/versionhistory.html" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "anyio", + "purl": "pkg:pypi/anyio@4.14.1", + "type": "library", + "version": "4.14.1" + }, + { + "bom-ref": "arrow==1.4.0", + "description": "Better dates & times for Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://arrow.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/arrow-py/arrow/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/arrow-py/arrow" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "arrow", + "purl": "pkg:pypi/arrow@1.4.0", + "type": "library", + "version": "1.4.0" + }, + { + "bom-ref": "attrs==26.1.0", + "description": "Classes Without Boilerplate", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://www.attrs.org/" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/hynek" + }, + { + "comment": "from packaging metadata Project-URL: Tidelift", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://www.attrs.org/en/stable/changelog.html" + }, + { + "comment": "from packaging metadata Project-URL: GitHub", + "type": "vcs", + "url": "https://github.com/python-attrs/attrs" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "attrs", + "purl": "pkg:pypi/attrs@26.1.0", + "type": "library", + "version": "26.1.0" + }, + { + "bom-ref": "beartype==0.22.9", + "description": "Unbearably fast near-real-time pure-Python runtime-static type-checker.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Docs", + "type": "documentation", + "url": "https://beartype.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/beartype/beartype/issues" + }, + { + "comment": "from packaging metadata Project-URL: Forums", + "type": "other", + "url": "https://github.com/beartype/beartype/discussions" + }, + { + "comment": "from packaging metadata Project-URL: Releases", + "type": "other", + "url": "https://github.com/beartype/beartype/releases" + }, + { + "comment": "from packaging metadata Project-URL: GitHub", + "type": "vcs", + "url": "https://github.com/beartype/beartype" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "beartype", + "purl": "pkg:pypi/beartype@0.22.9", + "type": "library", + "version": "0.22.9" + }, + { + "bom-ref": "boolean.py==5.0", + "description": "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/bastikr/boolean.py" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-2-Clause" + } + } + ], + "name": "boolean.py", + "purl": "pkg:pypi/boolean.py@5.0", + "type": "library", + "version": "5.0" + }, + { + "bom-ref": "brotli==1.2.0", + "description": "Python bindings for the Brotli compression library", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/google/brotli" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "brotli", + "purl": "pkg:pypi/brotli@1.2.0", + "type": "library", + "version": "1.2.0" + }, + { + "bom-ref": "cachetools==7.1.4", + "description": "Extensible memoizing collections and decorators", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://cachetools.readthedocs.io/en/stable/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/tkem/cachetools/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/tkem/cachetools/" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/tkem/cachetools/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/tkem/cachetools/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "cachetools", + "purl": "pkg:pypi/cachetools@7.1.4", + "type": "library", + "version": "7.1.4" + }, + { + "bom-ref": "caio==0.9.25", + "description": "Asynchronous file IO for Linux MacOS or Windows.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/mosquito/caio/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "caio", + "purl": "pkg:pypi/caio@0.9.25", + "type": "library", + "version": "0.9.25" + }, + { + "bom-ref": "certifi==2026.6.17", + "description": "Python package for providing Mozilla's CA Bundle.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/certifi/python-certifi" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/certifi/python-certifi" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MPL-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" + } + } + ], + "name": "certifi", + "purl": "pkg:pypi/certifi@2026.6.17", + "type": "library", + "version": "2026.6.17" + }, + { + "bom-ref": "cffi==2.0.0", + "description": "Foreign Function Interface for Python calling C code.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://cffi.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/python-cffi/cffi/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/python-cffi/cffi" + }, + { + "comment": "from packaging metadata Project-URL: Downloads", + "type": "other", + "url": "https://github.com/python-cffi/cffi/releases" + }, + { + "comment": "from packaging metadata Project-URL: Contact", + "type": "other", + "url": "https://groups.google.com/forum/#!forum/python-cffi" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://cffi.readthedocs.io/en/latest/whatsnew.html" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "cffi", + "purl": "pkg:pypi/cffi@2.0.0", + "type": "library", + "version": "2.0.0" + }, + { + "bom-ref": "chardet==5.2.0", + "description": "Universal encoding detector for Python 3", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://chardet.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/chardet/chardet/issues" + }, + { + "comment": "from packaging metadata Project-URL: GitHub Project", + "type": "other", + "url": "https://github.com/chardet/chardet" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/chardet/chardet" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)" + } + } + ], + "name": "chardet", + "purl": "pkg:pypi/chardet@5.2.0", + "type": "library", + "version": "5.2.0" + }, + { + "bom-ref": "charset-normalizer==3.4.7", + "description": "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://charset-normalizer.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue tracker", + "type": "issue-tracker", + "url": "https://github.com/jawah/charset_normalizer/issues" + }, + { + "comment": "from packaging metadata Project-URL: Code", + "type": "other", + "url": "https://github.com/jawah/charset_normalizer" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "charset-normalizer", + "purl": "pkg:pypi/charset-normalizer@3.4.7", + "type": "library", + "version": "3.4.7" + }, + { + "bom-ref": "click==8.4.2", + "description": "Composable command line interface toolkit", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Chat", + "type": "chat", + "url": "https://discord.gg/pallets" + }, + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://click.palletsprojects.com/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pallets/click/" + }, + { + "comment": "from packaging metadata Project-URL: Donate", + "type": "other", + "url": "https://palletsprojects.com/donate" + }, + { + "comment": "from packaging metadata Project-URL: Changes", + "type": "release-notes", + "url": "https://click.palletsprojects.com/page/changes/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "click", + "purl": "pkg:pypi/click@8.4.2", + "type": "library", + "version": "8.4.2" + }, + { + "bom-ref": "colorama==0.4.6", + "description": "Cross-platform colored terminal text.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/tartley/colorama" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "colorama", + "purl": "pkg:pypi/colorama@0.4.6", + "type": "library", + "version": "0.4.6" + }, + { + "bom-ref": "contourpy==1.3.3", + "description": "Python library for calculating contours of 2D quadrilateral grids", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://contourpy.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://contourpy.readthedocs.io/en/latest/changelog.html" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/contourpy/contourpy" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/contourpy/contourpy" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "contourpy", + "purl": "pkg:pypi/contourpy@1.3.3", + "type": "library", + "version": "1.3.3" + }, + { + "bom-ref": "coverage==7.14.3", + "description": "Code coverage measurement for Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://coverage.readthedocs.io/en/7.14.3" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/coveragepy/coveragepy/issues" + }, + { + "comment": "from packaging metadata Project-URL: Mastodon", + "type": "other", + "url": "https://hachyderm.io/@coveragepy" + }, + { + "comment": "from packaging metadata Project-URL: Mastodon (nedbat)", + "type": "other", + "url": "https://hachyderm.io/@nedbat" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=pypi" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/coveragepy/coveragepy" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "coverage", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "toml" + } + ], + "purl": "pkg:pypi/coverage@7.14.3", + "type": "library", + "version": "7.14.3" + }, + { + "bom-ref": "cryptography==49.0.0", + "description": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://cryptography.io/" + }, + { + "comment": "from packaging metadata Project-URL: issues", + "type": "issue-tracker", + "url": "https://github.com/pyca/cryptography/issues" + }, + { + "comment": "from packaging metadata Project-URL: source", + "type": "other", + "url": "https://github.com/pyca/cryptography/" + }, + { + "comment": "from packaging metadata Project-URL: changelog", + "type": "release-notes", + "url": "https://cryptography.io/en/latest/changelog/" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://github.com/pyca/cryptography" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "Apache-2.0 OR BSD-3-Clause" + } + ], + "name": "cryptography", + "purl": "pkg:pypi/cryptography@49.0.0", + "type": "library", + "version": "49.0.0" + }, + { + "bom-ref": "cuda-bindings==12.9.4", + "description": "Python bindings for CUDA", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://nvidia.github.io/cuda-python/" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/NVIDIA/cuda-python" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "LicenseRef-NVIDIA-SOFTWARE-LICENSE" + } + } + ], + "name": "cuda-bindings", + "purl": "pkg:pypi/cuda-bindings@12.9.4", + "type": "library", + "version": "12.9.4" + }, + { + "bom-ref": "cuda-pathfinder==1.5.6", + "description": "Pathfinder for CUDA components", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://nvidia.github.io/cuda-python/" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/NVIDIA/cuda-python" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "cuda-pathfinder", + "purl": "pkg:pypi/cuda-pathfinder@1.5.6", + "type": "library", + "version": "1.5.6" + }, + { + "bom-ref": "cycler==0.12.1", + "description": "Composable style cycles", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/matplotlib/cycler" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://matplotlib.org/cycler/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "cycler", + "purl": "pkg:pypi/cycler@0.12.1", + "type": "library", + "version": "0.12.1" + }, + { + "bom-ref": "cyclonedx-bom==7.3.0", + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://owasp.org/donate/?reponame=www-project-cyclonedx&title=OWASP+CycloneDX" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/releases" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "cyclonedx-bom", + "purl": "pkg:pypi/cyclonedx-bom@7.3.0", + "type": "library", + "version": "7.3.0" + }, + { + "bom-ref": "cyclonedx-python-lib==11.11.0", + "description": "Python library for CycloneDX", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://cyclonedx-python-library.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/issues" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://owasp.org/donate/?reponame=www-project-cyclonedx&title=OWASP+CycloneDX" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/releases" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/#readme" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "cyclonedx-python-lib", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "validation" + } + ], + "purl": "pkg:pypi/cyclonedx-python-lib@11.11.0", + "type": "library", + "version": "11.11.0" + }, + { + "bom-ref": "cyclopts==4.20.0", + "description": "Intuitive, easy CLIs based on type hints.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/BrianPugh/cyclopts" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/BrianPugh/cyclopts" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "cyclopts", + "purl": "pkg:pypi/cyclopts@4.20.0", + "type": "library", + "version": "4.20.0" + }, + { + "bom-ref": "defusedxml==0.7.1", + "description": "XML bomb protection for Python stdlib modules", + "externalReferences": [ + { + "comment": "from packaging metadata: Download-URL", + "type": "distribution", + "url": "https://pypi.python.org/pypi/defusedxml" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/tiran/defusedxml" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Python-2.0" + } + } + ], + "name": "defusedxml", + "purl": "pkg:pypi/defusedxml@0.7.1", + "type": "library", + "version": "0.7.1" + }, + { + "bom-ref": "distro==1.9.0", + "description": "Distro - an OS platform information API", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/python-distro/distro" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "distro", + "purl": "pkg:pypi/distro@1.9.0", + "type": "library", + "version": "1.9.0" + }, + { + "bom-ref": "dnspython==2.8.0", + "description": "DNS toolkit", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://dnspython.readthedocs.io/en/stable/" + }, + { + "comment": "from packaging metadata Project-URL: issues", + "type": "issue-tracker", + "url": "https://github.com/rthalley/dnspython/issues" + }, + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/rthalley/dnspython.git" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://www.dnspython.org" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "ISC" + } + } + ], + "name": "dnspython", + "purl": "pkg:pypi/dnspython@2.8.0", + "type": "library", + "version": "2.8.0" + }, + { + "bom-ref": "docstring_parser==0.18.0", + "description": "Parse Python docstrings in reST, Google and Numpydoc format", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: changelog", + "type": "release-notes", + "url": "https://github.com/rr-/docstring_parser/blob/master/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/rr-/docstring_parser" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://github.com/rr-/docstring_parser" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "docstring_parser", + "purl": "pkg:pypi/docstring-parser@0.18.0", + "type": "library", + "version": "0.18.0" + }, + { + "bom-ref": "email-validator==2.3.0", + "description": "A robust email address syntax and deliverability validation library.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/JoshData/python-email-validator" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Unlicense" + } + } + ], + "name": "email-validator", + "purl": "pkg:pypi/email-validator@2.3.0", + "type": "library", + "version": "2.3.0" + }, + { + "bom-ref": "ev-grid-oracle==0.0.1", + "description": "EV Grid Oracle (OpenEnv Hackathon + BESCOM Theme 9)", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file:///home/runner/work/ev-grid-oracle/ev-grid-oracle" + } + ], + "name": "ev-grid-oracle", + "type": "library", + "version": "0.0.1" + }, + { + "bom-ref": "exceptiongroup==1.3.1", + "description": "Backport of PEP 654 (exception groups)", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/agronholm/exceptiongroup/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source code", + "type": "other", + "url": "https://github.com/agronholm/exceptiongroup" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/agronholm/exceptiongroup/blob/main/CHANGES.rst" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "exceptiongroup", + "purl": "pkg:pypi/exceptiongroup@1.3.1", + "type": "library", + "version": "1.3.1" + }, + { + "bom-ref": "fastapi==0.138.2", + "description": "FastAPI framework, high performance, easy to learn, fast to code, ready for production", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://fastapi.tiangolo.com/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/fastapi/fastapi/issues" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://fastapi.tiangolo.com/release-notes/" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/fastapi/fastapi" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/fastapi/fastapi" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "fastapi", + "purl": "pkg:pypi/fastapi@0.138.2", + "type": "library", + "version": "0.138.2" + }, + { + "bom-ref": "fastmcp==3.4.2", + "description": "The fast, Pythonic way to build MCP servers and clients.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://gofastmcp.com" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/PrefectHQ/fastmcp" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://gofastmcp.com" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "fastmcp", + "purl": "pkg:pypi/fastmcp@3.4.2", + "type": "library", + "version": "3.4.2" + }, + { + "bom-ref": "fastmcp-slim==3.4.2", + "description": "The dependency-slim FastMCP package.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://gofastmcp.com" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/PrefectHQ/fastmcp" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://gofastmcp.com" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "fastmcp-slim", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "anthropic" + }, + { + "name": "cdx:python:package:required-extra", + "value": "apps" + }, + { + "name": "cdx:python:package:required-extra", + "value": "azure" + }, + { + "name": "cdx:python:package:required-extra", + "value": "client" + }, + { + "name": "cdx:python:package:required-extra", + "value": "code-mode" + }, + { + "name": "cdx:python:package:required-extra", + "value": "gemini" + }, + { + "name": "cdx:python:package:required-extra", + "value": "openai" + }, + { + "name": "cdx:python:package:required-extra", + "value": "server" + }, + { + "name": "cdx:python:package:required-extra", + "value": "tasks" + } + ], + "purl": "pkg:pypi/fastmcp-slim@3.4.2", + "type": "library", + "version": "3.4.2" + }, + { + "bom-ref": "filelock==3.29.4", + "description": "A platform independent file lock.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://py-filelock.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Tracker", + "type": "issue-tracker", + "url": "https://github.com/tox-dev/py-filelock/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/tox-dev/py-filelock" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/tox-dev/py-filelock" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "filelock", + "purl": "pkg:pypi/filelock@3.29.4", + "type": "library", + "version": "3.29.4" + }, + { + "bom-ref": "fonttools==4.63.0", + "description": "Tools to manipulate font files", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "http://github.com/fonttools/fonttools" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "fonttools", + "purl": "pkg:pypi/fonttools@4.63.0", + "type": "library", + "version": "4.63.0" + }, + { + "bom-ref": "fqdn==1.5.1", + "description": "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/ypcrts/fqdn" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)" + } + } + ], + "name": "fqdn", + "purl": "pkg:pypi/fqdn@1.5.1", + "type": "library", + "version": "1.5.1" + }, + { + "bom-ref": "fsspec==2026.6.0", + "description": "File-system specification", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://filesystem-spec.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://filesystem-spec.readthedocs.io/en/latest/changelog.html" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/fsspec/filesystem_spec" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "fsspec", + "purl": "pkg:pypi/fsspec@2026.6.0", + "type": "library", + "version": "2026.6.0" + }, + { + "bom-ref": "gradio==6.19.0", + "description": "Python library for easily interacting with trained machine learning models", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/gradio-app/gradio" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "gradio", + "purl": "pkg:pypi/gradio@6.19.0", + "type": "library", + "version": "6.19.0" + }, + { + "bom-ref": "gradio_client==2.5.0", + "description": "Python library for easily interacting with trained machine learning models", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/gradio-app/gradio" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "gradio_client", + "purl": "pkg:pypi/gradio-client@2.5.0", + "type": "library", + "version": "2.5.0" + }, + { + "bom-ref": "griffelib==2.1.0", + "description": "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API.", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "ISC" + } + } + ], + "name": "griffelib", + "purl": "pkg:pypi/griffelib@2.1.0", + "type": "library", + "version": "2.1.0" + }, + { + "bom-ref": "groovy==0.1.2", + "description": "A small Python library created to help developers protect their applications from Server Side Request Forgery (SSRF) attacks.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/gradio-app/groovy" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://github.com/gradio-app/groovy" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "groovy", + "purl": "pkg:pypi/groovy@0.1.2", + "type": "library", + "version": "0.1.2" + }, + { + "bom-ref": "grpcio==1.81.1", + "description": "HTTP/2-based RPC framework", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://grpc.github.io/grpc/python" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/grpc/grpc/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/grpc/grpc" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://grpc.io" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "grpcio", + "purl": "pkg:pypi/grpcio@1.81.1", + "type": "library", + "version": "1.81.1" + }, + { + "bom-ref": "h11==0.16.0", + "description": "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/python-hyper/h11" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "h11", + "purl": "pkg:pypi/h11@0.16.0", + "type": "library", + "version": "0.16.0" + }, + { + "bom-ref": "hf-gradio==0.4.1", + "description": "An extension of the Hugging Face CLI for interacting with Gradio Spaces and Apps.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/gradio-app/hf-gradio#" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "hf-gradio", + "purl": "pkg:pypi/hf-gradio@0.4.1", + "type": "library", + "version": "0.4.1" + }, + { + "bom-ref": "hf-xet==1.5.1", + "description": "Fast transfer of large files with the Hugging Face Hub.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://huggingface.co/docs/hub/xet/index" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/huggingface/xet-core/issues" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/huggingface/xet-core.git" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/huggingface/xet-core" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "hf-xet", + "purl": "pkg:pypi/hf-xet@1.5.1", + "type": "library", + "version": "1.5.1" + }, + { + "bom-ref": "httpcore==1.0.9", + "description": "A minimal low-level HTTP client.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://www.encode.io/httpcore" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/encode/httpcore" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://www.encode.io/httpcore/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "httpcore", + "purl": "pkg:pypi/httpcore@1.0.9", + "type": "library", + "version": "1.0.9" + }, + { + "bom-ref": "httpx==0.28.1", + "description": "The next generation HTTP client.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://www.python-httpx.org" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/encode/httpx" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/encode/httpx/blob/master/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/encode/httpx" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "httpx", + "purl": "pkg:pypi/httpx@0.28.1", + "type": "library", + "version": "0.28.1" + }, + { + "bom-ref": "httpx-sse==0.4.3", + "description": "Consume Server-Sent Event (SSE) messages with HTTPX.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/florimondmanca/httpx-sse" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "httpx-sse", + "purl": "pkg:pypi/httpx-sse@0.4.3", + "type": "library", + "version": "0.4.3" + }, + { + "bom-ref": "huggingface_hub==1.21.0", + "description": "Client library to download and publish models, datasets and other repos on the huggingface.co hub", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/huggingface/huggingface_hub" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "huggingface_hub", + "purl": "pkg:pypi/huggingface-hub@1.21.0", + "type": "library", + "version": "1.21.0" + }, + { + "bom-ref": "idna==3.18", + "description": "Internationalized Domain Names in Applications (IDNA)", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Issue tracker", + "type": "issue-tracker", + "url": "https://github.com/kjd/idna/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/kjd/idna" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/kjd/idna/blob/master/HISTORY.md" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "idna", + "purl": "pkg:pypi/idna@3.18", + "type": "library", + "version": "3.18" + }, + { + "bom-ref": "iniconfig==2.3.0", + "description": "brain-dead simple config-ini parsing", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/pytest-dev/iniconfig" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "iniconfig", + "purl": "pkg:pypi/iniconfig@2.3.0", + "type": "library", + "version": "2.3.0" + }, + { + "bom-ref": "isoduration==20.11.0", + "description": "Operations with ISO 8601 durations", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Bug Reports", + "type": "issue-tracker", + "url": "https://github.com/bolsote/isoduration/issues" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/bolsote/isoduration/blob/master/CHANGELOG" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/bolsote/isoduration" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/bolsote/isoduration" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "ISC" + } + } + ], + "name": "isoduration", + "purl": "pkg:pypi/isoduration@20.11.0", + "type": "library", + "version": "20.11.0" + }, + { + "bom-ref": "jaraco.classes==3.4.0", + "description": "Utility functions for Python class constructs", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/jaraco/jaraco.classes" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jaraco.classes", + "purl": "pkg:pypi/jaraco.classes@3.4.0", + "type": "library", + "version": "3.4.0" + }, + { + "bom-ref": "jaraco.context==6.1.2", + "description": "Useful decorators and context managers", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/jaraco/jaraco.context" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jaraco.context", + "purl": "pkg:pypi/jaraco.context@6.1.2", + "type": "library", + "version": "6.1.2" + }, + { + "bom-ref": "jaraco.functools==4.5.0", + "description": "Functools like those found in stdlib", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/jaraco/jaraco.functools" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jaraco.functools", + "purl": "pkg:pypi/jaraco.functools@4.5.0", + "type": "library", + "version": "4.5.0" + }, + { + "bom-ref": "jeepney==0.9.0", + "description": "Low-level, pure Python DBus protocol wrapper.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://jeepney.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://gitlab.com/takluyver/jeepney" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jeepney", + "purl": "pkg:pypi/jeepney@0.9.0", + "type": "library", + "version": "0.9.0" + }, + { + "bom-ref": "jiter==0.16.0", + "description": "Fast iterable JSON parser.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/pydantic/jiter/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jiter", + "purl": "pkg:pypi/jiter@0.16.0", + "type": "library", + "version": "0.16.0" + }, + { + "bom-ref": "joserfc==1.7.2", + "description": "The ultimate Python library for JOSE RFCs, including JWS, JWE, JWK, JWA, JWT", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://jose.authlib.org/" + }, + { + "comment": "from packaging metadata Project-URL: Blog", + "type": "other", + "url": "https://blog.authlib.org/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/authlib/joserfc" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/authlib" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "joserfc", + "purl": "pkg:pypi/joserfc@1.7.2", + "type": "library", + "version": "1.7.2" + }, + { + "bom-ref": "jsonpointer==3.1.1", + "description": "Identify specific nodes in a JSON document (RFC 6901) ", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/stefankoegl/python-json-pointer" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "jsonpointer", + "purl": "pkg:pypi/jsonpointer@3.1.1", + "type": "library", + "version": "3.1.1" + }, + { + "bom-ref": "jsonref==1.1.0", + "description": "jsonref is a library for automatic dereferencing of JSON Reference objects for Python.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://jsonref.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/gazpachoking/jsonref" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jsonref", + "purl": "pkg:pypi/jsonref@1.1.0", + "type": "library", + "version": "1.1.0" + }, + { + "bom-ref": "jsonschema==4.26.0", + "description": "An implementation of JSON Schema validation for Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://python-jsonschema.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/python-jsonschema/jsonschema/issues/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/python-jsonschema/jsonschema" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/Julian" + }, + { + "comment": "from packaging metadata Project-URL: Tidelift", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-jsonschema?utm_source=pypi-jsonschema&utm_medium=referral&utm_campaign=pypi-link" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/python-jsonschema/jsonschema" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jsonschema", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "format-nongpl" + } + ], + "purl": "pkg:pypi/jsonschema@4.26.0", + "type": "library", + "version": "4.26.0" + }, + { + "bom-ref": "jsonschema-path==0.5.0", + "description": "JSONSchema Spec with object-oriented paths", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/p1c2u/jsonschema-path" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "jsonschema-path", + "purl": "pkg:pypi/jsonschema-path@0.5.0", + "type": "library", + "version": "0.5.0" + }, + { + "bom-ref": "jsonschema-specifications==2025.9.1", + "description": "The JSON Schema meta-schemas and vocabularies, exposed as a Registry", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://jsonschema-specifications.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/python-jsonschema/jsonschema-specifications/issues/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/python-jsonschema/jsonschema-specifications" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/Julian" + }, + { + "comment": "from packaging metadata Project-URL: Tidelift", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-jsonschema-specifications?utm_source=pypi-jsonschema-specifications&utm_medium=referral&utm_campaign=pypi-link" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/python-jsonschema/jsonschema-specifications" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "jsonschema-specifications", + "purl": "pkg:pypi/jsonschema-specifications@2025.9.1", + "type": "library", + "version": "2025.9.1" + }, + { + "bom-ref": "keyring==25.7.0", + "description": "Store and access your passwords safely.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/jaraco/keyring" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "keyring", + "purl": "pkg:pypi/keyring@25.7.0", + "type": "library", + "version": "25.7.0" + }, + { + "bom-ref": "kiwisolver==1.5.0", + "description": "A fast implementation of the Cassowary constraint solver", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://kiwisolver.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: changelog", + "type": "release-notes", + "url": "https://github.com/nucleic/kiwi/blob/main/releasenotes.rst" + }, + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/nucleic/kiwi" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://github.com/nucleic/kiwi" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "kiwisolver", + "purl": "pkg:pypi/kiwisolver@1.5.0", + "type": "library", + "version": "1.5.0" + }, + { + "bom-ref": "lark==1.3.1", + "description": "a modern parsing library", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Download", + "type": "distribution", + "url": "https://github.com/lark-parser/lark/tarball/master" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/lark-parser/lark" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "lark", + "purl": "pkg:pypi/lark@1.3.1", + "type": "library", + "version": "1.3.1" + }, + { + "bom-ref": "license-expression==30.4.4", + "description": "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/aboutcode-org/license-expression" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "license-expression", + "purl": "pkg:pypi/license-expression@30.4.4", + "type": "library", + "version": "30.4.4" + }, + { + "bom-ref": "lxml==6.1.1", + "description": "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://bugs.launchpad.net/lxml" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/lxml/lxml" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://lxml.de/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "lxml", + "purl": "pkg:pypi/lxml@6.1.1", + "type": "library", + "version": "6.1.1" + }, + { + "bom-ref": "mando==0.7.1", + "description": "Create Python CLI apps with little to no effort at all!", + "externalReferences": [ + { + "comment": "from packaging metadata: Download-URL", + "type": "distribution", + "url": "https://pypi.python.org/mando/" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://mando.readthedocs.org/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "mando", + "purl": "pkg:pypi/mando@0.7.1", + "type": "library", + "version": "0.7.1" + }, + { + "bom-ref": "markdown-it-py==4.2.0", + "description": "Python port of markdown-it. Markdown parsing, done right!", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://markdown-it-py.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/executablebooks/markdown-it-py" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "markdown-it-py", + "purl": "pkg:pypi/markdown-it-py@4.2.0", + "type": "library", + "version": "4.2.0" + }, + { + "bom-ref": "matplotlib==3.11.0", + "description": "Python plotting package", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Download", + "type": "distribution", + "url": "https://matplotlib.org/stable/install/index.html" + }, + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://matplotlib.org" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/matplotlib/matplotlib/issues" + }, + { + "comment": "from packaging metadata Project-URL: Forum", + "type": "other", + "url": "https://discourse.matplotlib.org/" + }, + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/matplotlib/matplotlib" + }, + { + "comment": "from packaging metadata Project-URL: Donate", + "type": "other", + "url": "https://numfocus.org/donate-to-matplotlib" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://matplotlib.org" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Python-2.0" + } + } + ], + "name": "matplotlib", + "purl": "pkg:pypi/matplotlib@3.11.0", + "type": "library", + "version": "3.11.0" + }, + { + "bom-ref": "mcp==1.28.1", + "description": "Model Context Protocol SDK", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://py.sdk.modelcontextprotocol.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/modelcontextprotocol/python-sdk/issues" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/modelcontextprotocol/python-sdk" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://modelcontextprotocol.io" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "mcp", + "purl": "pkg:pypi/mcp@1.28.1", + "type": "library", + "version": "1.28.1" + }, + { + "bom-ref": "mdurl==0.1.2", + "description": "Markdown URL utilities", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/executablebooks/mdurl" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "mdurl", + "purl": "pkg:pypi/mdurl@0.1.2", + "type": "library", + "version": "0.1.2" + }, + { + "bom-ref": "more-itertools==11.1.0", + "description": "More routines for operating on iterables, beyond itertools", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://more-itertools.readthedocs.io/en/stable/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/more-itertools/more-itertools" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "more-itertools", + "purl": "pkg:pypi/more-itertools@11.1.0", + "type": "library", + "version": "11.1.0" + }, + { + "bom-ref": "mpmath==1.3.0", + "description": "Python library for arbitrary-precision floating-point arithmetic", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "http://mpmath.org/doc/current/" + }, + { + "comment": "from packaging metadata Project-URL: Tracker", + "type": "issue-tracker", + "url": "https://github.com/fredrik-johansson/mpmath/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/fredrik-johansson/mpmath" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "http://mpmath.org/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "mpmath", + "purl": "pkg:pypi/mpmath@1.3.0", + "type": "library", + "version": "1.3.0" + }, + { + "bom-ref": "networkx==3.6.1", + "description": "Python package for creating and manipulating graphs and networks", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://networkx.org/documentation/stable/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/networkx/networkx/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/networkx/networkx" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://networkx.org/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "networkx", + "purl": "pkg:pypi/networkx@3.6.1", + "type": "library", + "version": "3.6.1" + }, + { + "bom-ref": "numpy==2.5.0", + "description": "Fundamental package for array computing in Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: download", + "type": "distribution", + "url": "https://pypi.org/project/numpy/#files" + }, + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://numpy.org/doc/" + }, + { + "comment": "from packaging metadata Project-URL: tracker", + "type": "issue-tracker", + "url": "https://github.com/numpy/numpy/issues" + }, + { + "comment": "from packaging metadata Project-URL: source", + "type": "other", + "url": "https://github.com/numpy/numpy" + }, + { + "comment": "from packaging metadata Project-URL: release notes", + "type": "other", + "url": "https://numpy.org/doc/stable/release" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://numpy.org" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0" + } + ], + "name": "numpy", + "purl": "pkg:pypi/numpy@2.5.0", + "type": "library", + "version": "2.5.0" + }, + { + "bom-ref": "nvidia-cublas-cu12==12.8.4.1", + "description": "CUBLAS native runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cublas-cu12", + "purl": "pkg:pypi/nvidia-cublas-cu12@12.8.4.1", + "type": "library", + "version": "12.8.4.1" + }, + { + "bom-ref": "nvidia-cuda-cupti-cu12==12.8.90", + "description": "CUDA profiling tools runtime libs.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cuda-cupti-cu12", + "purl": "pkg:pypi/nvidia-cuda-cupti-cu12@12.8.90", + "type": "library", + "version": "12.8.90" + }, + { + "bom-ref": "nvidia-cuda-nvrtc-cu12==12.8.93", + "description": "NVRTC native runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cuda-nvrtc-cu12", + "purl": "pkg:pypi/nvidia-cuda-nvrtc-cu12@12.8.93", + "type": "library", + "version": "12.8.93" + }, + { + "bom-ref": "nvidia-cuda-runtime-cu12==12.8.90", + "description": "CUDA Runtime native Libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cuda-runtime-cu12", + "purl": "pkg:pypi/nvidia-cuda-runtime-cu12@12.8.90", + "type": "library", + "version": "12.8.90" + }, + { + "bom-ref": "nvidia-cudnn-cu12==9.10.2.21", + "description": "cuDNN runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cudnn-cu12", + "purl": "pkg:pypi/nvidia-cudnn-cu12@9.10.2.21", + "type": "library", + "version": "9.10.2.21" + }, + { + "bom-ref": "nvidia-cufft-cu12==11.3.3.83", + "description": "CUFFT native runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cufft-cu12", + "purl": "pkg:pypi/nvidia-cufft-cu12@11.3.3.83", + "type": "library", + "version": "11.3.3.83" + }, + { + "bom-ref": "nvidia-cufile-cu12==1.13.1.3", + "description": "cuFile GPUDirect libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cufile-cu12", + "purl": "pkg:pypi/nvidia-cufile-cu12@1.13.1.3", + "type": "library", + "version": "1.13.1.3" + }, + { + "bom-ref": "nvidia-curand-cu12==10.3.9.90", + "description": "CURAND native runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-curand-cu12", + "purl": "pkg:pypi/nvidia-curand-cu12@10.3.9.90", + "type": "library", + "version": "10.3.9.90" + }, + { + "bom-ref": "nvidia-cusolver-cu12==11.7.3.90", + "description": "CUDA solver native runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cusolver-cu12", + "purl": "pkg:pypi/nvidia-cusolver-cu12@11.7.3.90", + "type": "library", + "version": "11.7.3.90" + }, + { + "bom-ref": "nvidia-cusparse-cu12==12.5.8.93", + "description": "CUSPARSE native runtime libraries", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-cusparse-cu12", + "purl": "pkg:pypi/nvidia-cusparse-cu12@12.5.8.93", + "type": "library", + "version": "12.5.8.93" + }, + { + "bom-ref": "nvidia-cusparselt-cu12==0.7.1", + "description": "NVIDIA cuSPARSELt", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cusparselt" + } + ], + "name": "nvidia-cusparselt-cu12", + "purl": "pkg:pypi/nvidia-cusparselt-cu12@0.7.1", + "type": "library", + "version": "0.7.1" + }, + { + "bom-ref": "nvidia-nccl-cu12==2.27.5", + "description": "NVIDIA Collective Communication Library (NCCL) Runtime", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-nccl-cu12", + "purl": "pkg:pypi/nvidia-nccl-cu12@2.27.5", + "type": "library", + "version": "2.27.5" + }, + { + "bom-ref": "nvidia-nvjitlink-cu12==12.8.93", + "description": "Nvidia JIT LTO Library", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-nvjitlink-cu12", + "purl": "pkg:pypi/nvidia-nvjitlink-cu12@12.8.93", + "type": "library", + "version": "12.8.93" + }, + { + "bom-ref": "nvidia-nvshmem-cu12==3.4.5", + "description": "NVSHMEM creates a global address space that provides efficient and scalable communication for NVIDIA GPU clusters.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "LicenseRef-NVIDIA-Proprietary" + } + } + ], + "name": "nvidia-nvshmem-cu12", + "purl": "pkg:pypi/nvidia-nvshmem-cu12@3.4.5", + "type": "library", + "version": "3.4.5" + }, + { + "bom-ref": "nvidia-nvtx-cu12==12.8.90", + "description": "NVIDIA Tools Extension", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developer.nvidia.com/cuda-zone" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: Other/Proprietary License" + } + } + ], + "name": "nvidia-nvtx-cu12", + "purl": "pkg:pypi/nvidia-nvtx-cu12@12.8.90", + "type": "library", + "version": "12.8.90" + }, + { + "bom-ref": "openai==2.44.0", + "description": "The official Python library for the openai API", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/openai/openai-python" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/openai/openai-python" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "openai", + "purl": "pkg:pypi/openai@2.44.0", + "type": "library", + "version": "2.44.0" + }, + { + "bom-ref": "openapi-pydantic==0.5.1", + "description": "Pydantic OpenAPI schema implementation", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: changelog", + "type": "release-notes", + "url": "https://github.com/mike-oakley/openapi-pydantic/releases" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/mike-oakley/openapi-pydantic" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/mike-oakley/openapi-pydantic" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "openapi-pydantic", + "purl": "pkg:pypi/openapi-pydantic@0.5.1", + "type": "library", + "version": "0.5.1" + }, + { + "bom-ref": "openenv-core==0.3.0", + "description": "A unified framework for reinforcement learning environments", + "name": "openenv-core", + "purl": "pkg:pypi/openenv-core@0.3.0", + "type": "library", + "version": "0.3.0" + }, + { + "bom-ref": "opentelemetry-api==1.43.0", + "description": "OpenTelemetry Python API", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/open-telemetry/opentelemetry-python" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/open-telemetry/opentelemetry-python/tree/main/opentelemetry-api" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "opentelemetry-api", + "purl": "pkg:pypi/opentelemetry-api@1.43.0", + "type": "library", + "version": "1.43.0" + }, + { + "bom-ref": "orjson==3.11.9", + "description": "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://github.com/ijl/orjson" + }, + { + "comment": "from packaging metadata Project-URL: source", + "type": "other", + "url": "https://github.com/ijl/orjson" + }, + { + "comment": "from packaging metadata Project-URL: changelog", + "type": "release-notes", + "url": "https://github.com/ijl/orjson/blob/master/CHANGELOG.md" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MPL-2.0 AND (Apache-2.0 OR MIT)" + } + ], + "name": "orjson", + "purl": "pkg:pypi/orjson@3.11.9", + "type": "library", + "version": "3.11.9" + }, + { + "bom-ref": "packageurl-python==0.17.6", + "description": "A purl aka. Package URL parser and builder", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/package-url/packageurl-python" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "packageurl-python", + "purl": "pkg:pypi/packageurl-python@0.17.6", + "type": "library", + "version": "0.17.6" + }, + { + "bom-ref": "packaging==26.2", + "description": "Core utilities for Python packages", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://packaging.pypa.io/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pypa/packaging" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "Apache-2.0 OR BSD-2-Clause" + } + ], + "name": "packaging", + "purl": "pkg:pypi/packaging@26.2", + "type": "library", + "version": "26.2" + }, + { + "bom-ref": "pandas==3.0.3", + "description": "Powerful data structures for data analysis, time series, and statistics", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: documentation", + "type": "documentation", + "url": "https://pandas.pydata.org/docs/" + }, + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/pandas-dev/pandas" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://pandas.pydata.org" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "pandas", + "purl": "pkg:pypi/pandas@3.0.3", + "type": "library", + "version": "3.0.3" + }, + { + "bom-ref": "pathable==0.6.0", + "description": "Object-oriented paths", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/p1c2u/pathable" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "pathable", + "purl": "pkg:pypi/pathable@0.6.0", + "type": "library", + "version": "0.6.0" + }, + { + "bom-ref": "peft==0.19.1", + "description": "Parameter-Efficient Fine-Tuning (PEFT)", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/huggingface/peft" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "peft", + "purl": "pkg:pypi/peft@0.19.1", + "type": "library", + "version": "0.19.1" + }, + { + "bom-ref": "pillow==12.2.0", + "description": "Python Imaging Library (fork)", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pillow.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Mastodon", + "type": "other", + "url": "https://fosstodon.org/@pillow" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/python-pillow/Pillow" + }, + { + "comment": "from packaging metadata Project-URL: Release notes", + "type": "other", + "url": "https://pillow.readthedocs.io/en/stable/releasenotes/index.html" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/python-pillow/Pillow/releases" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://python-pillow.github.io" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT-CMU" + } + } + ], + "name": "pillow", + "purl": "pkg:pypi/pillow@12.2.0", + "type": "library", + "version": "12.2.0" + }, + { + "bom-ref": "pip==26.1.2", + "description": "The PyPA recommended tool for installing Python packages.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pip.pypa.io" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pypa/pip" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://pip.pypa.io/en/stable/news/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://pip.pypa.io/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pip", + "purl": "pkg:pypi/pip@26.1.2", + "type": "library", + "version": "26.1.2" + }, + { + "bom-ref": "pip-requirements-parser==32.0.1", + "description": "pip requirements parser - a mostly correct pip requirements parsing library because it uses pip's own code.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/nexB/pip-requirements-parser" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pip-requirements-parser", + "purl": "pkg:pypi/pip-requirements-parser@32.0.1", + "type": "library", + "version": "32.0.1" + }, + { + "bom-ref": "platformdirs==4.10.0", + "description": "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://platformdirs.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Tracker", + "type": "issue-tracker", + "url": "https://github.com/tox-dev/platformdirs/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/tox-dev/platformdirs" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://platformdirs.readthedocs.io/en/latest/changelog.html" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/tox-dev/platformdirs" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "platformdirs", + "purl": "pkg:pypi/platformdirs@4.10.0", + "type": "library", + "version": "4.10.0" + }, + { + "bom-ref": "pluggy==1.6.0", + "description": "plugin and hook calling mechanisms for python", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pluggy", + "purl": "pkg:pypi/pluggy@1.6.0", + "type": "library", + "version": "1.6.0" + }, + { + "bom-ref": "protobuf==7.35.1", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://developers.google.com/protocol-buffers/" + } + ], + "name": "protobuf", + "purl": "pkg:pypi/protobuf@7.35.1", + "type": "library", + "version": "7.35.1" + }, + { + "bom-ref": "psutil==7.2.2", + "description": "Cross-platform lib for process and system monitoring.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/giampaolo/psutil" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "psutil", + "purl": "pkg:pypi/psutil@7.2.2", + "type": "library", + "version": "7.2.2" + }, + { + "bom-ref": "py-key-value-aio==0.4.5", + "description": "Async Key-Value Store - A pluggable interface for KV Stores", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "py-key-value-aio", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "filetree" + }, + { + "name": "cdx:python:package:required-extra", + "value": "keyring" + }, + { + "name": "cdx:python:package:required-extra", + "value": "memory" + } + ], + "purl": "pkg:pypi/py-key-value-aio@0.4.5", + "type": "library", + "version": "0.4.5" + }, + { + "bom-ref": "py-serializable==2.1.0", + "description": "Library for serializing and deserializing Python Objects to and from JSON and XML.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://py-serializable.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/madpah/serializable/issues" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/madpah/serializable" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/madpah/serializable#readme" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "py-serializable", + "purl": "pkg:pypi/py-serializable@2.1.0", + "type": "library", + "version": "2.1.0" + }, + { + "bom-ref": "pycparser==3.0", + "description": "C parser in Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/eliben/pycparser" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "pycparser", + "purl": "pkg:pypi/pycparser@3.0", + "type": "library", + "version": "3.0" + }, + { + "bom-ref": "pydantic==2.13.4", + "description": "Data validation using Python type hints", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://docs.pydantic.dev" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pydantic/pydantic" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/samuelcolvin" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://docs.pydantic.dev/latest/changelog/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/pydantic/pydantic" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pydantic", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "email" + } + ], + "purl": "pkg:pypi/pydantic@2.13.4", + "type": "library", + "version": "2.13.4" + }, + { + "bom-ref": "pydantic-settings==2.14.2", + "description": "Settings management using Pydantic", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://docs.pydantic.dev/dev-v2/concepts/pydantic_settings/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pydantic/pydantic-settings" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/samuelcolvin" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/pydantic/pydantic-settings/releases" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/pydantic/pydantic-settings" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pydantic-settings", + "purl": "pkg:pypi/pydantic-settings@2.14.2", + "type": "library", + "version": "2.14.2" + }, + { + "bom-ref": "pydantic_core==2.46.4", + "description": "Core functionality for Pydantic validation and serialization", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pydantic/pydantic/tree/main/pydantic-core" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/samuelcolvin" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/pydantic" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/pydantic/pydantic" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pydantic_core", + "purl": "pkg:pypi/pydantic-core@2.46.4", + "type": "library", + "version": "2.46.4" + }, + { + "bom-ref": "pydeps==3.0.6", + "description": "Display module dependencies", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/thebjorn/pydeps" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-2-Clause" + } + } + ], + "name": "pydeps", + "purl": "pkg:pypi/pydeps@3.0.6", + "type": "library", + "version": "3.0.6" + }, + { + "bom-ref": "pydub==0.25.1", + "description": "Manipulate audio with an simple and easy high level interface", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "http://pydub.com" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pydub", + "purl": "pkg:pypi/pydub@0.25.1", + "type": "library", + "version": "0.25.1" + }, + { + "bom-ref": "pygame-ce==2.5.7", + "description": "Python Game Development", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pyga.me/docs" + }, + { + "comment": "from packaging metadata Project-URL: Bug Reports", + "type": "issue-tracker", + "url": "https://github.com/pygame-community/pygame-ce/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pygame-community/pygame-ce" + }, + { + "comment": "from packaging metadata Project-URL: Release Notes", + "type": "other", + "url": "https://github.com/pygame-community/pygame-ce/releases" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://pyga.me" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)" + } + } + ], + "name": "pygame-ce", + "purl": "pkg:pypi/pygame-ce@2.5.7", + "type": "library", + "version": "2.5.7" + }, + { + "bom-ref": "pyparsing==3.3.2", + "description": "pyparsing - Classes and methods to define and execute parsing grammars", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pyparsing-docs.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pyparsing/pyparsing.git" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/pyparsing/pyparsing/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pyparsing", + "purl": "pkg:pypi/pyparsing@3.3.2", + "type": "library", + "version": "3.3.2" + }, + { + "bom-ref": "pyperclip==1.11.0", + "description": "A cross-platform clipboard module for Python. (Only handles plain text for now.)", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/asweigart/pyperclip" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "pyperclip", + "purl": "pkg:pypi/pyperclip@1.11.0", + "type": "library", + "version": "1.11.0" + }, + { + "bom-ref": "pytest==9.1.1", + "description": "pytest: simple powerful testing with Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Tracker", + "type": "issue-tracker", + "url": "https://github.com/pytest-dev/pytest/issues" + }, + { + "comment": "from packaging metadata Project-URL: Contact", + "type": "other", + "url": "https://docs.pytest.org/en/stable/contact.html" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://docs.pytest.org/en/stable/sponsor.html" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pytest-dev/pytest" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://docs.pytest.org/en/stable/changelog.html" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://docs.pytest.org/en/latest/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pytest", + "purl": "pkg:pypi/pytest@9.1.1", + "type": "library", + "version": "9.1.1" + }, + { + "bom-ref": "pytest-cov==7.1.0", + "description": "Pytest plugin for measuring coverage.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pytest-cov.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/pytest-dev/pytest-cov/issues" + }, + { + "comment": "from packaging metadata Project-URL: Sources", + "type": "other", + "url": "https://github.com/pytest-dev/pytest-cov" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://pytest-cov.readthedocs.io/en/latest/changelog.html" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pytest-cov", + "purl": "pkg:pypi/pytest-cov@7.1.0", + "type": "library", + "version": "7.1.0" + }, + { + "bom-ref": "python-dateutil==2.9.0.post0", + "description": "Extensions to the standard Python datetime module", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://dateutil.readthedocs.io/en/stable/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/dateutil/dateutil" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/dateutil/dateutil" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "python-dateutil", + "purl": "pkg:pypi/python-dateutil@2.9.0.post0", + "type": "library", + "version": "2.9.0.post0" + }, + { + "bom-ref": "python-dotenv==1.2.2", + "description": "Read key-value pairs from a .env file and set them as environment variables", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/theskumar/python-dotenv" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "python-dotenv", + "purl": "pkg:pypi/python-dotenv@1.2.2", + "type": "library", + "version": "1.2.2" + }, + { + "bom-ref": "python-multipart==0.0.32", + "description": "A streaming multipart parser for Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://kludex.github.io/python-multipart/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/Kludex/python-multipart" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/Kludex/python-multipart/blob/master/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/Kludex/python-multipart" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "python-multipart", + "purl": "pkg:pypi/python-multipart@0.0.32", + "type": "library", + "version": "0.0.32" + }, + { + "bom-ref": "pytz==2026.2", + "description": "World timezone definitions, modern and historical", + "externalReferences": [ + { + "comment": "from packaging metadata: Download-URL", + "type": "distribution", + "url": "https://pypi.org/project/pytz/" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "http://pythonhosted.org/pytz" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "pytz", + "purl": "pkg:pypi/pytz@2026.2", + "type": "library", + "version": "2026.2" + }, + { + "bom-ref": "radon==6.0.1", + "description": "Code Metrics in Python", + "externalReferences": [ + { + "comment": "from packaging metadata: Download-URL", + "type": "distribution", + "url": "https://pypi.python.org/radon/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/rubik/radon" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://radon.readthedocs.org/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "radon", + "purl": "pkg:pypi/radon@6.0.1", + "type": "library", + "version": "6.0.1" + }, + { + "bom-ref": "referencing==0.37.0", + "description": "JSON Referencing + Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://referencing.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/python-jsonschema/referencing/issues/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/python-jsonschema/referencing" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/Julian" + }, + { + "comment": "from packaging metadata Project-URL: Tidelift", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-referencing?utm_source=pypi-referencing&utm_medium=referral&utm_campaign=pypi-link" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://referencing.readthedocs.io/en/stable/changes/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/python-jsonschema/referencing" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "referencing", + "purl": "pkg:pypi/referencing@0.37.0", + "type": "library", + "version": "0.37.0" + }, + { + "bom-ref": "regex==2026.6.28", + "description": "Alternative regular expression module, to replace re.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/mrabarnett/mrab-regex" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "Apache-2.0 AND CNRI-Python" + } + ], + "name": "regex", + "purl": "pkg:pypi/regex@2026.6.28", + "type": "library", + "version": "2026.6.28" + }, + { + "bom-ref": "requests==2.34.2", + "description": "Python HTTP for Humans.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://requests.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/psf/requests" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "requests", + "purl": "pkg:pypi/requests@2.34.2", + "type": "library", + "version": "2.34.2" + }, + { + "bom-ref": "rfc3339-validator==0.1.4", + "description": "A pure python RFC3339 validator", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/naimetti/rfc3339-validator" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "rfc3339-validator", + "purl": "pkg:pypi/rfc3339-validator@0.1.4", + "type": "library", + "version": "0.1.4" + }, + { + "bom-ref": "rfc3986-validator==0.1.1", + "description": "Pure python rfc3986 validator", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/naimetti/rfc3986-validator" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "rfc3986-validator", + "purl": "pkg:pypi/rfc3986-validator@0.1.1", + "type": "library", + "version": "0.1.1" + }, + { + "bom-ref": "rfc3987-syntax==1.1.0", + "description": "Helper functions to syntactically validate strings according to RFC 3987.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://github.com/willynilly/rfc3987-syntax#readme" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/willynilly/rfc3987-syntax/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/willynilly/rfc3987-syntax" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/willynilly/rfc3987-syntax" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "rfc3987-syntax", + "purl": "pkg:pypi/rfc3987-syntax@1.1.0", + "type": "library", + "version": "1.1.0" + }, + { + "bom-ref": "rich==15.0.0", + "description": "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://rich.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/Textualize/rich" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "rich", + "purl": "pkg:pypi/rich@15.0.0", + "type": "library", + "version": "15.0.0" + }, + { + "bom-ref": "rich-rst==2.0.2", + "description": "A beautiful reStructuredText renderer for rich", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://rich-rst.readthedocs.io/en/latest/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/wasi-master/rich-rst/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/wasi-master/rich-rst" + }, + { + "comment": "from packaging metadata Project-URL: Say Thanks", + "type": "other", + "url": "https://saythanks.io/to/wasi-master" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://wasi-master.github.io/rich-rst" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "rich-rst", + "purl": "pkg:pypi/rich-rst@2.0.2", + "type": "library", + "version": "2.0.2" + }, + { + "bom-ref": "rpds-py==2026.5.1", + "description": "Python bindings to Rust's persistent data structures (rpds)", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://rpds.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/crate-py/rpds/issues/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/crate-py/rpds" + }, + { + "comment": "from packaging metadata Project-URL: Upstream", + "type": "other", + "url": "https://github.com/orium/rpds" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/Julian" + }, + { + "comment": "from packaging metadata Project-URL: Tidelift", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-rpds-py?utm_source=pypi-rpds-py&utm_medium=referral&utm_campaign=pypi-link" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/crate-py/rpds" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "rpds-py", + "purl": "pkg:pypi/rpds-py@2026.5.1", + "type": "library", + "version": "2026.5.1" + }, + { + "bom-ref": "safehttpx==0.1.7", + "description": "A small Python library created to help developers protect their applications from Server Side Request Forgery (SSRF) attacks.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/gradio-app/safehttpx" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://github.com/gradio-app/safehttpx" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "safehttpx", + "purl": "pkg:pypi/safehttpx@0.1.7", + "type": "library", + "version": "0.1.7" + }, + { + "bom-ref": "safetensors==0.8.0", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/huggingface/safetensors" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/huggingface/safetensors" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "safetensors", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "torch" + } + ], + "purl": "pkg:pypi/safetensors@0.8.0", + "type": "library", + "version": "0.8.0" + }, + { + "bom-ref": "semantic-version==2.10.0", + "description": "A library implementing the 'SemVer' scheme.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/rbarrois/python-semanticversion" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "semantic-version", + "purl": "pkg:pypi/semantic-version@2.10.0", + "type": "library", + "version": "2.10.0" + }, + { + "bom-ref": "setuptools==82.0.1", + "description": "Most extensible Python build backend with support for C/C++ extension modules", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://setuptools.pypa.io/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pypa/setuptools" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://setuptools.pypa.io/en/stable/history.html" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "setuptools", + "purl": "pkg:pypi/setuptools@82.0.1", + "type": "library", + "version": "82.0.1" + }, + { + "bom-ref": "shellingham==1.5.4", + "description": "Tool to Detect Surrounding Shell", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/sarugaku/shellingham" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "ISC" + } + } + ], + "name": "shellingham", + "purl": "pkg:pypi/shellingham@1.5.4", + "type": "library", + "version": "1.5.4" + }, + { + "bom-ref": "six==1.17.0", + "description": "Python 2 and 3 compatibility utilities", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/benjaminp/six" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "six", + "purl": "pkg:pypi/six@1.17.0", + "type": "library", + "version": "1.17.0" + }, + { + "bom-ref": "sniffio==1.3.1", + "description": "Sniff out which async library your code is running under", + "evidence": { + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ] + }, + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://sniffio.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://sniffio.readthedocs.io/en/latest/history.html" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/python-trio/sniffio" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MIT OR Apache-2.0" + } + ], + "name": "sniffio", + "purl": "pkg:pypi/sniffio@1.3.1", + "type": "library", + "version": "1.3.1" + }, + { + "bom-ref": "sortedcontainers==2.4.0", + "description": "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "http://www.grantjenks.com/docs/sortedcontainers/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "sortedcontainers", + "purl": "pkg:pypi/sortedcontainers@2.4.0", + "type": "library", + "version": "2.4.0" + }, + { + "bom-ref": "sse-starlette==3.4.5", + "description": "SSE plugin for Starlette", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/sysid/sse-starlette/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/sysid/sse-starlette" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/sysid/sse-starlette" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/sysid/sse-starlette" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "sse-starlette", + "purl": "pkg:pypi/sse-starlette@3.4.5", + "type": "library", + "version": "3.4.5" + }, + { + "bom-ref": "starlette==1.3.1", + "description": "The little ASGI library that shines.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://starlette.dev/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/Kludex/starlette" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/Kludex" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://starlette.dev/release-notes/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/Kludex/starlette" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "starlette", + "purl": "pkg:pypi/starlette@1.3.1", + "type": "library", + "version": "1.3.1" + }, + { + "bom-ref": "stdlib-list==0.12.0", + "description": "A list of Python Standard Libraries (2.7 through 3.14).", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pypi.github.io/stdlib-list/" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/pypi/stdlib-list/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pypi/stdlib-list" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://pypi.org/project/stdlib-list/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "stdlib-list", + "purl": "pkg:pypi/stdlib-list@0.12.0", + "type": "library", + "version": "0.12.0" + }, + { + "bom-ref": "sympy==1.14.0", + "description": "Computer algebra system (CAS) in Python", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/sympy/sympy" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://sympy.org" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "sympy", + "purl": "pkg:pypi/sympy@1.14.0", + "type": "library", + "version": "1.14.0" + }, + { + "bom-ref": "tensorboard==2.21.0", + "description": "TensorBoard lets you watch Tensors Flow", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/tensorflow/tensorboard" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "tensorboard", + "purl": "pkg:pypi/tensorboard@2.21.0", + "type": "library", + "version": "2.21.0" + }, + { + "bom-ref": "tensorboard-data-server==0.7.2", + "description": "Fast data loading for TensorBoard", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/tensorflow/tensorboard/tree/master/tensorboard/data/server" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "tensorboard-data-server", + "purl": "pkg:pypi/tensorboard-data-server@0.7.2", + "type": "library", + "version": "0.7.2" + }, + { + "bom-ref": "tokenizers==0.22.2", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/huggingface/tokenizers" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/huggingface/tokenizers" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "tokenizers", + "purl": "pkg:pypi/tokenizers@0.22.2", + "type": "library", + "version": "0.22.2" + }, + { + "bom-ref": "tomli==2.4.1", + "description": "A lil' TOML parser", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/hukkin/tomli/blob/master/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/hukkin/tomli" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "tomli", + "purl": "pkg:pypi/tomli@2.4.1", + "type": "library", + "version": "2.4.1" + }, + { + "bom-ref": "tomli_w==1.2.0", + "description": "A lil' TOML writer", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/hukkin/tomli-w/blob/master/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/hukkin/tomli-w" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "tomli_w", + "purl": "pkg:pypi/tomli-w@1.2.0", + "type": "library", + "version": "1.2.0" + }, + { + "bom-ref": "tomlkit==0.14.0", + "description": "Style preserving TOML library", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/sdispater/tomlkit" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/sdispater/tomlkit" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "tomlkit", + "purl": "pkg:pypi/tomlkit@0.14.0", + "type": "library", + "version": "0.14.0" + }, + { + "bom-ref": "torch==2.10.0", + "description": "Tensors and Dynamic neural networks in Python with strong GPU acceleration", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pytorch.org/docs" + }, + { + "comment": "from packaging metadata Project-URL: Issue Tracker", + "type": "issue-tracker", + "url": "https://github.com/pytorch/pytorch/issues" + }, + { + "comment": "from packaging metadata Project-URL: Forum", + "type": "other", + "url": "https://discuss.pytorch.org" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/pytorch/pytorch" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://pytorch.org" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "torch", + "purl": "pkg:pypi/torch@2.10.0", + "type": "library", + "version": "2.10.0" + }, + { + "bom-ref": "tqdm==4.68.3", + "description": "Fast, Extensible Progress Meter", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: wiki", + "type": "other", + "url": "https://github.com/tqdm/tqdm/wiki" + }, + { + "comment": "from packaging metadata Project-URL: changelog", + "type": "release-notes", + "url": "https://tqdm.github.io/releases" + }, + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/tqdm/tqdm" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://tqdm.github.io" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MPL-2.0 AND MIT" + } + ], + "name": "tqdm", + "purl": "pkg:pypi/tqdm@4.68.3", + "type": "library", + "version": "4.68.3" + }, + { + "bom-ref": "transformers==5.12.1", + "description": "Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/huggingface/transformers" + } + ], + "name": "transformers", + "purl": "pkg:pypi/transformers@5.12.1", + "type": "library", + "version": "5.12.1" + }, + { + "bom-ref": "triton==3.6.0", + "description": "A language and compiler for custom Deep Learning operations", + "externalReferences": [ + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/triton-lang/triton/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "triton", + "purl": "pkg:pypi/triton@3.6.0", + "type": "library", + "version": "3.6.0" + }, + { + "bom-ref": "typer==0.25.1", + "description": "Typer, build great CLIs. Easy to code. Based on Python type hints.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://typer.tiangolo.com" + }, + { + "comment": "from packaging metadata Project-URL: Issues", + "type": "issue-tracker", + "url": "https://github.com/fastapi/typer/issues" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://typer.tiangolo.com/release-notes/" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/fastapi/typer" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/fastapi/typer" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "typer", + "purl": "pkg:pypi/typer@0.25.1", + "type": "library", + "version": "0.25.1" + }, + { + "bom-ref": "typing-inspection==0.4.2", + "description": "Runtime typing introspection tools", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://pydantic.github.io/typing-inspection/dev/" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/pydantic/typing-inspection" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/pydantic/typing-inspection/blob/main/HISTORY.md" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/pydantic/typing-inspection" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "typing-inspection", + "purl": "pkg:pypi/typing-inspection@0.4.2", + "type": "library", + "version": "0.4.2" + }, + { + "bom-ref": "typing_extensions==4.15.0", + "description": "Backported and Experimental Type Hints for Python 3.9+", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://typing-extensions.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/python/typing_extensions/issues" + }, + { + "comment": "from packaging metadata Project-URL: Q & A", + "type": "other", + "url": "https://github.com/python/typing/discussions" + }, + { + "comment": "from packaging metadata Project-URL: Changes", + "type": "release-notes", + "url": "https://github.com/python/typing_extensions/blob/main/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/python/typing_extensions" + }, + { + "comment": "from packaging metadata Project-URL: Home", + "type": "website", + "url": "https://github.com/python/typing_extensions" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "PSF-2.0" + } + } + ], + "name": "typing_extensions", + "purl": "pkg:pypi/typing-extensions@4.15.0", + "type": "library", + "version": "4.15.0" + }, + { + "bom-ref": "tzdata==2026.2", + "description": "Provider of IANA time zone data", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://tzdata.python.org" + }, + { + "comment": "from packaging metadata Project-URL: Bug Reports", + "type": "issue-tracker", + "url": "https://github.com/python/tzdata/issues" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/python/tzdata" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/python/tzdata" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "tzdata", + "purl": "pkg:pypi/tzdata@2026.2", + "type": "library", + "version": "2026.2" + }, + { + "bom-ref": "uncalled-for==0.3.2", + "description": "Async dependency injection for Python functions", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/chrisguidry/uncalled-for/issues" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/chrisguidry/uncalled-for" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "uncalled-for", + "purl": "pkg:pypi/uncalled-for@0.3.2", + "type": "library", + "version": "0.3.2" + }, + { + "bom-ref": "uri-template==1.3.0", + "description": "RFC 6570 URI Template Processor", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://gitlab.linss.com/open-source/python/uri-template" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "uri-template", + "purl": "pkg:pypi/uri-template@1.3.0", + "type": "library", + "version": "1.3.0" + }, + { + "bom-ref": "urllib3==2.7.0", + "description": "HTTP library with thread-safe connection pooling, file post, and more.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://urllib3.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Issue tracker", + "type": "issue-tracker", + "url": "https://github.com/urllib3/urllib3/issues" + }, + { + "comment": "from packaging metadata Project-URL: Code", + "type": "other", + "url": "https://github.com/urllib3/urllib3" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/urllib3/urllib3/blob/main/CHANGES.rst" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "urllib3", + "purl": "pkg:pypi/urllib3@2.7.0", + "type": "library", + "version": "2.7.0" + }, + { + "bom-ref": "uvicorn==0.49.0", + "description": "The lightning-fast ASGI server.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/Kludex/uvicorn" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/encode" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://uvicorn.dev/release-notes" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://uvicorn.dev/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "uvicorn", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "standard" + } + ], + "purl": "pkg:pypi/uvicorn@0.49.0", + "type": "library", + "version": "0.49.0" + }, + { + "bom-ref": "watchfiles==1.2.0", + "description": "Simple, modern and high performance file watching and code reload in python.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://watchfiles.helpmanual.io" + }, + { + "comment": "from packaging metadata Project-URL: Source", + "type": "other", + "url": "https://github.com/samuelcolvin/watchfiles" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://github.com/sponsors/samuelcolvin" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/samuelcolvin/watchfiles/releases" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/samuelcolvin/watchfiles" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://github.com/samuelcolvin/watchfiles" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "MIT" + } + } + ], + "name": "watchfiles", + "purl": "pkg:pypi/watchfiles@1.2.0", + "type": "library", + "version": "1.2.0" + }, + { + "bom-ref": "webcolors==25.10.0", + "description": "A library for working with the color formats defined by HTML and CSS.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://webcolors.readthedocs.io" + }, + { + "comment": "from packaging metadata Project-URL: Source Code", + "type": "other", + "url": "https://github.com/ubernostrum/webcolors" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "webcolors", + "purl": "pkg:pypi/webcolors@25.10.0", + "type": "library", + "version": "25.10.0" + }, + { + "bom-ref": "websockets==16.0", + "description": "An implementation of the WebSocket Protocol (RFC 6455 & 7692)", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://websockets.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Tracker", + "type": "issue-tracker", + "url": "https://github.com/python-websockets/websockets/issues" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://tidelift.com/subscription/pkg/pypi-websockets?utm_source=pypi-websockets&utm_medium=referral&utm_campaign=readme" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://websockets.readthedocs.io/en/stable/project/changelog.html" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/python-websockets/websockets" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "BSD-3-Clause" + } + } + ], + "name": "websockets", + "purl": "pkg:pypi/websockets@16.0", + "type": "library", + "version": "16.0" + } + ], + "dependencies": [ + { + "dependsOn": [ + "cryptography==49.0.0", + "joserfc==1.7.2" + ], + "ref": "Authlib==1.7.2" + }, + { + "dependsOn": [ + "MarkupSafe==3.0.3" + ], + "ref": "Jinja2==3.1.6" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "coverage==7.14.3" + ], + "ref": "Markdown==3.10.2" + }, + { + "ref": "MarkupSafe==3.0.3" + }, + { + "dependsOn": [ + "cryptography==49.0.0", + "typing_extensions==4.15.0" + ], + "ref": "PyJWT==2.13.0" + }, + { + "ref": "PyYAML==6.0.3" + }, + { + "dependsOn": [ + "colorama==0.4.6" + ], + "ref": "Pygments==2.20.0" + }, + { + "dependsOn": [ + "cryptography==49.0.0", + "jeepney==0.9.0" + ], + "ref": "SecretStorage==3.5.0" + }, + { + "dependsOn": [ + "MarkupSafe==3.0.3" + ], + "ref": "Werkzeug==3.1.8" + }, + { + "ref": "absl-py==2.4.0" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "huggingface_hub==1.21.0", + "matplotlib==3.11.0", + "numpy==2.5.0", + "packaging==26.2", + "psutil==7.2.2", + "pytest==9.1.1", + "rich==15.0.0", + "safetensors==0.8.0", + "tensorboard==2.21.0", + "torch==2.10.0", + "tqdm==4.68.3", + "transformers==5.12.1" + ], + "ref": "accelerate==1.14.0" + }, + { + "dependsOn": [ + "caio==0.9.25" + ], + "ref": "aiofile==3.11.1" + }, + { + "ref": "annotated-doc==0.0.4" + }, + { + "dependsOn": [ + "typing_extensions==4.15.0" + ], + "ref": "annotated-types==0.7.0" + }, + { + "dependsOn": [ + "exceptiongroup==1.3.1", + "idna==3.18", + "typing_extensions==4.15.0" + ], + "ref": "anyio==4.14.1" + }, + { + "dependsOn": [ + "pytest-cov==7.1.0", + "pytest==9.1.1", + "python-dateutil==2.9.0.post0", + "pytz==2026.2", + "tzdata==2026.2" + ], + "ref": "arrow==1.4.0" + }, + { + "ref": "attrs==26.1.0" + }, + { + "dependsOn": [ + "Pygments==2.20.0", + "click==8.4.2", + "coverage==7.14.3", + "fastmcp==3.4.2", + "numpy==2.5.0", + "pytest==9.1.1", + "setuptools==82.0.1", + "torch==2.10.0", + "typer==0.25.1", + "typing_extensions==4.15.0" + ], + "ref": "beartype==0.22.9" + }, + { + "dependsOn": [ + "pytest==9.1.1" + ], + "ref": "boolean.py==5.0" + }, + { + "ref": "brotli==1.2.0" + }, + { + "ref": "cachetools==7.1.4" + }, + { + "dependsOn": [ + "pytest-cov==7.1.0", + "pytest==9.1.1", + "setuptools==82.0.1" + ], + "ref": "caio==0.9.25" + }, + { + "ref": "certifi==2026.6.17" + }, + { + "dependsOn": [ + "pycparser==3.0" + ], + "ref": "cffi==2.0.0" + }, + { + "ref": "chardet==5.2.0" + }, + { + "ref": "charset-normalizer==3.4.7" + }, + { + "dependsOn": [ + "colorama==0.4.6" + ], + "ref": "click==8.4.2" + }, + { + "ref": "colorama==0.4.6" + }, + { + "dependsOn": [ + "matplotlib==3.11.0", + "numpy==2.5.0", + "pillow==12.2.0", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "contourpy==1.3.3" + }, + { + "dependsOn": [ + "tomli==2.4.1" + ], + "ref": "coverage==7.14.3" + }, + { + "dependsOn": [ + "cffi==2.0.0", + "typing_extensions==4.15.0" + ], + "ref": "cryptography==49.0.0" + }, + { + "dependsOn": [ + "cuda-pathfinder==1.5.6", + "numpy==2.5.0", + "nvidia-cuda-nvrtc-cu12==12.8.93", + "nvidia-cufile-cu12==1.13.1.3", + "nvidia-nvjitlink-cu12==12.8.93", + "pytest==9.1.1", + "setuptools==82.0.1" + ], + "ref": "cuda-bindings==12.9.4" + }, + { + "ref": "cuda-pathfinder==1.5.6" + }, + { + "dependsOn": [ + "matplotlib==3.11.0", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "cycler==0.12.1" + }, + { + "dependsOn": [ + "chardet==5.2.0", + "cyclonedx-python-lib==11.11.0", + "packageurl-python==0.17.6", + "packaging==26.2", + "pip-requirements-parser==32.0.1", + "tomli==2.4.1" + ], + "ref": "cyclonedx-bom==7.3.0" + }, + { + "dependsOn": [ + "jsonschema==4.26.0", + "license-expression==30.4.4", + "lxml==6.1.1", + "packageurl-python==0.17.6", + "py-serializable==2.1.0", + "referencing==0.37.0", + "sortedcontainers==2.4.0", + "typing_extensions==4.15.0" + ], + "ref": "cyclonedx-python-lib==11.11.0" + }, + { + "dependsOn": [ + "Markdown==3.10.2", + "PyYAML==6.0.3", + "attrs==26.1.0", + "coverage==7.14.3", + "docstring_parser==0.18.0", + "pydantic==2.13.4", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "rich-rst==2.0.2", + "rich==15.0.0", + "tomli==2.4.1", + "typing_extensions==4.15.0" + ], + "ref": "cyclopts==4.20.0" + }, + { + "ref": "defusedxml==0.7.1" + }, + { + "ref": "distro==1.9.0" + }, + { + "dependsOn": [ + "coverage==7.14.3", + "cryptography==49.0.0", + "httpcore==1.0.9", + "httpx==0.28.1", + "idna==3.18", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "dnspython==2.8.0" + }, + { + "dependsOn": [ + "pytest==9.1.1" + ], + "ref": "docstring_parser==0.18.0" + }, + { + "dependsOn": [ + "dnspython==2.8.0", + "idna==3.18" + ], + "ref": "email-validator==2.3.0" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "fastapi==0.138.2", + "gradio==6.19.0", + "matplotlib==3.11.0", + "networkx==3.6.1", + "openenv-core==0.3.0", + "peft==0.19.1", + "pillow==12.2.0", + "pydantic==2.13.4", + "pygame-ce==2.5.7", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "radon==6.0.1", + "safetensors==0.8.0", + "tensorboard==2.21.0", + "transformers==5.12.1", + "uvicorn==0.49.0" + ], + "ref": "ev-grid-oracle==0.0.1" + }, + { + "dependsOn": [ + "pytest==9.1.1", + "typing_extensions==4.15.0" + ], + "ref": "exceptiongroup==1.3.1" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "PyYAML==6.0.3", + "annotated-doc==0.0.4", + "email-validator==2.3.0", + "httpx==0.28.1", + "pydantic-settings==2.14.2", + "pydantic==2.13.4", + "python-multipart==0.0.32", + "starlette==1.3.1", + "typing-inspection==0.4.2", + "typing_extensions==4.15.0", + "uvicorn==0.49.0" + ], + "ref": "fastapi==0.138.2" + }, + { + "dependsOn": [ + "Authlib==1.7.2", + "PyJWT==2.13.0", + "PyYAML==6.0.3", + "cyclopts==4.20.0", + "exceptiongroup==1.3.1", + "griffelib==2.1.0", + "httpx==0.28.1", + "joserfc==1.7.2", + "jsonref==1.1.0", + "jsonschema-path==0.5.0", + "mcp==1.28.1", + "openai==2.44.0", + "openapi-pydantic==0.5.1", + "opentelemetry-api==1.43.0", + "packaging==26.2", + "platformdirs==4.10.0", + "py-key-value-aio==0.4.5", + "pydantic-settings==2.14.2", + "pydantic==2.13.4", + "pyperclip==1.11.0", + "python-dotenv==1.2.2", + "python-multipart==0.0.32", + "rich==15.0.0", + "starlette==1.3.1", + "typing_extensions==4.15.0", + "uncalled-for==0.3.2", + "uvicorn==0.49.0", + "watchfiles==1.2.0", + "websockets==16.0" + ], + "ref": "fastmcp-slim==3.4.2" + }, + { + "dependsOn": [ + "fastmcp-slim==3.4.2" + ], + "ref": "fastmcp==3.4.2" + }, + { + "ref": "filelock==3.29.4" + }, + { + "dependsOn": [ + "brotli==1.2.0", + "lxml==6.1.1", + "matplotlib==3.11.0", + "sympy==1.14.0" + ], + "ref": "fonttools==4.63.0" + }, + { + "ref": "fqdn==1.5.1" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "numpy==2.5.0", + "pandas==3.0.3", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "requests==2.34.2", + "tqdm==4.68.3", + "urllib3==2.7.0" + ], + "ref": "fsspec==2026.6.0" + }, + { + "dependsOn": [ + "Authlib==1.7.2", + "Jinja2==3.1.6", + "MarkupSafe==3.0.3", + "PyYAML==6.0.3", + "anyio==4.14.1", + "brotli==1.2.0", + "fastapi==0.138.2", + "gradio_client==2.5.0", + "groovy==0.1.2", + "hf-gradio==0.4.1", + "httpx==0.28.1", + "huggingface_hub==1.21.0", + "mcp==1.28.1", + "numpy==2.5.0", + "orjson==3.11.9", + "packaging==26.2", + "pandas==3.0.3", + "pillow==12.2.0", + "pydantic==2.13.4", + "pydub==0.25.1", + "python-multipart==0.0.32", + "pytz==2026.2", + "safehttpx==0.1.7", + "semantic-version==2.10.0", + "starlette==1.3.1", + "tomlkit==0.14.0", + "typer==0.25.1", + "typing_extensions==4.15.0", + "uvicorn==0.49.0" + ], + "ref": "gradio==6.19.0" + }, + { + "dependsOn": [ + "fsspec==2026.6.0", + "httpx==0.28.1", + "huggingface_hub==1.21.0", + "packaging==26.2", + "typing_extensions==4.15.0" + ], + "ref": "gradio_client==2.5.0" + }, + { + "dependsOn": [ + "pip==26.1.2", + "platformdirs==4.10.0" + ], + "ref": "griffelib==2.1.0" + }, + { + "dependsOn": [ + "pytest==9.1.1" + ], + "ref": "groovy==0.1.2" + }, + { + "dependsOn": [ + "typing_extensions==4.15.0" + ], + "ref": "grpcio==1.81.1" + }, + { + "ref": "h11==0.16.0" + }, + { + "dependsOn": [ + "gradio_client==2.5.0", + "typer==0.25.1" + ], + "ref": "hf-gradio==0.4.1" + }, + { + "dependsOn": [ + "pytest==9.1.1" + ], + "ref": "hf-xet==1.5.1" + }, + { + "dependsOn": [ + "anyio==4.14.1", + "certifi==2026.6.17", + "h11==0.16.0" + ], + "ref": "httpcore==1.0.9" + }, + { + "ref": "httpx-sse==0.4.3" + }, + { + "dependsOn": [ + "Pygments==2.20.0", + "anyio==4.14.1", + "brotli==1.2.0", + "certifi==2026.6.17", + "click==8.4.2", + "httpcore==1.0.9", + "idna==3.18", + "rich==15.0.0" + ], + "ref": "httpx==0.28.1" + }, + { + "dependsOn": [ + "Authlib==1.7.2", + "Jinja2==3.1.6", + "PyYAML==6.0.3", + "click==8.4.2", + "fastapi==0.138.2", + "filelock==3.29.4", + "fsspec==2026.6.0", + "gradio==6.19.0", + "hf-xet==1.5.1", + "httpx==0.28.1", + "mcp==1.28.1", + "numpy==2.5.0", + "packaging==26.2", + "pillow==12.2.0", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "requests==2.34.2", + "safetensors==0.8.0", + "torch==2.10.0", + "tqdm==4.68.3", + "typer==0.25.1", + "typing_extensions==4.15.0", + "urllib3==2.7.0" + ], + "ref": "huggingface_hub==1.21.0" + }, + { + "dependsOn": [ + "pytest==9.1.1" + ], + "ref": "idna==3.18" + }, + { + "ref": "iniconfig==2.3.0" + }, + { + "dependsOn": [ + "arrow==1.4.0" + ], + "ref": "isoduration==20.11.0" + }, + { + "dependsOn": [ + "more-itertools==11.1.0", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "jaraco.classes==3.4.0" + }, + { + "dependsOn": [ + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "jaraco.context==6.1.2" + }, + { + "dependsOn": [ + "jaraco.classes==3.4.0", + "more-itertools==11.1.0", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "jaraco.functools==4.5.0" + }, + { + "dependsOn": [ + "pytest==9.1.1" + ], + "ref": "jeepney==0.9.0" + }, + { + "ref": "jiter==0.16.0" + }, + { + "dependsOn": [ + "cryptography==49.0.0" + ], + "ref": "joserfc==1.7.2" + }, + { + "ref": "jsonpointer==3.1.1" + }, + { + "ref": "jsonref==1.1.0" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "attrs==26.1.0", + "pathable==0.6.0", + "referencing==0.37.0", + "requests==2.34.2" + ], + "ref": "jsonschema-path==0.5.0" + }, + { + "dependsOn": [ + "referencing==0.37.0" + ], + "ref": "jsonschema-specifications==2025.9.1" + }, + { + "dependsOn": [ + "attrs==26.1.0", + "fqdn==1.5.1", + "idna==3.18", + "isoduration==20.11.0", + "jsonpointer==3.1.1", + "jsonschema-specifications==2025.9.1", + "referencing==0.37.0", + "rfc3339-validator==0.1.4", + "rfc3986-validator==0.1.1", + "rfc3987-syntax==1.1.0", + "rpds-py==2026.5.1", + "uri-template==1.3.0", + "webcolors==25.10.0" + ], + "ref": "jsonschema==4.26.0" + }, + { + "dependsOn": [ + "SecretStorage==3.5.0", + "jaraco.classes==3.4.0", + "jaraco.context==6.1.2", + "jaraco.functools==4.5.0", + "jeepney==0.9.0", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "keyring==25.7.0" + }, + { + "ref": "kiwisolver==1.5.0" + }, + { + "dependsOn": [ + "regex==2026.6.28" + ], + "ref": "lark==1.3.1" + }, + { + "dependsOn": [ + "boolean.py==5.0", + "pytest==9.1.1" + ], + "ref": "license-expression==30.4.4" + }, + { + "ref": "lxml==6.1.1" + }, + { + "dependsOn": [ + "six==1.17.0" + ], + "ref": "mando==0.7.1" + }, + { + "dependsOn": [ + "Markdown==3.10.2", + "PyYAML==6.0.3", + "coverage==7.14.3", + "mdurl==0.1.2", + "psutil==7.2.2", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "requests==2.34.2" + ], + "ref": "markdown-it-py==4.2.0" + }, + { + "dependsOn": [ + "contourpy==1.3.3", + "cycler==0.12.1", + "fonttools==4.63.0", + "kiwisolver==1.5.0", + "numpy==2.5.0", + "packaging==26.2", + "pillow==12.2.0", + "pyparsing==3.3.2", + "python-dateutil==2.9.0.post0" + ], + "ref": "matplotlib==3.11.0" + }, + { + "dependsOn": [ + "PyJWT==2.13.0", + "anyio==4.14.1", + "httpx-sse==0.4.3", + "httpx==0.28.1", + "jsonschema==4.26.0", + "pydantic-settings==2.14.2", + "pydantic==2.13.4", + "python-dotenv==1.2.2", + "python-multipart==0.0.32", + "rich==15.0.0", + "sse-starlette==3.4.5", + "starlette==1.3.1", + "typer==0.25.1", + "typing-inspection==0.4.2", + "typing_extensions==4.15.0", + "uvicorn==0.49.0", + "websockets==16.0" + ], + "ref": "mcp==1.28.1" + }, + { + "ref": "mdurl==0.1.2" + }, + { + "ref": "more-itertools==11.1.0" + }, + { + "dependsOn": [ + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "mpmath==1.3.0" + }, + { + "dependsOn": [ + "lxml==6.1.1", + "matplotlib==3.11.0", + "numpy==2.5.0", + "pandas==3.0.3", + "pillow==12.2.0", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "sympy==1.14.0" + ], + "ref": "networkx==3.6.1" + }, + { + "ref": "numpy==2.5.0" + }, + { + "ref": "nvidia-cublas-cu12==12.8.4.1" + }, + { + "ref": "nvidia-cuda-cupti-cu12==12.8.90" + }, + { + "ref": "nvidia-cuda-nvrtc-cu12==12.8.93" + }, + { + "ref": "nvidia-cuda-runtime-cu12==12.8.90" + }, + { + "dependsOn": [ + "nvidia-cublas-cu12==12.8.4.1" + ], + "ref": "nvidia-cudnn-cu12==9.10.2.21" + }, + { + "dependsOn": [ + "nvidia-nvjitlink-cu12==12.8.93" + ], + "ref": "nvidia-cufft-cu12==11.3.3.83" + }, + { + "ref": "nvidia-cufile-cu12==1.13.1.3" + }, + { + "ref": "nvidia-curand-cu12==10.3.9.90" + }, + { + "dependsOn": [ + "nvidia-cublas-cu12==12.8.4.1", + "nvidia-cusparse-cu12==12.5.8.93", + "nvidia-nvjitlink-cu12==12.8.93" + ], + "ref": "nvidia-cusolver-cu12==11.7.3.90" + }, + { + "dependsOn": [ + "nvidia-nvjitlink-cu12==12.8.93" + ], + "ref": "nvidia-cusparse-cu12==12.5.8.93" + }, + { + "ref": "nvidia-cusparselt-cu12==0.7.1" + }, + { + "ref": "nvidia-nccl-cu12==2.27.5" + }, + { + "ref": "nvidia-nvjitlink-cu12==12.8.93" + }, + { + "ref": "nvidia-nvshmem-cu12==3.4.5" + }, + { + "ref": "nvidia-nvtx-cu12==12.8.90" + }, + { + "dependsOn": [ + "anyio==4.14.1", + "distro==1.9.0", + "httpx==0.28.1", + "jiter==0.16.0", + "numpy==2.5.0", + "pandas==3.0.3", + "pydantic==2.13.4", + "sniffio==1.3.1", + "tqdm==4.68.3", + "typing_extensions==4.15.0", + "websockets==16.0" + ], + "ref": "openai==2.44.0" + }, + { + "dependsOn": [ + "pydantic==2.13.4" + ], + "ref": "openapi-pydantic==0.5.1" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "fastapi==0.138.2", + "fastmcp==3.4.2", + "gradio==6.19.0", + "httpx==0.28.1", + "huggingface_hub==1.21.0", + "matplotlib==3.11.0", + "openai==2.44.0", + "pydantic==2.13.4", + "requests==2.34.2", + "rich==15.0.0", + "tomli==2.4.1", + "tomli_w==1.2.0", + "typer==0.25.1", + "uvicorn==0.49.0", + "websockets==16.0" + ], + "ref": "openenv-core==0.3.0" + }, + { + "dependsOn": [ + "typing_extensions==4.15.0" + ], + "ref": "opentelemetry-api==1.43.0" + }, + { + "ref": "orjson==3.11.9" + }, + { + "dependsOn": [ + "pytest==9.1.1", + "setuptools==82.0.1" + ], + "ref": "packageurl-python==0.17.6" + }, + { + "ref": "packaging==26.2" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "fsspec==2026.6.0", + "lxml==6.1.1", + "matplotlib==3.11.0", + "numpy==2.5.0", + "pytest==9.1.1", + "python-dateutil==2.9.0.post0", + "pytz==2026.2", + "tzdata==2026.2" + ], + "ref": "pandas==3.0.3" + }, + { + "ref": "pathable==0.6.0" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "accelerate==1.14.0", + "huggingface_hub==1.21.0", + "numpy==2.5.0", + "packaging==26.2", + "protobuf==7.35.1", + "psutil==7.2.2", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "requests==2.34.2", + "safetensors==0.8.0", + "torch==2.10.0", + "tqdm==4.68.3", + "transformers==5.12.1" + ], + "ref": "peft==0.19.1" + }, + { + "dependsOn": [ + "coverage==7.14.3", + "defusedxml==0.7.1", + "packaging==26.2", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "pillow==12.2.0" + }, + { + "dependsOn": [ + "packaging==26.2", + "pyparsing==3.3.2", + "pytest==9.1.1" + ], + "ref": "pip-requirements-parser==32.0.1" + }, + { + "ref": "pip==26.1.2" + }, + { + "ref": "platformdirs==4.10.0" + }, + { + "dependsOn": [ + "coverage==7.14.3", + "pytest==9.1.1" + ], + "ref": "pluggy==1.6.0" + }, + { + "ref": "protobuf==7.35.1" + }, + { + "dependsOn": [ + "colorama==0.4.6", + "coverage==7.14.3", + "packaging==26.2", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "requests==2.34.2", + "setuptools==82.0.1" + ], + "ref": "psutil==7.2.2" + }, + { + "dependsOn": [ + "aiofile==3.11.1", + "anyio==4.14.1", + "beartype==0.22.9", + "cachetools==7.1.4", + "cryptography==49.0.0", + "keyring==25.7.0", + "pydantic==2.13.4", + "pytz==2026.2", + "typing_extensions==4.15.0" + ], + "ref": "py-key-value-aio==0.4.5" + }, + { + "dependsOn": [ + "defusedxml==0.7.1" + ], + "ref": "py-serializable==2.1.0" + }, + { + "ref": "pycparser==3.0" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "pydantic==2.13.4", + "python-dotenv==1.2.2", + "tomli==2.4.1", + "typing-inspection==0.4.2" + ], + "ref": "pydantic-settings==2.14.2" + }, + { + "dependsOn": [ + "annotated-types==0.7.0", + "email-validator==2.3.0", + "pydantic_core==2.46.4", + "typing-inspection==0.4.2", + "typing_extensions==4.15.0", + "tzdata==2026.2" + ], + "ref": "pydantic==2.13.4" + }, + { + "dependsOn": [ + "typing_extensions==4.15.0" + ], + "ref": "pydantic_core==2.46.4" + }, + { + "dependsOn": [ + "stdlib-list==0.12.0" + ], + "ref": "pydeps==3.0.6" + }, + { + "ref": "pydub==0.25.1" + }, + { + "ref": "pygame-ce==2.5.7" + }, + { + "dependsOn": [ + "Jinja2==3.1.6" + ], + "ref": "pyparsing==3.3.2" + }, + { + "ref": "pyperclip==1.11.0" + }, + { + "dependsOn": [ + "coverage==7.14.3", + "pluggy==1.6.0", + "pytest==9.1.1" + ], + "ref": "pytest-cov==7.1.0" + }, + { + "dependsOn": [ + "Pygments==2.20.0", + "attrs==26.1.0", + "colorama==0.4.6", + "exceptiongroup==1.3.1", + "iniconfig==2.3.0", + "packaging==26.2", + "pluggy==1.6.0", + "requests==2.34.2", + "setuptools==82.0.1", + "tomli==2.4.1" + ], + "ref": "pytest==9.1.1" + }, + { + "dependsOn": [ + "six==1.17.0" + ], + "ref": "python-dateutil==2.9.0.post0" + }, + { + "dependsOn": [ + "click==8.4.2" + ], + "ref": "python-dotenv==1.2.2" + }, + { + "ref": "python-multipart==0.0.32" + }, + { + "ref": "pytz==2026.2" + }, + { + "dependsOn": [ + "colorama==0.4.6", + "mando==0.7.1", + "tomli==2.4.1" + ], + "ref": "radon==6.0.1" + }, + { + "dependsOn": [ + "attrs==26.1.0", + "rpds-py==2026.5.1", + "typing_extensions==4.15.0" + ], + "ref": "referencing==0.37.0" + }, + { + "ref": "regex==2026.6.28" + }, + { + "dependsOn": [ + "certifi==2026.6.17", + "chardet==5.2.0", + "charset-normalizer==3.4.7", + "idna==3.18", + "urllib3==2.7.0" + ], + "ref": "requests==2.34.2" + }, + { + "dependsOn": [ + "six==1.17.0" + ], + "ref": "rfc3339-validator==0.1.4" + }, + { + "ref": "rfc3986-validator==0.1.1" + }, + { + "dependsOn": [ + "lark==1.3.1", + "pytest==9.1.1" + ], + "ref": "rfc3987-syntax==1.1.0" + }, + { + "dependsOn": [ + "Pygments==2.20.0", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "rich==15.0.0" + ], + "ref": "rich-rst==2.0.2" + }, + { + "dependsOn": [ + "Pygments==2.20.0", + "markdown-it-py==4.2.0" + ], + "ref": "rich==15.0.0" + }, + { + "ref": "rpds-py==2026.5.1" + }, + { + "dependsOn": [ + "httpx==0.28.1", + "pytest==9.1.1" + ], + "ref": "safehttpx==0.1.7" + }, + { + "dependsOn": [ + "fsspec==2026.6.0", + "huggingface_hub==1.21.0", + "numpy==2.5.0", + "pytest==9.1.1", + "torch==2.10.0" + ], + "ref": "safetensors==0.8.0" + }, + { + "dependsOn": [ + "colorama==0.4.6", + "coverage==7.14.3" + ], + "ref": "semantic-version==2.10.0" + }, + { + "dependsOn": [ + "filelock==3.29.4", + "jaraco.functools==4.5.0", + "more-itertools==11.1.0", + "packaging==26.2", + "pip==26.1.2", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "tomli==2.4.1", + "tomli_w==1.2.0" + ], + "ref": "setuptools==82.0.1" + }, + { + "ref": "shellingham==1.5.4" + }, + { + "ref": "six==1.17.0" + }, + { + "ref": "sniffio==1.3.1" + }, + { + "ref": "sortedcontainers==2.4.0" + }, + { + "dependsOn": [ + "anyio==4.14.1", + "fastapi==0.138.2", + "pydantic==2.13.4", + "starlette==1.3.1", + "uvicorn==0.49.0" + ], + "ref": "sse-starlette==3.4.5" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "PyYAML==6.0.3", + "anyio==4.14.1", + "httpx==0.28.1", + "python-multipart==0.0.32", + "typing_extensions==4.15.0" + ], + "ref": "starlette==1.3.1" + }, + { + "dependsOn": [ + "coverage==7.14.3", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "stdlib-list==0.12.0" + }, + { + "dependsOn": [ + "mpmath==1.3.0", + "pytest==9.1.1" + ], + "ref": "sympy==1.14.0" + }, + { + "ref": "tensorboard-data-server==0.7.2" + }, + { + "dependsOn": [ + "Markdown==3.10.2", + "Werkzeug==3.1.8", + "absl-py==2.4.0", + "grpcio==1.81.1", + "numpy==2.5.0", + "packaging==26.2", + "pillow==12.2.0", + "protobuf==7.35.1", + "setuptools==82.0.1", + "tensorboard-data-server==0.7.2" + ], + "ref": "tensorboard==2.21.0" + }, + { + "dependsOn": [ + "huggingface_hub==1.21.0", + "numpy==2.5.0", + "pytest==9.1.1", + "requests==2.34.2" + ], + "ref": "tokenizers==0.22.2" + }, + { + "ref": "tomli==2.4.1" + }, + { + "ref": "tomli_w==1.2.0" + }, + { + "ref": "tomlkit==0.14.0" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "PyYAML==6.0.3", + "cuda-bindings==12.9.4", + "filelock==3.29.4", + "fsspec==2026.6.0", + "networkx==3.6.1", + "nvidia-cublas-cu12==12.8.4.1", + "nvidia-cuda-cupti-cu12==12.8.90", + "nvidia-cuda-nvrtc-cu12==12.8.93", + "nvidia-cuda-runtime-cu12==12.8.90", + "nvidia-cudnn-cu12==9.10.2.21", + "nvidia-cufft-cu12==11.3.3.83", + "nvidia-cufile-cu12==1.13.1.3", + "nvidia-curand-cu12==10.3.9.90", + "nvidia-cusolver-cu12==11.7.3.90", + "nvidia-cusparse-cu12==12.5.8.93", + "nvidia-cusparselt-cu12==0.7.1", + "nvidia-nccl-cu12==2.27.5", + "nvidia-nvjitlink-cu12==12.8.93", + "nvidia-nvshmem-cu12==3.4.5", + "nvidia-nvtx-cu12==12.8.90", + "setuptools==82.0.1", + "sympy==1.14.0", + "triton==3.6.0", + "typing_extensions==4.15.0" + ], + "ref": "torch==2.10.0" + }, + { + "dependsOn": [ + "colorama==0.4.6", + "requests==2.34.2" + ], + "ref": "tqdm==4.68.3" + }, + { + "dependsOn": [ + "Jinja2==3.1.6", + "PyYAML==6.0.3", + "accelerate==1.14.0", + "fastapi==0.138.2", + "filelock==3.29.4", + "huggingface_hub==1.21.0", + "numpy==2.5.0", + "openai==2.44.0", + "packaging==26.2", + "pillow==12.2.0", + "protobuf==7.35.1", + "psutil==7.2.2", + "pydantic==2.13.4", + "pytest==9.1.1", + "regex==2026.6.28", + "rich==15.0.0", + "safetensors==0.8.0", + "starlette==1.3.1", + "tensorboard==2.21.0", + "tokenizers==0.22.2", + "tomli==2.4.1", + "torch==2.10.0", + "tqdm==4.68.3", + "typer==0.25.1", + "urllib3==2.7.0", + "uvicorn==0.49.0" + ], + "ref": "transformers==5.12.1" + }, + { + "dependsOn": [ + "matplotlib==3.11.0", + "numpy==2.5.0", + "pandas==3.0.3", + "pytest==9.1.1" + ], + "ref": "triton==3.6.0" + }, + { + "dependsOn": [ + "annotated-doc==0.0.4", + "click==8.4.2", + "rich==15.0.0", + "shellingham==1.5.4" + ], + "ref": "typer==0.25.1" + }, + { + "dependsOn": [ + "typing_extensions==4.15.0" + ], + "ref": "typing-inspection==0.4.2" + }, + { + "ref": "typing_extensions==4.15.0" + }, + { + "ref": "tzdata==2026.2" + }, + { + "ref": "uncalled-for==0.3.2" + }, + { + "ref": "uri-template==1.3.0" + }, + { + "dependsOn": [ + "brotli==1.2.0" + ], + "ref": "urllib3==2.7.0" + }, + { + "dependsOn": [ + "PyYAML==6.0.3", + "click==8.4.2", + "colorama==0.4.6", + "h11==0.16.0", + "python-dotenv==1.2.2", + "typing_extensions==4.15.0", + "watchfiles==1.2.0", + "websockets==16.0" + ], + "ref": "uvicorn==0.49.0" + }, + { + "dependsOn": [ + "anyio==4.14.1" + ], + "ref": "watchfiles==1.2.0" + }, + { + "ref": "webcolors==25.10.0" + }, + { + "ref": "websockets==16.0" + } + ], + "metadata": { + "timestamp": "2026-06-30T06:53:50.001317+00:00", + "tools": { + "components": [ + { + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-bom/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "group": "CycloneDX", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "cyclonedx-py", + "type": "application", + "version": "7.3.0" + }, + { + "description": "Python library for CycloneDX", + "externalReferences": [ + { + "type": "build-system", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/actions" + }, + { + "type": "distribution", + "url": "https://pypi.org/project/cyclonedx-python-lib/" + }, + { + "type": "documentation", + "url": "https://cyclonedx-python-library.readthedocs.io/" + }, + { + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/issues" + }, + { + "type": "license", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/LICENSE" + }, + { + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/blob/main/CHANGELOG.md" + }, + { + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib" + }, + { + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/#readme" + } + ], + "group": "CycloneDX", + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + } + ], + "name": "cyclonedx-python-lib", + "type": "library", + "version": "11.11.0" + } + ] + } + }, + "serialNumber": "urn:uuid:4c5702da-bba5-42f9-8aeb-509389c7b932", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6" +} \ No newline at end of file diff --git a/artifacts/knowledge_graph.json b/artifacts/knowledge_graph.json new file mode 100644 index 0000000..f94a9c4 --- /dev/null +++ b/artifacts/knowledge_graph.json @@ -0,0 +1,3532 @@ +{ + "nodes": [ + { + "id": "test_script.py", + "group": 1 + }, + { + "id": "test_script.py:ChargerType", + "group": 2, + "label": "Class" + }, + { + "id": "test_script.py:StationState", + "group": 2, + "label": "Class" + }, + { + "id": "viz/__init__.py", + "group": 1 + }, + { + "id": "viz/record_two_phase.py", + "group": 1 + }, + { + "id": "viz/record_two_phase.py:_step_action", + "group": 3, + "label": "Function" + }, + { + "id": "viz/record_two_phase.py:record_phase", + "group": 3, + "label": "Function" + }, + { + "id": "viz/record_two_phase.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "viz/record.py", + "group": 1 + }, + { + "id": "viz/record.py:record", + "group": 3, + "label": "Function" + }, + { + "id": "viz/record.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py", + "group": 1 + }, + { + "id": "viz/gradio_demo.py:_norm", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:_station_color", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:render_map", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:Session", + "group": 2, + "label": "Class" + }, + { + "id": "viz/gradio_demo.py:new_session", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:step_once", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:compute_kpis", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:xy", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:_start", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:_step", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:_run60", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:_start_and_maybe_autoplay", + "group": 3, + "label": "Function" + }, + { + "id": "viz/gradio_demo.py:_kpis", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py", + "group": 1 + }, + { + "id": "viz/city_map.py:_station_color", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:_norm", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:RenderConfig", + "group": 2, + "label": "Class" + }, + { + "id": "viz/city_map.py:CityMapRenderer", + "group": 2, + "label": "Class" + }, + { + "id": "viz/city_map.py:run_live", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:__init__", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:xy", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:draw_arrow", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:render", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:_draw_background", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:_draw_edges", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:_draw_glow", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:_draw_animated_route", + "group": 3, + "label": "Function" + }, + { + "id": "viz/city_map.py:blit_line", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/road_env.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/road_env.py:RoadCore", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/road_env.py:reset", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/road_env.py:step", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/road_env.py:_obs", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/__init__.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/road_models.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/road_models.py:RoadAction", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/road_models.py:RoadState", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/road_models.py:RoadObservation", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/road_models.py:_non_trivial", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/personas.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/personas.py:PersonaParams", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/personas.py:choose_persona", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/models.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/models.py:ChargerType", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:ChargeRate", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:ActionType", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:DayType", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:PeakRisk", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:StationState", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:EVRequest", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:BESCOMFeederState", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:GridState", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:EVGridAction", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:EVGridObservation", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:NegotiationMessage", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:GridDirective", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:MultiAgentStepRequest", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:MultiAgentStepResponse", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:SimTopStation", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:SimulationPrediction", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/models.py:to_jsonable", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/models.py:_occupied_le_total", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/models.py:_check_consistency", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/parsing.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/parsing.py:parse_simulation", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/parsing.py:parse_action", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/parsing.py:parse_simulation_and_action", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/demand_sim.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/demand_sim.py:DemandParams", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/demand_sim.py:_gaussian_bump", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/demand_sim.py:expected_arrivals_per_step", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/demand_sim.py:sample_arrivals_per_step", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward_hack.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/reward_hack.py:RewardHackDetector", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/reward_hack.py:reset", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward_hack.py:step", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward_hack.py:add", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/env.py:EVGridCore", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/env.py:_peak_risk", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:_make_ev", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:_apply_action", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:_drain_queues_and_charging", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:_update_station_waits", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:_build_prompt", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:reset", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:step", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/env.py:_apply_tariff_mult", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/policies.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/policies.py:baseline_policy", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/policies.py:always_defer_policy", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/policies.py:always_load_shift_policy", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/policies.py:nearest_travel_only_policy", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/multi_agent.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/multi_agent.py:MultiAgentSession", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/multi_agent.py:step", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/multi_agent.py:snapshot", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/grid_sim.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/grid_sim.py:GridParams", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/grid_sim.py:_clamp01", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/grid_sim.py:baseline_grid_load", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/grid_sim.py:renewable_pct", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/grid_sim.py:update_grid_load", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/reward.py:RewardWeights", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/reward.py:_haversine_km", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward.py:_graph_route_km", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward.py:compute_reward", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward.py:split_role_rewards", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward.py:add_flag", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/reward.py:f", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/oracle_agent.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/oracle_agent.py:OracleRuntime", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:OracleAgent", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:load", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:_ensure_loaded", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:act", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:act_with_text", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:is_active", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/oracle_agent.py:_generate", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/bescom_feed.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/bescom_feed.py:BESCOMFeedAPI", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/bescom_feed.py:snapshot", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/bescom_feed.py:_stable_seed", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/bescom_feed.py:_zone_for_station", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/scenarios.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/scenarios.py:ScenarioEvent", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/scenarios.py:ScenarioModifiers", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/scenarios.py:scenario_schedule", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/scenarios.py:apply_scenario_events", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/traffic.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/traffic.py:_clamp", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/traffic.py:_stable_u01", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/traffic.py:TrafficModel", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/traffic.py:multiplier_for_edge", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/traffic.py:hotspot", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/world_model_verifier.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/world_model_verifier.py:PredictionScore", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/world_model_verifier.py:_top3", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/world_model_verifier.py:rollout_deterministic_5ticks", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/world_model_verifier.py:score_prediction", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py", + "group": 1 + }, + { + "id": "ev_grid_oracle/city_graph.py:StationSpec", + "group": 2, + "label": "Class" + }, + { + "id": "ev_grid_oracle/city_graph.py:get_station_by_id", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:get_station_by_slug", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:haversine_km", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:_edge_minutes", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:_add_chain_edges", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:_add_dense_within_cluster", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:build_city_graph", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:travel_time_minutes", + "group": 3, + "label": "Function" + }, + { + "id": "ev_grid_oracle/city_graph.py:nearest_stations_by_geo", + "group": 3, + "label": "Function" + }, + { + "id": "server/role_metrics.py", + "group": 1 + }, + { + "id": "server/role_metrics.py:compute_role_kpis", + "group": 3, + "label": "Function" + }, + { + "id": "server/role_metrics.py:compute_role_reward_breakdown", + "group": 3, + "label": "Function" + }, + { + "id": "server/role_metrics.py:_peak_risk_score", + "group": 3, + "label": "Function" + }, + { + "id": "server/role_metrics.py:summarize_action", + "group": 3, + "label": "Function" + }, + { + "id": "server/role_metrics.py:part", + "group": 3, + "label": "Function" + }, + { + "id": "server/__init__.py", + "group": 1 + }, + { + "id": "server/app.py", + "group": 1 + }, + { + "id": "server/app.py:_request_id", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_oracle_skip_llm_env", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_rate_limit", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_demo_oracle_act_with_guard", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:root", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:healthz", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_osm_route_polyline", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_graph_route_polyline", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_spawn_road_point_away_from_stations", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_demo_session_gc", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_demo_session_get", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:DemoNewRequest", + "group": 2, + "label": "Class" + }, + { + "id": "server/app.py:_ma_gc", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_ma_get", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:MANewRequest", + "group": 2, + "label": "Class" + }, + { + "id": "server/app.py:ma_new", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_grid_policy", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:MAAutoStepRequest", + "group": 2, + "label": "Class" + }, + { + "id": "server/app.py:ma_auto_step", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:ma_state", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:ma_step", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_obs_to_jsonable", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:_station_nodes", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:demo_new", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:demo_state", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:DemoSpawnVehicleRequest", + "group": 2, + "label": "Class" + }, + { + "id": "server/app.py:demo_spawn_vehicle", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:demo_step", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "server/app.py:run", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_road_environment.py", + "group": 1 + }, + { + "id": "server/ev_grid_road_environment.py:EVGridRoadEnvironment", + "group": 2, + "label": "Class" + }, + { + "id": "server/ev_grid_road_environment.py:__init__", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_road_environment.py:reset", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_road_environment.py:step", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_road_environment.py:state", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py", + "group": 1 + }, + { + "id": "server/road_router.py:haversine_m", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:decode_polyline_latlng", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:RoadRouter", + "group": 2, + "label": "Class" + }, + { + "id": "server/road_router.py:get_router", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:_next", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:load", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:nearest_node", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:route_polyline", + "group": 3, + "label": "Function" + }, + { + "id": "server/road_router.py:_w", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_environment.py", + "group": 1 + }, + { + "id": "server/ev_grid_environment.py:EVGridEnvironment", + "group": 2, + "label": "Class" + }, + { + "id": "server/ev_grid_environment.py:__init__", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_environment.py:reset", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_environment.py:step", + "group": 3, + "label": "Function" + }, + { + "id": "server/ev_grid_environment.py:state", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/__init__.py", + "group": 1 + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py", + "group": 1 + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py:__ENV_CLASS_NAME__Action", + "group": 2, + "label": "Class" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py:__ENV_CLASS_NAME__Observation", + "group": 2, + "label": "Class" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py", + "group": 1 + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:__ENV_CLASS_NAME__Env", + "group": 2, + "label": "Class" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:_step_payload", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:_parse_result", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:_parse_state", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__init__.py", + "group": 1 + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py", + "group": 1 + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py:main", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py", + "group": 1 + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:__ENV_CLASS_NAME__Environment", + "group": 2, + "label": "Class" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:__init__", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:reset", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:step", + "group": 3, + "label": "Function" + }, + { + "id": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:state", + "group": 3, + "label": "Function" + }, + { + "id": "tests/__init__.py", + "group": 1 + }, + { + "id": "tests/test_models_and_graph.py", + "group": 1 + }, + { + "id": "tests/test_models_and_graph.py:test_city_graph_connected_and_25_stations", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_models_and_graph.py:test_action_route_requires_station_id_and_zero_defer", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_models_and_graph.py:test_action_defer_requires_positive_defer_minutes", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_models_and_graph.py:test_time_advances_with_5min_steps", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_policies_collapse.py", + "group": 1 + }, + { + "id": "tests/test_policies_collapse.py:_run_policy", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_policies_collapse.py:test_collapse_policies_do_not_crash", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_policies_collapse.py:test_collapse_policies_return_valid_actions_when_pending", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_evaluate_paired.py", + "group": 1 + }, + { + "id": "tests/test_evaluate_paired.py:_chdir_repo_root", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_evaluate_paired.py:test_baseline_rollout_identical_for_same_seed_and_scenario", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_evaluate_paired.py:test_oracle_matches_baseline_when_skip_llm", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_evaluate_paired.py:test_evaluate_cli_paired_json", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_evaluate_paired.py:test_fair_eval_cli", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_world_model_verifier.py", + "group": 1 + }, + { + "id": "tests/test_world_model_verifier.py:test_rollout_deterministic_is_stable", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_world_model_verifier.py:test_prediction_score_higher_when_close", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_parsing.py", + "group": 1 + }, + { + "id": "tests/test_parsing.py:test_parse_simulation_valid", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_parsing.py:test_parse_simulation_missing_match", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_parsing.py:test_parse_simulation_exception_handling", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_reward.py", + "group": 1 + }, + { + "id": "tests/test_reward.py:test_reward_breakdown_has_keys_and_total", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_reward.py:test_deferring_critical_ev_penalized", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_reward.py:test_invalid_station_routes_penalized", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_reward.py:test_split_role_rewards_exception_handling", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_env_determinism.py", + "group": 1 + }, + { + "id": "tests/test_env_determinism.py:test_reset_state_identical_two_cores_same_seed", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_env_determinism.py:test_step_sequence_identical_two_cores_same_actions", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_env_determinism.py:test_ev_grid_action_rejects_malformed_payload", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_env_determinism.py:test_route_action_requires_station", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_demo_api.py", + "group": 1 + }, + { + "id": "tests/test_demo_api.py:test_demo_new_and_step_roundtrip", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_demo_api.py:test_demo_spawn_vehicle_route_event", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_demo_api.py:test_demo_step_forced_action_validation_422", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_demo_api.py:test_health_shape", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_demo_api.py:test_demo_sessions_ttl_eviction", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_demo_api.py:test_ma_new_and_step_roundtrip", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_fair_eval_mcnemar.py", + "group": 1 + }, + { + "id": "tests/test_fair_eval_mcnemar.py:test_mcnemar_no_discordant_is_neutral", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_fair_eval_mcnemar.py:test_mcnemar_strong_asymmetry_low_p", + "group": 3, + "label": "Function" + }, + { + "id": "tests/test_fair_eval_mcnemar.py:test_paired_mcnemar_analysis_shape", + "group": 3, + "label": "Function" + }, + { + "id": "training/__init__.py", + "group": 1 + }, + { + "id": "training/fair_eval.py", + "group": 1 + }, + { + "id": "training/fair_eval.py:_binom_two_sided_exact_p", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:mcnemar_discordant", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:paired_mcnemar_analysis", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:wilson_interval", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:_binary_keys", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:analyze_per_episode", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:_paired_improvement_counts", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:plot_fair_eval", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:pmf", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:pair", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:rate", + "group": 3, + "label": "Function" + }, + { + "id": "training/fair_eval.py:errs", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py", + "group": 1 + }, + { + "id": "training/make_plots.py:_boxplot_compat", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:_per_episode_rows", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_kpi_bars", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_episode_trajectories", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_delta_histograms", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_reward_breakdown", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_boxplots", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_oracle_win_rates", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_paired_scatter", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_binary_timeline", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_fair_eval_rates", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_mcnemar_summary", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:plot_dashboard_grid", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "training/make_plots.py:rate", + "group": 3, + "label": "Function" + }, + { + "id": "training/evaluate.py", + "group": 1 + }, + { + "id": "training/evaluate.py:EpisodeMetrics", + "group": 2, + "label": "Class" + }, + { + "id": "training/evaluate.py:_episode_metrics_to_json", + "group": 3, + "label": "Function" + }, + { + "id": "training/evaluate.py:run_episode", + "group": 3, + "label": "Function" + }, + { + "id": "training/evaluate.py:summarize", + "group": 3, + "label": "Function" + }, + { + "id": "training/evaluate.py:summarize_reward_breakdown", + "group": 3, + "label": "Function" + }, + { + "id": "training/evaluate.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/docs_sync.py", + "group": 1 + }, + { + "id": "tools/docs_sync.py:sync_docs", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py", + "group": 1 + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py:_chunk", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py:_overpass_query", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py:_tile_bbox", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py:_http_post", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py:_to_geojson", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_bangalore_roads_overpass.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/__init__.py", + "group": 1 + }, + { + "id": "tools/export_grpo_tensorboard_plots.py", + "group": 1 + }, + { + "id": "tools/export_grpo_tensorboard_plots.py:_pick_tags", + "group": 3, + "label": "Function" + }, + { + "id": "tools/export_grpo_tensorboard_plots.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/export_grpo_tensorboard_plots.py:plot_tag", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_roads_render.py", + "group": 1 + }, + { + "id": "tools/build_roads_render.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/sync_space_to_hub.py", + "group": 1 + }, + { + "id": "tools/sync_space_to_hub.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/write_eval_snapshot.py", + "group": 1 + }, + { + "id": "tools/write_eval_snapshot.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_knowledge_graph.py", + "group": 1 + }, + { + "id": "tools/generate_knowledge_graph.py:generate_graph", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py", + "group": 1 + }, + { + "id": "tools/generate_health_dashboard.py:run_cmd", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:get_git_stats", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:get_leaderboard", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:get_documentation_health", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:fetch_github_stats", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:run_pytest_cov", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:run_radon", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:run_bandit", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:run_ruff", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:calculate_health_scores", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:generate_ai_insights", + "group": 3, + "label": "Function" + }, + { + "id": "tools/generate_health_dashboard.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py", + "group": 1 + }, + { + "id": "tools/build_road_graph.py:haversine_m", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:_encode_signed", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:encode_polyline_latlng", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:speed_kmh", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:Node", + "group": 2, + "label": "Class" + }, + { + "id": "tools/build_road_graph.py:snap", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:_coords_latlng_from_geojson_line", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:parse_args", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:build_adjacency", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:contract_edges", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:filter_largest_component", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:add_neighbor", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:get_node", + "group": 3, + "label": "Function" + }, + { + "id": "tools/build_road_graph.py:flush", + "group": 3, + "label": "Function" + }, + { + "id": "tools/road_reward_smoke.py", + "group": 1 + }, + { + "id": "tools/road_reward_smoke.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/road_reward_smoke.py:parse", + "group": 3, + "label": "Function" + }, + { + "id": "tools/road_reward_smoke.py:reward", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_osm_roads.py", + "group": 1 + }, + { + "id": "tools/fetch_osm_roads.py:BBox", + "group": 2, + "label": "Class" + }, + { + "id": "tools/fetch_osm_roads.py:_fetch_overpass", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_osm_roads.py:_simplify_line", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_osm_roads.py:_to_feature_collection", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_osm_roads.py:build_query", + "group": 3, + "label": "Function" + }, + { + "id": "tools/fetch_osm_roads.py:main", + "group": 3, + "label": "Function" + }, + { + "id": "tools/prune_osm_geojson.py", + "group": 1 + }, + { + "id": "tools/prune_osm_geojson.py:_pad_bbox", + "group": 3, + "label": "Function" + }, + { + "id": "tools/prune_osm_geojson.py:_line_intersects_bbox", + "group": 3, + "label": "Function" + }, + { + "id": "tools/prune_osm_geojson.py:_simplify_uniform", + "group": 3, + "label": "Function" + }, + { + "id": "tools/prune_osm_geojson.py:main", + "group": 3, + "label": "Function" + } + ], + "edges": [ + { + "source": "test_script.py", + "target": "test_script.py:ChargerType", + "type": "contains" + }, + { + "source": "test_script.py", + "target": "test_script.py:StationState", + "type": "contains" + }, + { + "source": "viz/record_two_phase.py", + "target": "viz/record_two_phase.py:_step_action", + "type": "contains" + }, + { + "source": "viz/record_two_phase.py", + "target": "viz/record_two_phase.py:record_phase", + "type": "contains" + }, + { + "source": "viz/record_two_phase.py", + "target": "viz/record_two_phase.py:main", + "type": "contains" + }, + { + "source": "viz/record.py", + "target": "viz/record.py:record", + "type": "contains" + }, + { + "source": "viz/record.py", + "target": "viz/record.py:main", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_norm", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_station_color", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:render_map", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:Session", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:new_session", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:step_once", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:compute_kpis", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:xy", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_start", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_step", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_run60", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_start_and_maybe_autoplay", + "type": "contains" + }, + { + "source": "viz/gradio_demo.py", + "target": "viz/gradio_demo.py:_kpis", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:_station_color", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:_norm", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:RenderConfig", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:CityMapRenderer", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:run_live", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:__init__", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:xy", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:draw_arrow", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:render", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:_draw_background", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:_draw_edges", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:_draw_glow", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:_draw_animated_route", + "type": "contains" + }, + { + "source": "viz/city_map.py", + "target": "viz/city_map.py:blit_line", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_env.py", + "target": "ev_grid_oracle/road_env.py:RoadCore", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_env.py", + "target": "ev_grid_oracle/road_env.py:reset", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_env.py", + "target": "ev_grid_oracle/road_env.py:step", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_env.py", + "target": "ev_grid_oracle/road_env.py:_obs", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_models.py", + "target": "ev_grid_oracle/road_models.py:RoadAction", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_models.py", + "target": "ev_grid_oracle/road_models.py:RoadState", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_models.py", + "target": "ev_grid_oracle/road_models.py:RoadObservation", + "type": "contains" + }, + { + "source": "ev_grid_oracle/road_models.py", + "target": "ev_grid_oracle/road_models.py:_non_trivial", + "type": "contains" + }, + { + "source": "ev_grid_oracle/personas.py", + "target": "ev_grid_oracle/personas.py:PersonaParams", + "type": "contains" + }, + { + "source": "ev_grid_oracle/personas.py", + "target": "ev_grid_oracle/personas.py:choose_persona", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:ChargerType", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:ChargeRate", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:ActionType", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:DayType", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:PeakRisk", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:StationState", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:EVRequest", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:BESCOMFeederState", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:GridState", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:EVGridAction", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:EVGridObservation", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:NegotiationMessage", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:GridDirective", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:MultiAgentStepRequest", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:MultiAgentStepResponse", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:SimTopStation", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:SimulationPrediction", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:to_jsonable", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:_occupied_le_total", + "type": "contains" + }, + { + "source": "ev_grid_oracle/models.py", + "target": "ev_grid_oracle/models.py:_check_consistency", + "type": "contains" + }, + { + "source": "ev_grid_oracle/parsing.py", + "target": "ev_grid_oracle/parsing.py:parse_simulation", + "type": "contains" + }, + { + "source": "ev_grid_oracle/parsing.py", + "target": "ev_grid_oracle/parsing.py:parse_action", + "type": "contains" + }, + { + "source": "ev_grid_oracle/parsing.py", + "target": "ev_grid_oracle/parsing.py:parse_simulation_and_action", + "type": "contains" + }, + { + "source": "ev_grid_oracle/demand_sim.py", + "target": "ev_grid_oracle/demand_sim.py:DemandParams", + "type": "contains" + }, + { + "source": "ev_grid_oracle/demand_sim.py", + "target": "ev_grid_oracle/demand_sim.py:_gaussian_bump", + "type": "contains" + }, + { + "source": "ev_grid_oracle/demand_sim.py", + "target": "ev_grid_oracle/demand_sim.py:expected_arrivals_per_step", + "type": "contains" + }, + { + "source": "ev_grid_oracle/demand_sim.py", + "target": "ev_grid_oracle/demand_sim.py:sample_arrivals_per_step", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward_hack.py", + "target": "ev_grid_oracle/reward_hack.py:RewardHackDetector", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward_hack.py", + "target": "ev_grid_oracle/reward_hack.py:reset", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward_hack.py", + "target": "ev_grid_oracle/reward_hack.py:step", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward_hack.py", + "target": "ev_grid_oracle/reward_hack.py:add", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:EVGridCore", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_peak_risk", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_make_ev", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_apply_action", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_drain_queues_and_charging", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_update_station_waits", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_build_prompt", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:reset", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:step", + "type": "contains" + }, + { + "source": "ev_grid_oracle/env.py", + "target": "ev_grid_oracle/env.py:_apply_tariff_mult", + "type": "contains" + }, + { + "source": "ev_grid_oracle/policies.py", + "target": "ev_grid_oracle/policies.py:baseline_policy", + "type": "contains" + }, + { + "source": "ev_grid_oracle/policies.py", + "target": "ev_grid_oracle/policies.py:always_defer_policy", + "type": "contains" + }, + { + "source": "ev_grid_oracle/policies.py", + "target": "ev_grid_oracle/policies.py:always_load_shift_policy", + "type": "contains" + }, + { + "source": "ev_grid_oracle/policies.py", + "target": "ev_grid_oracle/policies.py:nearest_travel_only_policy", + "type": "contains" + }, + { + "source": "ev_grid_oracle/multi_agent.py", + "target": "ev_grid_oracle/multi_agent.py:MultiAgentSession", + "type": "contains" + }, + { + "source": "ev_grid_oracle/multi_agent.py", + "target": "ev_grid_oracle/multi_agent.py:step", + "type": "contains" + }, + { + "source": "ev_grid_oracle/multi_agent.py", + "target": "ev_grid_oracle/multi_agent.py:snapshot", + "type": "contains" + }, + { + "source": "ev_grid_oracle/grid_sim.py", + "target": "ev_grid_oracle/grid_sim.py:GridParams", + "type": "contains" + }, + { + "source": "ev_grid_oracle/grid_sim.py", + "target": "ev_grid_oracle/grid_sim.py:_clamp01", + "type": "contains" + }, + { + "source": "ev_grid_oracle/grid_sim.py", + "target": "ev_grid_oracle/grid_sim.py:baseline_grid_load", + "type": "contains" + }, + { + "source": "ev_grid_oracle/grid_sim.py", + "target": "ev_grid_oracle/grid_sim.py:renewable_pct", + "type": "contains" + }, + { + "source": "ev_grid_oracle/grid_sim.py", + "target": "ev_grid_oracle/grid_sim.py:update_grid_load", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:RewardWeights", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:_haversine_km", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:_graph_route_km", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:compute_reward", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:split_role_rewards", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:add_flag", + "type": "contains" + }, + { + "source": "ev_grid_oracle/reward.py", + "target": "ev_grid_oracle/reward.py:f", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:OracleRuntime", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:OracleAgent", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:load", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:_ensure_loaded", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:act", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:act_with_text", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:is_active", + "type": "contains" + }, + { + "source": "ev_grid_oracle/oracle_agent.py", + "target": "ev_grid_oracle/oracle_agent.py:_generate", + "type": "contains" + }, + { + "source": "ev_grid_oracle/bescom_feed.py", + "target": "ev_grid_oracle/bescom_feed.py:BESCOMFeedAPI", + "type": "contains" + }, + { + "source": "ev_grid_oracle/bescom_feed.py", + "target": "ev_grid_oracle/bescom_feed.py:snapshot", + "type": "contains" + }, + { + "source": "ev_grid_oracle/bescom_feed.py", + "target": "ev_grid_oracle/bescom_feed.py:_stable_seed", + "type": "contains" + }, + { + "source": "ev_grid_oracle/bescom_feed.py", + "target": "ev_grid_oracle/bescom_feed.py:_zone_for_station", + "type": "contains" + }, + { + "source": "ev_grid_oracle/scenarios.py", + "target": "ev_grid_oracle/scenarios.py:ScenarioEvent", + "type": "contains" + }, + { + "source": "ev_grid_oracle/scenarios.py", + "target": "ev_grid_oracle/scenarios.py:ScenarioModifiers", + "type": "contains" + }, + { + "source": "ev_grid_oracle/scenarios.py", + "target": "ev_grid_oracle/scenarios.py:scenario_schedule", + "type": "contains" + }, + { + "source": "ev_grid_oracle/scenarios.py", + "target": "ev_grid_oracle/scenarios.py:apply_scenario_events", + "type": "contains" + }, + { + "source": "ev_grid_oracle/traffic.py", + "target": "ev_grid_oracle/traffic.py:_clamp", + "type": "contains" + }, + { + "source": "ev_grid_oracle/traffic.py", + "target": "ev_grid_oracle/traffic.py:_stable_u01", + "type": "contains" + }, + { + "source": "ev_grid_oracle/traffic.py", + "target": "ev_grid_oracle/traffic.py:TrafficModel", + "type": "contains" + }, + { + "source": "ev_grid_oracle/traffic.py", + "target": "ev_grid_oracle/traffic.py:multiplier_for_edge", + "type": "contains" + }, + { + "source": "ev_grid_oracle/traffic.py", + "target": "ev_grid_oracle/traffic.py:hotspot", + "type": "contains" + }, + { + "source": "ev_grid_oracle/world_model_verifier.py", + "target": "ev_grid_oracle/world_model_verifier.py:PredictionScore", + "type": "contains" + }, + { + "source": "ev_grid_oracle/world_model_verifier.py", + "target": "ev_grid_oracle/world_model_verifier.py:_top3", + "type": "contains" + }, + { + "source": "ev_grid_oracle/world_model_verifier.py", + "target": "ev_grid_oracle/world_model_verifier.py:rollout_deterministic_5ticks", + "type": "contains" + }, + { + "source": "ev_grid_oracle/world_model_verifier.py", + "target": "ev_grid_oracle/world_model_verifier.py:score_prediction", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:StationSpec", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:get_station_by_id", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:get_station_by_slug", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:haversine_km", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:_edge_minutes", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:_add_chain_edges", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:_add_dense_within_cluster", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:build_city_graph", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:travel_time_minutes", + "type": "contains" + }, + { + "source": "ev_grid_oracle/city_graph.py", + "target": "ev_grid_oracle/city_graph.py:nearest_stations_by_geo", + "type": "contains" + }, + { + "source": "server/role_metrics.py", + "target": "server/role_metrics.py:compute_role_kpis", + "type": "contains" + }, + { + "source": "server/role_metrics.py", + "target": "server/role_metrics.py:compute_role_reward_breakdown", + "type": "contains" + }, + { + "source": "server/role_metrics.py", + "target": "server/role_metrics.py:_peak_risk_score", + "type": "contains" + }, + { + "source": "server/role_metrics.py", + "target": "server/role_metrics.py:summarize_action", + "type": "contains" + }, + { + "source": "server/role_metrics.py", + "target": "server/role_metrics.py:part", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_request_id", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_oracle_skip_llm_env", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_rate_limit", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_demo_oracle_act_with_guard", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:root", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:healthz", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_osm_route_polyline", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_graph_route_polyline", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_spawn_road_point_away_from_stations", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_demo_session_gc", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_demo_session_get", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:DemoNewRequest", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_ma_gc", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_ma_get", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:MANewRequest", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:ma_new", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_grid_policy", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:MAAutoStepRequest", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:ma_auto_step", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:ma_state", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:ma_step", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_obs_to_jsonable", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:_station_nodes", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:demo_new", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:demo_state", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:DemoSpawnVehicleRequest", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:demo_spawn_vehicle", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:demo_step", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:main", + "type": "contains" + }, + { + "source": "server/app.py", + "target": "server/app.py:run", + "type": "contains" + }, + { + "source": "server/ev_grid_road_environment.py", + "target": "server/ev_grid_road_environment.py:EVGridRoadEnvironment", + "type": "contains" + }, + { + "source": "server/ev_grid_road_environment.py", + "target": "server/ev_grid_road_environment.py:__init__", + "type": "contains" + }, + { + "source": "server/ev_grid_road_environment.py", + "target": "server/ev_grid_road_environment.py:reset", + "type": "contains" + }, + { + "source": "server/ev_grid_road_environment.py", + "target": "server/ev_grid_road_environment.py:step", + "type": "contains" + }, + { + "source": "server/ev_grid_road_environment.py", + "target": "server/ev_grid_road_environment.py:state", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:haversine_m", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:decode_polyline_latlng", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:RoadRouter", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:get_router", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:_next", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:load", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:nearest_node", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:route_polyline", + "type": "contains" + }, + { + "source": "server/road_router.py", + "target": "server/road_router.py:_w", + "type": "contains" + }, + { + "source": "server/ev_grid_environment.py", + "target": "server/ev_grid_environment.py:EVGridEnvironment", + "type": "contains" + }, + { + "source": "server/ev_grid_environment.py", + "target": "server/ev_grid_environment.py:__init__", + "type": "contains" + }, + { + "source": "server/ev_grid_environment.py", + "target": "server/ev_grid_environment.py:reset", + "type": "contains" + }, + { + "source": "server/ev_grid_environment.py", + "target": "server/ev_grid_environment.py:step", + "type": "contains" + }, + { + "source": "server/ev_grid_environment.py", + "target": "server/ev_grid_environment.py:state", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py:__ENV_CLASS_NAME__Action", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py:__ENV_CLASS_NAME__Observation", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:__ENV_CLASS_NAME__Env", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:_step_payload", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:_parse_result", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py:_parse_state", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py:main", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:__ENV_CLASS_NAME__Environment", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:__init__", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:reset", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:step", + "type": "contains" + }, + { + "source": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py", + "target": ".cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py:state", + "type": "contains" + }, + { + "source": "tests/test_models_and_graph.py", + "target": "tests/test_models_and_graph.py:test_city_graph_connected_and_25_stations", + "type": "contains" + }, + { + "source": "tests/test_models_and_graph.py", + "target": "tests/test_models_and_graph.py:test_action_route_requires_station_id_and_zero_defer", + "type": "contains" + }, + { + "source": "tests/test_models_and_graph.py", + "target": "tests/test_models_and_graph.py:test_action_defer_requires_positive_defer_minutes", + "type": "contains" + }, + { + "source": "tests/test_models_and_graph.py", + "target": "tests/test_models_and_graph.py:test_time_advances_with_5min_steps", + "type": "contains" + }, + { + "source": "tests/test_policies_collapse.py", + "target": "tests/test_policies_collapse.py:_run_policy", + "type": "contains" + }, + { + "source": "tests/test_policies_collapse.py", + "target": "tests/test_policies_collapse.py:test_collapse_policies_do_not_crash", + "type": "contains" + }, + { + "source": "tests/test_policies_collapse.py", + "target": "tests/test_policies_collapse.py:test_collapse_policies_return_valid_actions_when_pending", + "type": "contains" + }, + { + "source": "tests/test_evaluate_paired.py", + "target": "tests/test_evaluate_paired.py:_chdir_repo_root", + "type": "contains" + }, + { + "source": "tests/test_evaluate_paired.py", + "target": "tests/test_evaluate_paired.py:test_baseline_rollout_identical_for_same_seed_and_scenario", + "type": "contains" + }, + { + "source": "tests/test_evaluate_paired.py", + "target": "tests/test_evaluate_paired.py:test_oracle_matches_baseline_when_skip_llm", + "type": "contains" + }, + { + "source": "tests/test_evaluate_paired.py", + "target": "tests/test_evaluate_paired.py:test_evaluate_cli_paired_json", + "type": "contains" + }, + { + "source": "tests/test_evaluate_paired.py", + "target": "tests/test_evaluate_paired.py:test_fair_eval_cli", + "type": "contains" + }, + { + "source": "tests/test_world_model_verifier.py", + "target": "tests/test_world_model_verifier.py:test_rollout_deterministic_is_stable", + "type": "contains" + }, + { + "source": "tests/test_world_model_verifier.py", + "target": "tests/test_world_model_verifier.py:test_prediction_score_higher_when_close", + "type": "contains" + }, + { + "source": "tests/test_parsing.py", + "target": "tests/test_parsing.py:test_parse_simulation_valid", + "type": "contains" + }, + { + "source": "tests/test_parsing.py", + "target": "tests/test_parsing.py:test_parse_simulation_missing_match", + "type": "contains" + }, + { + "source": "tests/test_parsing.py", + "target": "tests/test_parsing.py:test_parse_simulation_exception_handling", + "type": "contains" + }, + { + "source": "tests/test_reward.py", + "target": "tests/test_reward.py:test_reward_breakdown_has_keys_and_total", + "type": "contains" + }, + { + "source": "tests/test_reward.py", + "target": "tests/test_reward.py:test_deferring_critical_ev_penalized", + "type": "contains" + }, + { + "source": "tests/test_reward.py", + "target": "tests/test_reward.py:test_invalid_station_routes_penalized", + "type": "contains" + }, + { + "source": "tests/test_reward.py", + "target": "tests/test_reward.py:test_split_role_rewards_exception_handling", + "type": "contains" + }, + { + "source": "tests/test_env_determinism.py", + "target": "tests/test_env_determinism.py:test_reset_state_identical_two_cores_same_seed", + "type": "contains" + }, + { + "source": "tests/test_env_determinism.py", + "target": "tests/test_env_determinism.py:test_step_sequence_identical_two_cores_same_actions", + "type": "contains" + }, + { + "source": "tests/test_env_determinism.py", + "target": "tests/test_env_determinism.py:test_ev_grid_action_rejects_malformed_payload", + "type": "contains" + }, + { + "source": "tests/test_env_determinism.py", + "target": "tests/test_env_determinism.py:test_route_action_requires_station", + "type": "contains" + }, + { + "source": "tests/test_demo_api.py", + "target": "tests/test_demo_api.py:test_demo_new_and_step_roundtrip", + "type": "contains" + }, + { + "source": "tests/test_demo_api.py", + "target": "tests/test_demo_api.py:test_demo_spawn_vehicle_route_event", + "type": "contains" + }, + { + "source": "tests/test_demo_api.py", + "target": "tests/test_demo_api.py:test_demo_step_forced_action_validation_422", + "type": "contains" + }, + { + "source": "tests/test_demo_api.py", + "target": "tests/test_demo_api.py:test_health_shape", + "type": "contains" + }, + { + "source": "tests/test_demo_api.py", + "target": "tests/test_demo_api.py:test_demo_sessions_ttl_eviction", + "type": "contains" + }, + { + "source": "tests/test_demo_api.py", + "target": "tests/test_demo_api.py:test_ma_new_and_step_roundtrip", + "type": "contains" + }, + { + "source": "tests/test_fair_eval_mcnemar.py", + "target": "tests/test_fair_eval_mcnemar.py:test_mcnemar_no_discordant_is_neutral", + "type": "contains" + }, + { + "source": "tests/test_fair_eval_mcnemar.py", + "target": "tests/test_fair_eval_mcnemar.py:test_mcnemar_strong_asymmetry_low_p", + "type": "contains" + }, + { + "source": "tests/test_fair_eval_mcnemar.py", + "target": "tests/test_fair_eval_mcnemar.py:test_paired_mcnemar_analysis_shape", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:_binom_two_sided_exact_p", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:mcnemar_discordant", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:paired_mcnemar_analysis", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:wilson_interval", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:_binary_keys", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:analyze_per_episode", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:_paired_improvement_counts", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:plot_fair_eval", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:main", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:pmf", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:pair", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:rate", + "type": "contains" + }, + { + "source": "training/fair_eval.py", + "target": "training/fair_eval.py:errs", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:_boxplot_compat", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:_per_episode_rows", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_kpi_bars", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_episode_trajectories", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_delta_histograms", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_reward_breakdown", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_boxplots", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_oracle_win_rates", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_paired_scatter", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_binary_timeline", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_fair_eval_rates", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_mcnemar_summary", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:plot_dashboard_grid", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:main", + "type": "contains" + }, + { + "source": "training/make_plots.py", + "target": "training/make_plots.py:rate", + "type": "contains" + }, + { + "source": "training/evaluate.py", + "target": "training/evaluate.py:EpisodeMetrics", + "type": "contains" + }, + { + "source": "training/evaluate.py", + "target": "training/evaluate.py:_episode_metrics_to_json", + "type": "contains" + }, + { + "source": "training/evaluate.py", + "target": "training/evaluate.py:run_episode", + "type": "contains" + }, + { + "source": "training/evaluate.py", + "target": "training/evaluate.py:summarize", + "type": "contains" + }, + { + "source": "training/evaluate.py", + "target": "training/evaluate.py:summarize_reward_breakdown", + "type": "contains" + }, + { + "source": "training/evaluate.py", + "target": "training/evaluate.py:main", + "type": "contains" + }, + { + "source": "tools/docs_sync.py", + "target": "tools/docs_sync.py:sync_docs", + "type": "contains" + }, + { + "source": "tools/fetch_bangalore_roads_overpass.py", + "target": "tools/fetch_bangalore_roads_overpass.py:_chunk", + "type": "contains" + }, + { + "source": "tools/fetch_bangalore_roads_overpass.py", + "target": "tools/fetch_bangalore_roads_overpass.py:_overpass_query", + "type": "contains" + }, + { + "source": "tools/fetch_bangalore_roads_overpass.py", + "target": "tools/fetch_bangalore_roads_overpass.py:_tile_bbox", + "type": "contains" + }, + { + "source": "tools/fetch_bangalore_roads_overpass.py", + "target": "tools/fetch_bangalore_roads_overpass.py:_http_post", + "type": "contains" + }, + { + "source": "tools/fetch_bangalore_roads_overpass.py", + "target": "tools/fetch_bangalore_roads_overpass.py:_to_geojson", + "type": "contains" + }, + { + "source": "tools/fetch_bangalore_roads_overpass.py", + "target": "tools/fetch_bangalore_roads_overpass.py:main", + "type": "contains" + }, + { + "source": "tools/export_grpo_tensorboard_plots.py", + "target": "tools/export_grpo_tensorboard_plots.py:_pick_tags", + "type": "contains" + }, + { + "source": "tools/export_grpo_tensorboard_plots.py", + "target": "tools/export_grpo_tensorboard_plots.py:main", + "type": "contains" + }, + { + "source": "tools/export_grpo_tensorboard_plots.py", + "target": "tools/export_grpo_tensorboard_plots.py:plot_tag", + "type": "contains" + }, + { + "source": "tools/build_roads_render.py", + "target": "tools/build_roads_render.py:main", + "type": "contains" + }, + { + "source": "tools/sync_space_to_hub.py", + "target": "tools/sync_space_to_hub.py:main", + "type": "contains" + }, + { + "source": "tools/write_eval_snapshot.py", + "target": "tools/write_eval_snapshot.py:main", + "type": "contains" + }, + { + "source": "tools/generate_knowledge_graph.py", + "target": "tools/generate_knowledge_graph.py:generate_graph", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:run_cmd", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:get_git_stats", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:get_leaderboard", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:get_documentation_health", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:fetch_github_stats", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:run_pytest_cov", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:run_radon", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:run_bandit", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:run_ruff", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:calculate_health_scores", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:generate_ai_insights", + "type": "contains" + }, + { + "source": "tools/generate_health_dashboard.py", + "target": "tools/generate_health_dashboard.py:main", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:haversine_m", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:_encode_signed", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:encode_polyline_latlng", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:speed_kmh", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:Node", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:snap", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:_coords_latlng_from_geojson_line", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:parse_args", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:build_adjacency", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:contract_edges", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:filter_largest_component", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:main", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:add_neighbor", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:get_node", + "type": "contains" + }, + { + "source": "tools/build_road_graph.py", + "target": "tools/build_road_graph.py:flush", + "type": "contains" + }, + { + "source": "tools/road_reward_smoke.py", + "target": "tools/road_reward_smoke.py:main", + "type": "contains" + }, + { + "source": "tools/road_reward_smoke.py", + "target": "tools/road_reward_smoke.py:parse", + "type": "contains" + }, + { + "source": "tools/road_reward_smoke.py", + "target": "tools/road_reward_smoke.py:reward", + "type": "contains" + }, + { + "source": "tools/fetch_osm_roads.py", + "target": "tools/fetch_osm_roads.py:BBox", + "type": "contains" + }, + { + "source": "tools/fetch_osm_roads.py", + "target": "tools/fetch_osm_roads.py:_fetch_overpass", + "type": "contains" + }, + { + "source": "tools/fetch_osm_roads.py", + "target": "tools/fetch_osm_roads.py:_simplify_line", + "type": "contains" + }, + { + "source": "tools/fetch_osm_roads.py", + "target": "tools/fetch_osm_roads.py:_to_feature_collection", + "type": "contains" + }, + { + "source": "tools/fetch_osm_roads.py", + "target": "tools/fetch_osm_roads.py:build_query", + "type": "contains" + }, + { + "source": "tools/fetch_osm_roads.py", + "target": "tools/fetch_osm_roads.py:main", + "type": "contains" + }, + { + "source": "tools/prune_osm_geojson.py", + "target": "tools/prune_osm_geojson.py:_pad_bbox", + "type": "contains" + }, + { + "source": "tools/prune_osm_geojson.py", + "target": "tools/prune_osm_geojson.py:_line_intersects_bbox", + "type": "contains" + }, + { + "source": "tools/prune_osm_geojson.py", + "target": "tools/prune_osm_geojson.py:_simplify_uniform", + "type": "contains" + }, + { + "source": "tools/prune_osm_geojson.py", + "target": "tools/prune_osm_geojson.py:main", + "type": "contains" + } + ] +} \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..4cfea8b --- /dev/null +++ b/docs/index.md @@ -0,0 +1,68 @@ +# EV Grid Oracle Documentation + +## Auto-generated API Index + +- [test_script.py](../test_script.py) +- [viz/__init__.py](../viz/__init__.py) +- [viz/record_two_phase.py](../viz/record_two_phase.py) +- [viz/record.py](../viz/record.py) +- [viz/gradio_demo.py](../viz/gradio_demo.py) +- [viz/city_map.py](../viz/city_map.py) +- [ev_grid_oracle/road_env.py](../ev_grid_oracle/road_env.py) +- [ev_grid_oracle/__init__.py](../ev_grid_oracle/__init__.py) +- [ev_grid_oracle/road_models.py](../ev_grid_oracle/road_models.py) +- [ev_grid_oracle/personas.py](../ev_grid_oracle/personas.py) +- [ev_grid_oracle/models.py](../ev_grid_oracle/models.py) +- [ev_grid_oracle/parsing.py](../ev_grid_oracle/parsing.py) +- [ev_grid_oracle/demand_sim.py](../ev_grid_oracle/demand_sim.py) +- [ev_grid_oracle/reward_hack.py](../ev_grid_oracle/reward_hack.py) +- [ev_grid_oracle/env.py](../ev_grid_oracle/env.py) +- [ev_grid_oracle/policies.py](../ev_grid_oracle/policies.py) +- [ev_grid_oracle/multi_agent.py](../ev_grid_oracle/multi_agent.py) +- [ev_grid_oracle/grid_sim.py](../ev_grid_oracle/grid_sim.py) +- [ev_grid_oracle/reward.py](../ev_grid_oracle/reward.py) +- [ev_grid_oracle/oracle_agent.py](../ev_grid_oracle/oracle_agent.py) +- [ev_grid_oracle/bescom_feed.py](../ev_grid_oracle/bescom_feed.py) +- [ev_grid_oracle/scenarios.py](../ev_grid_oracle/scenarios.py) +- [ev_grid_oracle/traffic.py](../ev_grid_oracle/traffic.py) +- [ev_grid_oracle/world_model_verifier.py](../ev_grid_oracle/world_model_verifier.py) +- [ev_grid_oracle/city_graph.py](../ev_grid_oracle/city_graph.py) +- [server/role_metrics.py](../server/role_metrics.py) +- [server/__init__.py](../server/__init__.py) +- [server/app.py](../server/app.py) +- [server/ev_grid_road_environment.py](../server/ev_grid_road_environment.py) +- [server/road_router.py](../server/road_router.py) +- [server/ev_grid_environment.py](../server/ev_grid_environment.py) +- [.cursor/skills/generate-openenv-env/assets/openenv_env_template/__init__.py](../.cursor/skills/generate-openenv-env/assets/openenv_env_template/__init__.py) +- [.cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py](../.cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py) +- [.cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py](../.cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py) +- [.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__init__.py](../.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__init__.py) +- [.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py](../.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py) +- [.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py](../.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py) +- [tests/__init__.py](../tests/__init__.py) +- [tests/test_models_and_graph.py](../tests/test_models_and_graph.py) +- [tests/test_policies_collapse.py](../tests/test_policies_collapse.py) +- [tests/test_evaluate_paired.py](../tests/test_evaluate_paired.py) +- [tests/test_world_model_verifier.py](../tests/test_world_model_verifier.py) +- [tests/test_parsing.py](../tests/test_parsing.py) +- [tests/test_reward.py](../tests/test_reward.py) +- [tests/test_env_determinism.py](../tests/test_env_determinism.py) +- [tests/test_demo_api.py](../tests/test_demo_api.py) +- [tests/test_fair_eval_mcnemar.py](../tests/test_fair_eval_mcnemar.py) +- [training/__init__.py](../training/__init__.py) +- [training/fair_eval.py](../training/fair_eval.py) +- [training/make_plots.py](../training/make_plots.py) +- [training/evaluate.py](../training/evaluate.py) +- [tools/docs_sync.py](../tools/docs_sync.py) +- [tools/fetch_bangalore_roads_overpass.py](../tools/fetch_bangalore_roads_overpass.py) +- [tools/__init__.py](../tools/__init__.py) +- [tools/export_grpo_tensorboard_plots.py](../tools/export_grpo_tensorboard_plots.py) +- [tools/build_roads_render.py](../tools/build_roads_render.py) +- [tools/sync_space_to_hub.py](../tools/sync_space_to_hub.py) +- [tools/write_eval_snapshot.py](../tools/write_eval_snapshot.py) +- [tools/generate_knowledge_graph.py](../tools/generate_knowledge_graph.py) +- [tools/generate_health_dashboard.py](../tools/generate_health_dashboard.py) +- [tools/build_road_graph.py](../tools/build_road_graph.py) +- [tools/road_reward_smoke.py](../tools/road_reward_smoke.py) +- [tools/fetch_osm_roads.py](../tools/fetch_osm_roads.py) +- [tools/prune_osm_geojson.py](../tools/prune_osm_geojson.py)