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.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..f319ebe --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,23 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: ["bug", "triage"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: input + id: version + attributes: + label: Version + description: What version of our software are you running? + validations: + required: true + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..09f08cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,12 @@ +name: Feature Request +description: Suggest an idea for this project +title: "[Feature]: " +labels: ["enhancement", "triage"] +body: + - type: textarea + id: feature-description + attributes: + label: Description + description: A clear and concise description of what the feature is. + validations: + required: true diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..61640d6 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,17 @@ +frontend: + - changed-files: + - any-glob-to-any-file: 'web/**/*' +backend: + - changed-files: + - any-glob-to-any-file: 'server/**/*' + - any-glob-to-any-file: 'ev_grid_oracle/**/*' +docs: + - changed-files: + - any-glob-to-any-file: '**/*.md' + - any-glob-to-any-file: 'docs/**/*' +tests: + - changed-files: + - any-glob-to-any-file: 'tests/**/*' +ci: + - changed-files: + - any-glob-to-any-file: '.github/**/*' diff --git a/.github/workflows/ai-insights.yml b/.github/workflows/ai-insights.yml deleted file mode 100644 index 87f31e0..0000000 --- a/.github/workflows/ai-insights.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: AI PR Agent - -on: - pull_request: - types: [opened, synchronize, reopened] - issue_comment: - types: [created] - -jobs: - pr_agent: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - contents: write - name: Run PR Agent - if: ${{ github.event.sender.type != 'Bot' }} - steps: - - name: PR Agent action step - id: pragent - uses: Codium-ai/pr-agent@main - env: - OPENAI_KEY: ${{ secrets.OPENAI_API_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - github_action_config.auto_review: "true" - github_action_config.auto_describe: "true" - github_action_config.auto_improve: "true" diff --git a/.github/workflows/ai-review.yml b/.github/workflows/ai-review.yml new file mode 100644 index 0000000..5cdab15 --- /dev/null +++ b/.github/workflows/ai-review.yml @@ -0,0 +1,21 @@ +name: AI PR Agent +on: + pull_request: + types: [opened, synchronize, reopened] + pull_request_review_comment: + types: [created] + +permissions: + contents: read + pull-requests: write + +jobs: + review: + runs-on: ubuntu-latest + if: ${{ github.event.sender.type != 'Bot' }} + steps: + - name: CodeRabbit AI PR Reviewer + uses: coderabbitai/openai-pr-reviewer@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b1ba3c7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,28 @@ +name: CI +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + 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: pip install uv + + - name: Install dependencies + run: uv pip install --system -e ".[dev,demo]" + + - name: Run Python Tests + run: uv run pytest tests/ diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 0000000..1cb7f26 --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,20 @@ +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 repository! Thank you for opening your first issue. A maintainer or our AI system will be with you shortly." + pr-message: "Welcome to the repository! Thank you for opening your first pull request. Our CI and AI reviewer will take a look." diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..c5af6b6 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,14 @@ +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 diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..2bc04af --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,29 @@ +name: GitHub Pages +on: + push: + branches: [ "main" ] + +permissions: + contents: read + pages: write + id-token: write + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + lfs: true + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: './docs' + - 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..19702c2 --- /dev/null +++ b/.github/workflows/repo-maintenance.yml @@ -0,0 +1,68 @@ +name: Repository Maintenance +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +permissions: + contents: write + +jobs: + maintain: + if: ${{ github.event_name == 'push' || 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 }} + fetch-depth: 0 + lfs: true + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + pip install uv + uv pip install --system -e ".[dev,demo]" + uv pip install --system cyclonedx-bom cyclonedx-py pydeps + sudo apt-get update && sudo apt-get install -y xdg-utils graphviz + + - name: Autofix Code Quality + run: | + uv run --with ruff ruff check --fix . || true + uv run --with ruff ruff format . || true + + - name: Generate Architecture Diagrams + run: | + mkdir -p docs/architecture + pydeps ev_grid_oracle --output docs/architecture/ev_grid_oracle.svg --no-show || true + + - name: Generate Knowledge Graph + run: | + mkdir -p docs/knowledge + python tools/generate_knowledge_graph.py + + + - name: Docs Sync + run: | + python tools/docs_sync.py + mkdir -p docs + + + - name: Generate SBOM + run: | + cyclonedx-py environment -o bom.json || true + + - name: Commit and Push Changes + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add . + git commit -m "chore: autonomous repository maintenance [skip ci]" || echo "No changes to commit" + # Avoid using the actual push command in testing script to not block session + # We'll write the script that GH Actions runs + git push origin ${{ github.head_ref || github.ref }} || true diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..1760360 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,19 @@ +name: Mark stale issues and pull requests +on: + schedule: + - cron: '30 1 * * *' + +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.' + stale-pr-message: 'This PR is stale because it has been open 30 days with no activity.' + days-before-stale: 30 + days-before-close: 7 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c53668b --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,13 @@ +# 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. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ed8d890 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,13 @@ +# Contributing + +Thank you for investing your time in contributing to our project! + +Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. + +## Getting Started + +1. Fork the repository +2. Create your feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add some amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request diff --git a/bom.json b/bom.json new file mode 100644 index 0000000..8328691 --- /dev/null +++ b/bom.json @@ -0,0 +1,7505 @@ +{ + "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.5", + "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.5", + "type": "library", + "version": "1.5.5" + }, + { + "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-py==1.0.1", + "description": "Alias for package 'cyclonedx-bom'", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/#package_aliases/cyclonedx-py" + } + ], + "name": "cyclonedx-py", + "purl": "pkg:pypi/cyclonedx-py@1.0.1", + "type": "library", + "version": "1.0.1" + }, + { + "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.19.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.19.0", + "type": "library", + "version": "4.19.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.1", + "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.1", + "type": "library", + "version": "0.138.1" + }, + { + "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.15.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.15.0", + "type": "library", + "version": "0.15.0" + }, + { + "bom-ref": "joserfc==1.7.1", + "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.1", + "type": "library", + "version": "1.7.1" + }, + { + "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.5.9", + "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.5.9", + "type": "library", + "version": "2026.5.9" + }, + { + "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.20.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.20.0", + "type": "library", + "version": "2.20.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": "uv==0.11.25", + "description": "An extremely fast Python package and project manager, written in Rust.", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://docs.astral.sh/uv" + }, + { + "comment": "from packaging metadata Project-URL: Discord", + "type": "other", + "url": "https://discord.gg/astral-sh" + }, + { + "comment": "from packaging metadata Project-URL: Releases", + "type": "other", + "url": "https://github.com/astral-sh/uv/releases" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/astral-sh/uv/blob/main/CHANGELOG.md" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/astral-sh/uv" + }, + { + "comment": "from packaging metadata: Home-page", + "type": "website", + "url": "https://pypi.org/project/uv/" + } + ], + "licenses": [ + { + "acknowledgement": "declared", + "expression": "MIT OR Apache-2.0" + } + ], + "name": "uv", + "purl": "pkg:pypi/uv@0.11.25", + "type": "library", + "version": "0.11.25" + }, + { + "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.1" + ], + "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.20.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.5", + "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.5" + }, + { + "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": [ + "cyclonedx-bom==7.3.0" + ], + "ref": "cyclonedx-py==1.0.1" + }, + { + "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.19.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.1", + "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.20.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.1" + }, + { + "dependsOn": [ + "Authlib==1.7.2", + "PyJWT==2.13.0", + "PyYAML==6.0.3", + "cyclopts==4.19.0", + "exceptiongroup==1.3.1", + "griffelib==2.1.0", + "httpx==0.28.1", + "joserfc==1.7.1", + "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.1", + "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.1", + "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.15.0" + }, + { + "dependsOn": [ + "cryptography==49.0.0" + ], + "ref": "joserfc==1.7.1" + }, + { + "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.5.9" + ], + "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.15.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.1", + "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.5.9" + }, + { + "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.1", + "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.20.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.1", + "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.5.9", + "rich==15.0.0", + "safetensors==0.8.0", + "starlette==1.3.1", + "tensorboard==2.20.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" + }, + { + "ref": "uv==0.11.25" + }, + { + "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-28T06:44:53.109974+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:c7a6b611-a5c8-4e1f-ad7b-28711e2d7ee1", + "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/docs/README.md b/docs/README.md new file mode 100644 index 0000000..0df3dc9 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,2 @@ +# Repository Documentation +This file is automatically synchronized. diff --git a/docs/knowledge/graph.json b/docs/knowledge/graph.json new file mode 100644 index 0000000..12ead90 --- /dev/null +++ b/docs/knowledge/graph.json @@ -0,0 +1,1640 @@ +{ + "nodes": [ + { + "id": "ChargerType", + "type": "class", + "file": "./test_script.py" + }, + { + "id": "StationState", + "type": "class", + "file": "./test_script.py" + }, + { + "id": "_step_action", + "type": "function", + "file": "./viz/record_two_phase.py" + }, + { + "id": "record_phase", + "type": "function", + "file": "./viz/record_two_phase.py" + }, + { + "id": "main", + "type": "function", + "file": "./viz/record_two_phase.py" + }, + { + "id": "record", + "type": "function", + "file": "./viz/record.py" + }, + { + "id": "main", + "type": "function", + "file": "./viz/record.py" + }, + { + "id": "_norm", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_station_color", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "render_map", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "Session", + "type": "class", + "file": "./viz/gradio_demo.py" + }, + { + "id": "new_session", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "step_once", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "compute_kpis", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "xy", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_start", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_step", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_run60", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_start_and_maybe_autoplay", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_kpis", + "type": "function", + "file": "./viz/gradio_demo.py" + }, + { + "id": "_station_color", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "_norm", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "RenderConfig", + "type": "class", + "file": "./viz/city_map.py" + }, + { + "id": "CityMapRenderer", + "type": "class", + "file": "./viz/city_map.py" + }, + { + "id": "run_live", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "__init__", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "xy", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "draw_arrow", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "render", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "_draw_background", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "_draw_edges", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "_draw_glow", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "_draw_animated_route", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "blit_line", + "type": "function", + "file": "./viz/city_map.py" + }, + { + "id": "RoadCore", + "type": "class", + "file": "./ev_grid_oracle/road_env.py" + }, + { + "id": "reset", + "type": "function", + "file": "./ev_grid_oracle/road_env.py" + }, + { + "id": "step", + "type": "function", + "file": "./ev_grid_oracle/road_env.py" + }, + { + "id": "_obs", + "type": "function", + "file": "./ev_grid_oracle/road_env.py" + }, + { + "id": "RoadAction", + "type": "class", + "file": "./ev_grid_oracle/road_models.py" + }, + { + "id": "RoadState", + "type": "class", + "file": "./ev_grid_oracle/road_models.py" + }, + { + "id": "RoadObservation", + "type": "class", + "file": "./ev_grid_oracle/road_models.py" + }, + { + "id": "_non_trivial", + "type": "function", + "file": "./ev_grid_oracle/road_models.py" + }, + { + "id": "PersonaParams", + "type": "class", + "file": "./ev_grid_oracle/personas.py" + }, + { + "id": "choose_persona", + "type": "function", + "file": "./ev_grid_oracle/personas.py" + }, + { + "id": "ChargerType", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "ChargeRate", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "ActionType", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "DayType", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "PeakRisk", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "StationState", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "EVRequest", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "BESCOMFeederState", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "GridState", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "EVGridAction", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "EVGridObservation", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "NegotiationMessage", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "GridDirective", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "MultiAgentStepRequest", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "MultiAgentStepResponse", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "SimTopStation", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "SimulationPrediction", + "type": "class", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "to_jsonable", + "type": "function", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "_occupied_le_total", + "type": "function", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "_check_consistency", + "type": "function", + "file": "./ev_grid_oracle/models.py" + }, + { + "id": "parse_simulation", + "type": "function", + "file": "./ev_grid_oracle/parsing.py" + }, + { + "id": "parse_action", + "type": "function", + "file": "./ev_grid_oracle/parsing.py" + }, + { + "id": "parse_simulation_and_action", + "type": "function", + "file": "./ev_grid_oracle/parsing.py" + }, + { + "id": "DemandParams", + "type": "class", + "file": "./ev_grid_oracle/demand_sim.py" + }, + { + "id": "_gaussian_bump", + "type": "function", + "file": "./ev_grid_oracle/demand_sim.py" + }, + { + "id": "expected_arrivals_per_step", + "type": "function", + "file": "./ev_grid_oracle/demand_sim.py" + }, + { + "id": "sample_arrivals_per_step", + "type": "function", + "file": "./ev_grid_oracle/demand_sim.py" + }, + { + "id": "RewardHackDetector", + "type": "class", + "file": "./ev_grid_oracle/reward_hack.py" + }, + { + "id": "reset", + "type": "function", + "file": "./ev_grid_oracle/reward_hack.py" + }, + { + "id": "step", + "type": "function", + "file": "./ev_grid_oracle/reward_hack.py" + }, + { + "id": "add", + "type": "function", + "file": "./ev_grid_oracle/reward_hack.py" + }, + { + "id": "EVGridCore", + "type": "class", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_peak_risk", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_make_ev", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_apply_action", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_drain_queues_and_charging", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_update_station_waits", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_build_prompt", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "reset", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "step", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "_apply_tariff_mult", + "type": "function", + "file": "./ev_grid_oracle/env.py" + }, + { + "id": "baseline_policy", + "type": "function", + "file": "./ev_grid_oracle/policies.py" + }, + { + "id": "always_defer_policy", + "type": "function", + "file": "./ev_grid_oracle/policies.py" + }, + { + "id": "always_load_shift_policy", + "type": "function", + "file": "./ev_grid_oracle/policies.py" + }, + { + "id": "nearest_travel_only_policy", + "type": "function", + "file": "./ev_grid_oracle/policies.py" + }, + { + "id": "MultiAgentSession", + "type": "class", + "file": "./ev_grid_oracle/multi_agent.py" + }, + { + "id": "step", + "type": "function", + "file": "./ev_grid_oracle/multi_agent.py" + }, + { + "id": "snapshot", + "type": "function", + "file": "./ev_grid_oracle/multi_agent.py" + }, + { + "id": "GridParams", + "type": "class", + "file": "./ev_grid_oracle/grid_sim.py" + }, + { + "id": "_clamp01", + "type": "function", + "file": "./ev_grid_oracle/grid_sim.py" + }, + { + "id": "baseline_grid_load", + "type": "function", + "file": "./ev_grid_oracle/grid_sim.py" + }, + { + "id": "renewable_pct", + "type": "function", + "file": "./ev_grid_oracle/grid_sim.py" + }, + { + "id": "update_grid_load", + "type": "function", + "file": "./ev_grid_oracle/grid_sim.py" + }, + { + "id": "RewardWeights", + "type": "class", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "_haversine_km", + "type": "function", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "_graph_route_km", + "type": "function", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "compute_reward", + "type": "function", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "split_role_rewards", + "type": "function", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "add_flag", + "type": "function", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "f", + "type": "function", + "file": "./ev_grid_oracle/reward.py" + }, + { + "id": "OracleRuntime", + "type": "class", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "OracleAgent", + "type": "class", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "load", + "type": "function", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "_ensure_loaded", + "type": "function", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "act", + "type": "function", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "act_with_text", + "type": "function", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "is_active", + "type": "function", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "_generate", + "type": "function", + "file": "./ev_grid_oracle/oracle_agent.py" + }, + { + "id": "BESCOMFeedAPI", + "type": "class", + "file": "./ev_grid_oracle/bescom_feed.py" + }, + { + "id": "snapshot", + "type": "function", + "file": "./ev_grid_oracle/bescom_feed.py" + }, + { + "id": "_stable_seed", + "type": "function", + "file": "./ev_grid_oracle/bescom_feed.py" + }, + { + "id": "_zone_for_station", + "type": "function", + "file": "./ev_grid_oracle/bescom_feed.py" + }, + { + "id": "ScenarioEvent", + "type": "class", + "file": "./ev_grid_oracle/scenarios.py" + }, + { + "id": "ScenarioModifiers", + "type": "class", + "file": "./ev_grid_oracle/scenarios.py" + }, + { + "id": "scenario_schedule", + "type": "function", + "file": "./ev_grid_oracle/scenarios.py" + }, + { + "id": "apply_scenario_events", + "type": "function", + "file": "./ev_grid_oracle/scenarios.py" + }, + { + "id": "_clamp", + "type": "function", + "file": "./ev_grid_oracle/traffic.py" + }, + { + "id": "_stable_u01", + "type": "function", + "file": "./ev_grid_oracle/traffic.py" + }, + { + "id": "TrafficModel", + "type": "class", + "file": "./ev_grid_oracle/traffic.py" + }, + { + "id": "multiplier_for_edge", + "type": "function", + "file": "./ev_grid_oracle/traffic.py" + }, + { + "id": "hotspot", + "type": "function", + "file": "./ev_grid_oracle/traffic.py" + }, + { + "id": "PredictionScore", + "type": "class", + "file": "./ev_grid_oracle/world_model_verifier.py" + }, + { + "id": "_top3", + "type": "function", + "file": "./ev_grid_oracle/world_model_verifier.py" + }, + { + "id": "rollout_deterministic_5ticks", + "type": "function", + "file": "./ev_grid_oracle/world_model_verifier.py" + }, + { + "id": "score_prediction", + "type": "function", + "file": "./ev_grid_oracle/world_model_verifier.py" + }, + { + "id": "StationSpec", + "type": "class", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "get_station_by_id", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "get_station_by_slug", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "haversine_km", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "_edge_minutes", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "_add_chain_edges", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "_add_dense_within_cluster", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "build_city_graph", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "travel_time_minutes", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "nearest_stations_by_geo", + "type": "function", + "file": "./ev_grid_oracle/city_graph.py" + }, + { + "id": "compute_role_kpis", + "type": "function", + "file": "./server/role_metrics.py" + }, + { + "id": "compute_role_reward_breakdown", + "type": "function", + "file": "./server/role_metrics.py" + }, + { + "id": "_peak_risk_score", + "type": "function", + "file": "./server/role_metrics.py" + }, + { + "id": "summarize_action", + "type": "function", + "file": "./server/role_metrics.py" + }, + { + "id": "part", + "type": "function", + "file": "./server/role_metrics.py" + }, + { + "id": "_request_id", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_oracle_skip_llm_env", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_rate_limit", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_demo_oracle_act_with_guard", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "root", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "healthz", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_osm_route_polyline", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_graph_route_polyline", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_spawn_road_point_away_from_stations", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_demo_session_gc", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_demo_session_get", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "DemoNewRequest", + "type": "class", + "file": "./server/app.py" + }, + { + "id": "_ma_gc", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_ma_get", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "MANewRequest", + "type": "class", + "file": "./server/app.py" + }, + { + "id": "ma_new", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_grid_policy", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "MAAutoStepRequest", + "type": "class", + "file": "./server/app.py" + }, + { + "id": "ma_auto_step", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "ma_state", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "ma_step", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_obs_to_jsonable", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "_station_nodes", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "demo_new", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "demo_state", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "DemoSpawnVehicleRequest", + "type": "class", + "file": "./server/app.py" + }, + { + "id": "demo_spawn_vehicle", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "demo_step", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "main", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "run", + "type": "function", + "file": "./server/app.py" + }, + { + "id": "EVGridRoadEnvironment", + "type": "class", + "file": "./server/ev_grid_road_environment.py" + }, + { + "id": "__init__", + "type": "function", + "file": "./server/ev_grid_road_environment.py" + }, + { + "id": "reset", + "type": "function", + "file": "./server/ev_grid_road_environment.py" + }, + { + "id": "step", + "type": "function", + "file": "./server/ev_grid_road_environment.py" + }, + { + "id": "state", + "type": "function", + "file": "./server/ev_grid_road_environment.py" + }, + { + "id": "haversine_m", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "decode_polyline_latlng", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "RoadRouter", + "type": "class", + "file": "./server/road_router.py" + }, + { + "id": "get_router", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "_next", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "load", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "nearest_node", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "route_polyline", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "_w", + "type": "function", + "file": "./server/road_router.py" + }, + { + "id": "EVGridEnvironment", + "type": "class", + "file": "./server/ev_grid_environment.py" + }, + { + "id": "__init__", + "type": "function", + "file": "./server/ev_grid_environment.py" + }, + { + "id": "reset", + "type": "function", + "file": "./server/ev_grid_environment.py" + }, + { + "id": "step", + "type": "function", + "file": "./server/ev_grid_environment.py" + }, + { + "id": "state", + "type": "function", + "file": "./server/ev_grid_environment.py" + }, + { + "id": "__ENV_CLASS_NAME__Action", + "type": "class", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py" + }, + { + "id": "__ENV_CLASS_NAME__Observation", + "type": "class", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/models.py" + }, + { + "id": "__ENV_CLASS_NAME__Env", + "type": "class", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py" + }, + { + "id": "_step_payload", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py" + }, + { + "id": "_parse_result", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py" + }, + { + "id": "_parse_state", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/client.py" + }, + { + "id": "main", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/app.py" + }, + { + "id": "__ENV_CLASS_NAME__Environment", + "type": "class", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py" + }, + { + "id": "__init__", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py" + }, + { + "id": "reset", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py" + }, + { + "id": "step", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py" + }, + { + "id": "state", + "type": "function", + "file": "./.cursor/skills/generate-openenv-env/assets/openenv_env_template/server/__ENV_NAME___environment.py" + }, + { + "id": "test_city_graph_connected_and_25_stations", + "type": "function", + "file": "./tests/test_models_and_graph.py" + }, + { + "id": "test_action_route_requires_station_id_and_zero_defer", + "type": "function", + "file": "./tests/test_models_and_graph.py" + }, + { + "id": "test_action_defer_requires_positive_defer_minutes", + "type": "function", + "file": "./tests/test_models_and_graph.py" + }, + { + "id": "test_time_advances_with_5min_steps", + "type": "function", + "file": "./tests/test_models_and_graph.py" + }, + { + "id": "_run_policy", + "type": "function", + "file": "./tests/test_policies_collapse.py" + }, + { + "id": "test_collapse_policies_do_not_crash", + "type": "function", + "file": "./tests/test_policies_collapse.py" + }, + { + "id": "test_collapse_policies_return_valid_actions_when_pending", + "type": "function", + "file": "./tests/test_policies_collapse.py" + }, + { + "id": "_chdir_repo_root", + "type": "function", + "file": "./tests/test_evaluate_paired.py" + }, + { + "id": "test_baseline_rollout_identical_for_same_seed_and_scenario", + "type": "function", + "file": "./tests/test_evaluate_paired.py" + }, + { + "id": "test_oracle_matches_baseline_when_skip_llm", + "type": "function", + "file": "./tests/test_evaluate_paired.py" + }, + { + "id": "test_evaluate_cli_paired_json", + "type": "function", + "file": "./tests/test_evaluate_paired.py" + }, + { + "id": "test_fair_eval_cli", + "type": "function", + "file": "./tests/test_evaluate_paired.py" + }, + { + "id": "test_rollout_deterministic_is_stable", + "type": "function", + "file": "./tests/test_world_model_verifier.py" + }, + { + "id": "test_prediction_score_higher_when_close", + "type": "function", + "file": "./tests/test_world_model_verifier.py" + }, + { + "id": "test_parse_simulation_valid", + "type": "function", + "file": "./tests/test_parsing.py" + }, + { + "id": "test_parse_simulation_missing_match", + "type": "function", + "file": "./tests/test_parsing.py" + }, + { + "id": "test_parse_simulation_exception_handling", + "type": "function", + "file": "./tests/test_parsing.py" + }, + { + "id": "test_reward_breakdown_has_keys_and_total", + "type": "function", + "file": "./tests/test_reward.py" + }, + { + "id": "test_deferring_critical_ev_penalized", + "type": "function", + "file": "./tests/test_reward.py" + }, + { + "id": "test_invalid_station_routes_penalized", + "type": "function", + "file": "./tests/test_reward.py" + }, + { + "id": "test_split_role_rewards_exception_handling", + "type": "function", + "file": "./tests/test_reward.py" + }, + { + "id": "test_reset_state_identical_two_cores_same_seed", + "type": "function", + "file": "./tests/test_env_determinism.py" + }, + { + "id": "test_step_sequence_identical_two_cores_same_actions", + "type": "function", + "file": "./tests/test_env_determinism.py" + }, + { + "id": "test_ev_grid_action_rejects_malformed_payload", + "type": "function", + "file": "./tests/test_env_determinism.py" + }, + { + "id": "test_route_action_requires_station", + "type": "function", + "file": "./tests/test_env_determinism.py" + }, + { + "id": "test_demo_new_and_step_roundtrip", + "type": "function", + "file": "./tests/test_demo_api.py" + }, + { + "id": "test_demo_spawn_vehicle_route_event", + "type": "function", + "file": "./tests/test_demo_api.py" + }, + { + "id": "test_demo_step_forced_action_validation_422", + "type": "function", + "file": "./tests/test_demo_api.py" + }, + { + "id": "test_health_shape", + "type": "function", + "file": "./tests/test_demo_api.py" + }, + { + "id": "test_demo_sessions_ttl_eviction", + "type": "function", + "file": "./tests/test_demo_api.py" + }, + { + "id": "test_ma_new_and_step_roundtrip", + "type": "function", + "file": "./tests/test_demo_api.py" + }, + { + "id": "test_mcnemar_no_discordant_is_neutral", + "type": "function", + "file": "./tests/test_fair_eval_mcnemar.py" + }, + { + "id": "test_mcnemar_strong_asymmetry_low_p", + "type": "function", + "file": "./tests/test_fair_eval_mcnemar.py" + }, + { + "id": "test_paired_mcnemar_analysis_shape", + "type": "function", + "file": "./tests/test_fair_eval_mcnemar.py" + }, + { + "id": "_binom_two_sided_exact_p", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "mcnemar_discordant", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "paired_mcnemar_analysis", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "wilson_interval", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "_binary_keys", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "analyze_per_episode", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "_paired_improvement_counts", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "plot_fair_eval", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "main", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "pmf", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "pair", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "rate", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "errs", + "type": "function", + "file": "./training/fair_eval.py" + }, + { + "id": "_boxplot_compat", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "_per_episode_rows", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_kpi_bars", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_episode_trajectories", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_delta_histograms", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_reward_breakdown", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_boxplots", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_oracle_win_rates", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_paired_scatter", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_binary_timeline", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_fair_eval_rates", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_mcnemar_summary", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "plot_dashboard_grid", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "main", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "rate", + "type": "function", + "file": "./training/make_plots.py" + }, + { + "id": "EpisodeMetrics", + "type": "class", + "file": "./training/evaluate.py" + }, + { + "id": "_episode_metrics_to_json", + "type": "function", + "file": "./training/evaluate.py" + }, + { + "id": "run_episode", + "type": "function", + "file": "./training/evaluate.py" + }, + { + "id": "summarize", + "type": "function", + "file": "./training/evaluate.py" + }, + { + "id": "summarize_reward_breakdown", + "type": "function", + "file": "./training/evaluate.py" + }, + { + "id": "main", + "type": "function", + "file": "./training/evaluate.py" + }, + { + "id": "sync_docs", + "type": "function", + "file": "./tools/docs_sync.py" + }, + { + "id": "_chunk", + "type": "function", + "file": "./tools/fetch_bangalore_roads_overpass.py" + }, + { + "id": "_overpass_query", + "type": "function", + "file": "./tools/fetch_bangalore_roads_overpass.py" + }, + { + "id": "_tile_bbox", + "type": "function", + "file": "./tools/fetch_bangalore_roads_overpass.py" + }, + { + "id": "_http_post", + "type": "function", + "file": "./tools/fetch_bangalore_roads_overpass.py" + }, + { + "id": "_to_geojson", + "type": "function", + "file": "./tools/fetch_bangalore_roads_overpass.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/fetch_bangalore_roads_overpass.py" + }, + { + "id": "_pick_tags", + "type": "function", + "file": "./tools/export_grpo_tensorboard_plots.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/export_grpo_tensorboard_plots.py" + }, + { + "id": "plot_tag", + "type": "function", + "file": "./tools/export_grpo_tensorboard_plots.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/build_roads_render.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/sync_space_to_hub.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/write_eval_snapshot.py" + }, + { + "id": "generate_knowledge_graph", + "type": "function", + "file": "./tools/generate_knowledge_graph.py" + }, + { + "id": "run_cmd", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "get_git_stats", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "get_leaderboard", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "get_documentation_health", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "fetch_github_stats", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "run_pytest_cov", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "run_radon", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "run_bandit", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "run_ruff", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "calculate_health_scores", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "generate_ai_insights", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/generate_health_dashboard.py" + }, + { + "id": "haversine_m", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "_encode_signed", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "encode_polyline_latlng", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "speed_kmh", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "Node", + "type": "class", + "file": "./tools/build_road_graph.py" + }, + { + "id": "snap", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "_coords_latlng_from_geojson_line", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "parse_args", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "build_adjacency", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "contract_edges", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "filter_largest_component", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "add_neighbor", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "get_node", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "flush", + "type": "function", + "file": "./tools/build_road_graph.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/road_reward_smoke.py" + }, + { + "id": "parse", + "type": "function", + "file": "./tools/road_reward_smoke.py" + }, + { + "id": "reward", + "type": "function", + "file": "./tools/road_reward_smoke.py" + }, + { + "id": "BBox", + "type": "class", + "file": "./tools/fetch_osm_roads.py" + }, + { + "id": "_fetch_overpass", + "type": "function", + "file": "./tools/fetch_osm_roads.py" + }, + { + "id": "_simplify_line", + "type": "function", + "file": "./tools/fetch_osm_roads.py" + }, + { + "id": "_to_feature_collection", + "type": "function", + "file": "./tools/fetch_osm_roads.py" + }, + { + "id": "build_query", + "type": "function", + "file": "./tools/fetch_osm_roads.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/fetch_osm_roads.py" + }, + { + "id": "_pad_bbox", + "type": "function", + "file": "./tools/prune_osm_geojson.py" + }, + { + "id": "_line_intersects_bbox", + "type": "function", + "file": "./tools/prune_osm_geojson.py" + }, + { + "id": "_simplify_uniform", + "type": "function", + "file": "./tools/prune_osm_geojson.py" + }, + { + "id": "main", + "type": "function", + "file": "./tools/prune_osm_geojson.py" + } + ], + "edges": [] +} \ No newline at end of file diff --git a/tools/docs_sync.py b/tools/docs_sync.py new file mode 100644 index 0000000..ff18f87 --- /dev/null +++ b/tools/docs_sync.py @@ -0,0 +1,13 @@ +import os + + +def sync_docs(): + # Simple example logic for docs sync + os.makedirs("docs", exist_ok=True) + with open("docs/README.md", "w") as f: + f.write("# Repository Documentation\n") + f.write("This file is automatically synchronized.\n") + + +if __name__ == "__main__": + sync_docs() diff --git a/tools/generate_knowledge_graph.py b/tools/generate_knowledge_graph.py new file mode 100644 index 0000000..5162de0 --- /dev/null +++ b/tools/generate_knowledge_graph.py @@ -0,0 +1,54 @@ +import os +import ast +import json +import logging +from typing import Dict, List + +logging.basicConfig(level=logging.INFO) + + +def generate_knowledge_graph(directory: str = ".") -> None: + graph: Dict[str, List[Dict[str, str]]] = {"nodes": [], "edges": []} + + # Simple extraction of classes and functions + for root, _, files in os.walk(directory): + if ( + "venv" in root + or ".venv" in root + or "node_modules" in root + or ".git" in root + ): + continue + for file in files: + if file.endswith(".py"): + filepath = os.path.join(root, file) + try: + with open(filepath, "r", encoding="utf-8") as f: + tree = ast.parse(f.read()) + for node in ast.walk(tree): + if isinstance(node, ast.ClassDef): + graph["nodes"].append( + { + "id": node.name, + "type": "class", + "file": filepath, + } + ) + elif isinstance(node, ast.FunctionDef): + graph["nodes"].append( + { + "id": node.name, + "type": "function", + "file": filepath, + } + ) + except Exception as e: + logging.warning(f"Failed to parse {filepath}: {e}") + + os.makedirs("docs/knowledge", exist_ok=True) + with open("docs/knowledge/graph.json", "w") as f: + json.dump(graph, f, indent=2) + + +if __name__ == "__main__": + generate_knowledge_graph()