{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:a4600812-f7f8-49a4-9913-e3a72cba7b5d","metadata":{"timestamp":"2026-10-06T21:23:20Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"OpenSimulationInterface/osi-python"}},"components":[{"type":"library","name":"actions/checkout","version":"v4","purl":"pkg:githubactions/actions/checkout","properties":[{"name":"filePath","value":".github/workflows/build.yml"}]},{"type":"library","name":"actions/setup-python","version":"v5","purl":"pkg:githubactions/actions/setup-python","properties":[{"name":"filePath","value":".github/workflows/build.yml"}]},{"type":"library","name":"actions/upload-artifact","version":"v4","purl":"pkg:githubactions/actions/upload-artifact","properties":[{"name":"filePath","value":".github/workflows/build.yml"}]},{"type":"library","name":"black","version":"24.10.0","purl":"pkg:pypi/black","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"click","version":"8.2.1","purl":"pkg:pypi/click","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"colorama","version":"0.4.6","purl":"pkg:pypi/colorama","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"exceptiongroup","version":"1.3.0","purl":"pkg:pypi/exceptiongroup","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"iniconfig","version":"2.1.0","purl":"pkg:pypi/iniconfig","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mypy-extensions","version":"1.1.0","purl":"pkg:pypi/mypy-extensions","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"packaging","version":"25.0","purl":"pkg:pypi/packaging","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pathspec","version":"0.12.1","purl":"pkg:pypi/pathspec","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"platformdirs","version":"4.3.8","purl":"pkg:pypi/platformdirs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pluggy","version":"1.6.0","purl":"pkg:pypi/pluggy","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"protobuf","version":"6.31.1","purl":"pkg:pypi/protobuf","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pygments","version":"2.19.2","purl":"pkg:pypi/pygments","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pytest","version":"8.4.1","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"tomli","version":"2.2.1","purl":"pkg:pypi/tomli","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"typing-extensions","version":"4.14.1","purl":"pkg:pypi/typing-extensions","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pytest","version":"^8.2.2","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"black","version":"^24.4.2","purl":"pkg:pypi/black","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"protobuf","version":"\u003e=6.30.2","purl":"pkg:pypi/protobuf","properties":[{"name":"filePath","value":"pyproject.toml"}]}]}