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..5a76f40 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,24 @@ +name: Bug Report +description: File a bug report +title: "[Bug]: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: Tell us what you see! + value: "A bug happened!" + validations: + required: true + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..f62ec70 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,21 @@ +name: Feature Request +description: Suggest an idea for this project +title: "[Feature]: " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature request! + - type: textarea + id: feature-description + attributes: + label: Description + description: A clear and concise description of what you want. + validations: + required: true + - type: textarea + id: use-cases + attributes: + label: Use Cases + description: What are the use cases for this feature? diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..868237c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ +## Description + +Please include a summary of the change and which issue is fixed. + +Fixes # (issue) + +## Type of change + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] This change requires a documentation update + +## Checklist: + +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..29edf6c --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,34 @@ +# Add 'python' label to any changes within 'ev_grid_oracle', 'server', 'training', 'tools', 'viz' or 'tests' folders +python: + - any: + - changed-files: + - any-glob-to-any-file: + - ev_grid_oracle/**/* + - server/**/* + - training/**/* + - tools/**/* + - viz/**/* + - tests/**/* + - '*.py' + +# Add 'frontend' label to any changes within 'web' folder +frontend: + - any: + - changed-files: + - any-glob-to-any-file: + - web/**/* + +# Add 'documentation' label to any changes to .md files +documentation: + - any: + - changed-files: + - any-glob-to-any-file: + - '**/*.md' + - docs/**/* + +# Add 'github-actions' label to any changes within .github folder +github-actions: + - any: + - 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..96e1ff2 --- /dev/null +++ b/.github/workflows/ai-review.yml @@ -0,0 +1,24 @@ +name: AI PR Reviewer + +on: + pull_request: + types: [opened, synchronize, reopened] + +permissions: + pull-requests: write + contents: read + +jobs: + review: + runs-on: ubuntu-latest + if: ${{ github.event.sender.type != 'Bot' }} + steps: + - name: AI PR Review + uses: coderabbitai/openai-pr-reviewer@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + with: + debug: false + review_simple_changes: false + review_comment_lgtm: false diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..666ffc5 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,38 @@ +name: "CodeQL Advanced" + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + schedule: + - cron: '30 2 * * 0' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + security-events: write + packages: read + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + language: [ 'javascript-typescript', 'python' ] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 0000000..90ba946 --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,20 @@ +name: Greetings + +on: + pull_request_target: + types: [opened] + issues: + types: [opened] + +jobs: + greeting: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: 'Welcome to the repository! Thanks for opening your first issue. Our team will look into it shortly.' + pr-message: 'Welcome to the repository! Thanks for submitting your first pull request. Please make sure you have followed our contributing guidelines and all checks pass.' diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 0000000..ea16ed8 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,16 @@ +name: "Pull Request Labeler" +on: + pull_request_target: + types: [opened, synchronize, reopened] + +jobs: + labeler: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + sync-labels: true diff --git a/.github/workflows/repo-maintenance.yml b/.github/workflows/repo-maintenance.yml new file mode 100644 index 0000000..120d1eb --- /dev/null +++ b/.github/workflows/repo-maintenance.yml @@ -0,0 +1,65 @@ +name: Repository Maintenance Automation + +on: + push: + branches: + - main + pull_request: + branches: + - main + schedule: + - cron: '0 2 * * *' # Run daily at 2 AM + +permissions: + contents: write + pull-requests: write + +jobs: + maintenance: + runs-on: ubuntu-latest + if: github.repository == github.event.pull_request.head.repo.full_name || github.event_name != 'pull_request' + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: true + ref: ${{ github.head_ref || github.ref }} + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + cache: 'pip' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip uv + uv pip install --system -e ".[dev]" + uv pip install --system pydeps cyclonedx-bom + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y xdg-utils graphviz + + - name: Generate Architecture Diagrams + run: | + mkdir -p docs/architecture + pydeps ev_grid_oracle --output docs/architecture/ev_grid_oracle.svg --no-show || true + pydeps server --output docs/architecture/server.svg --no-show || true + + - name: Generate SBOM + run: | + cyclonedx-py environment -o sbom.json + + - name: Auto-fix linting and formatting + run: | + uv run --with ruff ruff check --fix . || true + uv run --with ruff ruff format . || true + + - name: Commit and Push Changes + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: "Auto-generated repo maintenance artifacts [skip ci]" + branch: ${{ github.head_ref || github.ref }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..abb68e7 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,20 @@ +name: Close Stale Issues + +on: + schedule: + - cron: '0 0 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + days-before-stale: 60 + days-before-close: 7 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..ae9deb3 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,44 @@ +# 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, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2c3fb89 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,11 @@ +# Contributing + +When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. + +Please note we have a code of conduct, please follow it in all your interactions with the project. + +## Pull Request Process + +1. Ensure your code passes all linting and test rules by running `./validate-submission.sh`. +2. Update the README.md with details of changes to the interfaces or features. +3. Your Pull Request will be automatically analyzed by our AI Reviewer and other autonomous maintainer systems. Please address their feedback. diff --git a/sbom.json b/sbom.json new file mode 100644 index 0000000..3378a0d --- /dev/null +++ b/sbom.json @@ -0,0 +1,6500 @@ +{ + "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": "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": "cycler==0.12.1", + "description": "Composable style cycles", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: repository", + "type": "vcs", + "url": "https://github.com/matplotlib/cycler" + }, + { + "comment": "from packaging metadata Project-URL: homepage", + "type": "website", + "url": "https://matplotlib.org/cycler/" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: BSD License" + } + } + ], + "name": "cycler", + "purl": "pkg:pypi/cycler@0.12.1", + "type": "library", + "version": "0.12.1" + }, + { + "bom-ref": "cyclonedx-bom==7.3.0", + "description": "CycloneDX Software Bill of Materials (SBOM) generator for Python projects and environments", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://cyclonedx-bom-tool.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python/issues" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://owasp.org/donate/?reponame=www-project-cyclonedx&title=OWASP+CycloneDX" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python/releases" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python/" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python/#readme" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "cyclonedx-bom", + "purl": "pkg:pypi/cyclonedx-bom@7.3.0", + "type": "library", + "version": "7.3.0" + }, + { + "bom-ref": "cyclonedx-python-lib==11.11.0", + "description": "Python library for CycloneDX", + "externalReferences": [ + { + "comment": "from packaging metadata Project-URL: Documentation", + "type": "documentation", + "url": "https://cyclonedx-python-library.readthedocs.io/" + }, + { + "comment": "from packaging metadata Project-URL: Bug Tracker", + "type": "issue-tracker", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/issues" + }, + { + "comment": "from packaging metadata Project-URL: Funding", + "type": "other", + "url": "https://owasp.org/donate/?reponame=www-project-cyclonedx&title=OWASP+CycloneDX" + }, + { + "comment": "from packaging metadata Project-URL: Changelog", + "type": "release-notes", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/releases" + }, + { + "comment": "from packaging metadata Project-URL: Repository", + "type": "vcs", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib" + }, + { + "comment": "from packaging metadata Project-URL: Homepage", + "type": "website", + "url": "https://github.com/CycloneDX/cyclonedx-python-lib/#readme" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "id": "Apache-2.0" + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "License :: OSI Approved :: Apache Software License" + } + } + ], + "name": "cyclonedx-python-lib", + "properties": [ + { + "name": "cdx:python:package:required-extra", + "value": "validation" + } + ], + "purl": "pkg:pypi/cyclonedx-python-lib@11.11.0", + "type": "library", + "version": "11.11.0" + }, + { + "bom-ref": "cyclopts==4.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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": [ + "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", + "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": [ + "matplotlib==3.11.0", + "pytest-cov==7.1.0", + "pytest==9.1.1" + ], + "ref": "cycler==0.12.1" + }, + { + "dependsOn": [ + "chardet==5.2.0", + "cyclonedx-python-lib==11.11.0", + "packageurl-python==0.17.6", + "packaging==26.2", + "pip-requirements-parser==32.0.1", + "tomli==2.4.1" + ], + "ref": "cyclonedx-bom==7.3.0" + }, + { + "dependsOn": [ + "jsonschema==4.26.0", + "license-expression==30.4.4", + "lxml==6.1.1", + "packageurl-python==0.17.6", + "py-serializable==2.1.0", + "referencing==0.37.0", + "sortedcontainers==2.4.0", + "typing_extensions==4.15.0" + ], + "ref": "cyclonedx-python-lib==11.11.0" + }, + { + "dependsOn": [ + "Markdown==3.10.2", + "PyYAML==6.0.3", + "attrs==26.1.0", + "coverage==7.14.3", + "docstring_parser==0.18.0", + "pydantic==2.13.4", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "rich-rst==2.0.2", + "rich==15.0.0", + "tomli==2.4.1", + "typing_extensions==4.15.0" + ], + "ref": "cyclopts==4.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", + "pillow==12.2.0", + "pydantic==2.13.4", + "pytest-cov==7.1.0", + "pytest==9.1.1", + "radon==6.0.1", + "tensorboard==2.20.0", + "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" + ], + "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", + "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" + }, + { + "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", + "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": [ + "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" + ], + "ref": "networkx==3.6.1" + }, + { + "ref": "numpy==2.5.0" + }, + { + "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": [ + "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": [ + "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" + }, + { + "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" + }, + { + "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": [ + "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" + }, + { + "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" + }, + { + "ref": "tomli==2.4.1" + }, + { + "ref": "tomli_w==1.2.0" + }, + { + "ref": "tomlkit==0.14.0" + }, + { + "dependsOn": [ + "colorama==0.4.6", + "requests==2.34.2" + ], + "ref": "tqdm==4.68.3" + }, + { + "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-27T06:50:46.224759+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:47748aa2-bffa-4629-a07a-cb7b5d813dc4", + "version": 1, + "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json", + "bomFormat": "CycloneDX", + "specVersion": "1.6" +} \ No newline at end of file