{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.mozilla-services/python-dockerflow","documentNamespace":"https://spdx.org/spdxdocs/protobom/7d1b6478-a6ef-4d61-afe8-f1f6f86db1cd","comment":"Exact versions could not be resolved for some packages. For more information: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#dependencies-included.","creationInfo":{"creators":["Tool: protobom-v0.0.0-20260409125808-b30cb6032525+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2026-04-11T15:02:47Z"},"packages":[{"name":"flask-sqlalchemy","SPDXID":"SPDXRef-pypi-flask-sqlalchemy-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flask-sqlalchemy"}]},{"name":"blinker","SPDXID":"SPDXRef-pypi-blinker-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/blinker"}]},{"name":"flask-login","SPDXID":"SPDXRef-pypi-flask-login-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flask-login"}]},{"name":"flask-redis","SPDXID":"SPDXRef-pypi-flask-redis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flask-redis"}]},{"name":"flask","SPDXID":"SPDXRef-pypi-flask-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flask"}]},{"name":"flask-migrate","SPDXID":"SPDXRef-pypi-flask-migrate-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flask-migrate"}]},{"name":"ruff","SPDXID":"SPDXRef-pypi-ruff-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/ruff"}]},{"name":"twine","SPDXID":"SPDXRef-pypi-twine-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/twine"}]},{"name":"check-manifest","SPDXID":"SPDXRef-pypi-check-manifest-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/check-manifest"}]},{"name":"setuptools","SPDXID":"SPDXRef-pypi-setuptools-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/setuptools"}]},{"name":"aiohttp","SPDXID":"SPDXRef-pypi-aiohttp-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aiohttp"}]},{"name":"sanic","SPDXID":"SPDXRef-pypi-sanic-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sanic"}]},{"name":"sanic-redis","SPDXID":"SPDXRef-pypi-sanic-redis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sanic-redis"}]},{"name":"uvloop","SPDXID":"SPDXRef-pypi-uvloop-75c946","versionInfo":"\u003e= 0.14.0rc1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/uvloop"}]},{"name":"sanic-testing","SPDXID":"SPDXRef-pypi-sanic-testing-75c946","versionInfo":"\u003c 23.6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sanic-testing"}]},{"name":"actions/setup-python","SPDXID":"SPDXRef-githubactions-actions-setup-python-6..-75c946","versionInfo":"6.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/setup-python@6.%2A.%2A"}]},{"name":"pypa/gh-action-pypi-publish","SPDXID":"SPDXRef-githubactions-pypa-gh-action-pypi-publish-releasev1-75c946","versionInfo":"release/v1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/pypa/gh-action-pypi-publish@release%2Fv1"}]},{"name":"actions/upload-artifact","SPDXID":"SPDXRef-githubactions-actions-upload-artifact-4..-75c946","versionInfo":"4.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/upload-artifact@4.%2A.%2A"}]},{"name":"actions/download-artifact","SPDXID":"SPDXRef-githubactions-actions-download-artifact-4..-75c946","versionInfo":"4.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/download-artifact@4.%2A.%2A"}]},{"name":"actions/checkout","SPDXID":"SPDXRef-githubactions-actions-checkout-5..-75c946","versionInfo":"5.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/checkout@5.%2A.%2A"}]},{"name":"mock","SPDXID":"SPDXRef-pypi-mock-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mock"}]},{"name":"fakeredis","SPDXID":"SPDXRef-pypi-fakeredis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/fakeredis"}]},{"name":"pytest-pythonpath","SPDXID":"SPDXRef-pypi-pytest-pythonpath-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-pythonpath"}]},{"name":"pytest-coverage","SPDXID":"SPDXRef-pypi-pytest-coverage-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-coverage"}]},{"name":"pytest","SPDXID":"SPDXRef-pypi-pytest-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest"}]},{"name":"redis","SPDXID":"SPDXRef-pypi-redis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/redis"}]},{"name":"jsonschema","SPDXID":"SPDXRef-pypi-jsonschema-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/jsonschema"}]},{"name":"pytest-mock","SPDXID":"SPDXRef-pypi-pytest-mock-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-mock"}]},{"name":"django","SPDXID":"SPDXRef-pypi-django-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/django"}]},{"name":"pytest-django","SPDXID":"SPDXRef-pypi-pytest-django-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-django"}]},{"name":"django-redis","SPDXID":"SPDXRef-pypi-django-redis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/django-redis"}]},{"name":"sphinx","SPDXID":"SPDXRef-pypi-sphinx-75c946","versionInfo":"\u003e= 6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinx"}]},{"name":"setuptools","SPDXID":"SPDXRef-pypi-setuptools-75c946","versionInfo":"\u003c 82","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/setuptools"}]},{"name":"sphinx-rtd-theme","SPDXID":"SPDXRef-pypi-sphinx-rtd-theme-75c946","versionInfo":"\u003e= 1.2.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinx-rtd-theme"}]},{"name":"sphinxcontrib-httpdomain","SPDXID":"SPDXRef-pypi-sphinxcontrib-httpdomain-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinxcontrib-httpdomain"}]},{"name":"fastapi","SPDXID":"SPDXRef-pypi-fastapi-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/fastapi"}]},{"name":"asgiref","SPDXID":"SPDXRef-pypi-asgiref-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/asgiref"}]},{"name":"httpx","SPDXID":"SPDXRef-pypi-httpx-75c946","versionInfo":"\u003c 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/httpx"}]},{"name":"com.github.mozilla-services/python-dockerflow","SPDXID":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","versionInfo":"main","downloadLocation":"git+https://github.com/mozilla-services/python-dockerflow","filesAnalyzed":false,"licenseDeclared":"MPL-2.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/mozilla-services/python-dockerflow@main"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-flask-sqlalchemy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-uvloop-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-blinker-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-sanic-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-pytest-pythonpath-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-pytest-django-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-pytest-mock-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-flask-migrate-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-twine-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-aiohttp-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-sanic-testing-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-githubactions-actions-checkout-5..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-flask-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-ruff-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-pytest-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-jsonschema-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-flask-login-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-flask-redis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-check-manifest-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-githubactions-actions-download-artifact-4..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-sphinx-rtd-theme-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-asgiref-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-httpx-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-mock-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-redis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-sanic-redis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-githubactions-actions-setup-python-6..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-githubactions-pypa-gh-action-pypi-publish-releasev1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-django-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-django-redis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-fastapi-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-setuptools-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-githubactions-actions-upload-artifact-4..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-fakeredis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-pytest-coverage-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-sphinx-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relatedSpdxElement":"SPDXRef-pypi-sphinxcontrib-httpdomain-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-mozilla-services-python-dockerflow-main-62cadd","relationshipType":"DESCRIBES"}]}