{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:c4fdac88-ffce-4b23-be17-ab14f55aece2","metadata":{"timestamp":"2026-10-03T22:21:31Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"python-discord/patsy"}},"components":[{"type":"library","name":"actions/checkout","version":"v3","purl":"pkg:githubactions/actions/checkout","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"docker/setup-buildx-action","version":"v2","purl":"pkg:githubactions/docker/setup-buildx-action","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"docker/login-action","version":"v2","purl":"pkg:githubactions/docker/login-action","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"docker/build-push-action","version":"v3","purl":"pkg:githubactions/docker/build-push-action","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"azure/setup-kubectl","version":"v3","purl":"pkg:githubactions/azure/setup-kubectl","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"azure/k8s-set-context","version":"v3","purl":"pkg:githubactions/azure/k8s-set-context","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"Azure/k8s-deploy","version":"v4","purl":"pkg:githubactions/Azure/k8s-deploy","properties":[{"name":"filePath","value":".github/workflows/build-deploy.yaml"}]},{"type":"library","name":"actions/checkout","version":"v3","purl":"pkg:githubactions/actions/checkout","properties":[{"name":"filePath","value":".github/workflows/lint.yaml"}]},{"type":"library","name":"HassanAbouelela/actions/setup-python","version":"setup-python_v1.3.3","purl":"pkg:githubactions/HassanAbouelela/actions/setup-python","properties":[{"name":"filePath","value":".github/workflows/lint.yaml"}]},{"type":"library","name":"actions/cache","version":"v3","purl":"pkg:githubactions/actions/cache","properties":[{"name":"filePath","value":".github/workflows/lint.yaml"}]},{"type":"library","name":"actions/upload-artifact","version":"v2","purl":"pkg:githubactions/actions/upload-artifact","properties":[{"name":"filePath","value":".github/workflows/lint.yaml"}]},{"type":"library","name":"SebastiaanZ/github-status-embed-for-discord","version":"v0.3.0","purl":"pkg:githubactions/SebastiaanZ/github-status-embed-for-discord","properties":[{"name":"filePath","value":".github/workflows/status-embed.yaml"}]},{"type":"library","name":"python","version":"3.11-slim","purl":"pkg:docker/python","properties":[{"name":"filePath","value":"Dockerfile"}]},{"type":"library","name":"alembic","version":"1.7.5","purl":"pkg:pypi/alembic","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"anyio","version":"3.3.4","purl":"pkg:pypi/anyio","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"asgiref","version":"3.4.1","purl":"pkg:pypi/asgiref","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"asyncpg","version":"0.24.0","purl":"pkg:pypi/asyncpg","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"attrs","version":"21.2.0","purl":"pkg:pypi/attrs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"backports.entry-points-selectable","version":"1.1.1","purl":"pkg:pypi/backports.entry-points-selectable","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"certifi","version":"2021.10.8","purl":"pkg:pypi/certifi","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"cfgv","version":"3.3.1","purl":"pkg:pypi/cfgv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"charset-normalizer","version":"2.0.7","purl":"pkg:pypi/charset-normalizer","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"click","version":"8.0.3","purl":"pkg:pypi/click","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"colorama","version":"0.4.4","purl":"pkg:pypi/colorama","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"distlib","version":"0.3.3","purl":"pkg:pypi/distlib","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"fastapi","version":"0.70.0","purl":"pkg:pypi/fastapi","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"filelock","version":"3.3.2","purl":"pkg:pypi/filelock","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8","version":"4.0.1","purl":"pkg:pypi/flake8","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-annotations","version":"2.7.0","purl":"pkg:pypi/flake8-annotations","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-bugbear","version":"21.9.2","purl":"pkg:pypi/flake8-bugbear","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-docstrings","version":"1.6.0","purl":"pkg:pypi/flake8-docstrings","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-isort","version":"4.1.1","purl":"pkg:pypi/flake8-isort","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-polyfill","version":"1.0.2","purl":"pkg:pypi/flake8-polyfill","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-string-format","version":"0.3.0","purl":"pkg:pypi/flake8-string-format","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-tidy-imports","version":"4.5.0","purl":"pkg:pypi/flake8-tidy-imports","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"flake8-todo","version":"0.7","purl":"pkg:pypi/flake8-todo","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"greenlet","version":"1.1.2","purl":"pkg:pypi/greenlet","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"h11","version":"0.12.0","purl":"pkg:pypi/h11","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httpcore","version":"0.13.7","purl":"pkg:pypi/httpcore","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httptools","version":"0.2.0","purl":"pkg:pypi/httptools","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"httpx","version":"0.20.0","purl":"pkg:pypi/httpx","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"identify","version":"2.3.5","purl":"pkg:pypi/identify","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"idna","version":"3.3","purl":"pkg:pypi/idna","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"isort","version":"5.10.1","purl":"pkg:pypi/isort","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"loguru","version":"0.5.3","purl":"pkg:pypi/loguru","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mako","version":"1.1.5","purl":"pkg:pypi/mako","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"markupsafe","version":"2.0.1","purl":"pkg:pypi/markupsafe","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mccabe","version":"0.6.1","purl":"pkg:pypi/mccabe","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"mslex","version":"0.3.0","purl":"pkg:pypi/mslex","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"nodeenv","version":"1.6.0","purl":"pkg:pypi/nodeenv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pep8-naming","version":"0.12.1","purl":"pkg:pypi/pep8-naming","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"platformdirs","version":"2.4.0","purl":"pkg:pypi/platformdirs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pre-commit","version":"2.15.0","purl":"pkg:pypi/pre-commit","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"psutil","version":"5.8.0","purl":"pkg:pypi/psutil","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pycodestyle","version":"2.8.0","purl":"pkg:pypi/pycodestyle","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pydantic","version":"1.8.2","purl":"pkg:pypi/pydantic","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pydocstyle","version":"6.1.1","purl":"pkg:pypi/pydocstyle","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyflakes","version":"2.4.0","purl":"pkg:pypi/pyflakes","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"python-dotenv","version":"0.19.2","purl":"pkg:pypi/python-dotenv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"pyyaml","version":"6.0","purl":"pkg:pypi/pyyaml","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"rfc3986","version":"1.5.0","purl":"pkg:pypi/rfc3986","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"six","version":"1.16.0","purl":"pkg:pypi/six","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"sniffio","version":"1.2.0","purl":"pkg:pypi/sniffio","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"snowballstemmer","version":"2.1.0","purl":"pkg:pypi/snowballstemmer","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"sqlalchemy","version":"1.4.27","purl":"pkg:pypi/sqlalchemy","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"sqlalchemy2-stubs","version":"0.0.2a19","purl":"pkg:pypi/sqlalchemy2-stubs","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"sqlmodel","version":"0.0.4","purl":"pkg:pypi/sqlmodel","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"starlette","version":"0.16.0","purl":"pkg:pypi/starlette","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"taskipy","version":"1.9.0","purl":"pkg:pypi/taskipy","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"testfixtures","version":"6.18.3","purl":"pkg:pypi/testfixtures","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"toml","version":"0.10.2","purl":"pkg:pypi/toml","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"tomlkit","version":"0.7.2","purl":"pkg:pypi/tomlkit","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"typing-extensions","version":"3.10.0.2","purl":"pkg:pypi/typing-extensions","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"uvicorn","version":"0.15.0","purl":"pkg:pypi/uvicorn","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"uvloop","version":"0.16.0","purl":"pkg:pypi/uvloop","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"virtualenv","version":"20.10.0","purl":"pkg:pypi/virtualenv","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"watchgod","version":"0.7","purl":"pkg:pypi/watchgod","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"websockets","version":"10.0","purl":"pkg:pypi/websockets","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"win32-setctime","version":"1.0.3","purl":"pkg:pypi/win32-setctime","properties":[{"name":"filePath","value":"poetry.lock"}]},{"type":"library","name":"python","version":"^3.9","purl":"pkg:pypi/python","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"sqlmodel","version":"^0.0","purl":"pkg:pypi/sqlmodel","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"asyncpg","version":"^0.24","purl":"pkg:pypi/asyncpg","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"alembic","version":"^1.7.4","purl":"pkg:pypi/alembic","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"uvicorn","version":"^0.15","purl":"pkg:pypi/uvicorn","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"fastapi","version":"^0.70","purl":"pkg:pypi/fastapi","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"httpx","version":"^0.20","purl":"pkg:pypi/httpx","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"tomlkit","version":"^0.7","purl":"pkg:pypi/tomlkit","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"loguru","version":"^0.5","purl":"pkg:pypi/loguru","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8","version":"^4.0","purl":"pkg:pypi/flake8","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-annotations","version":"^2.7","purl":"pkg:pypi/flake8-annotations","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-bugbear","version":"^21.9","purl":"pkg:pypi/flake8-bugbear","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-docstrings","version":"^1.6","purl":"pkg:pypi/flake8-docstrings","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-isort","version":"^4.1","purl":"pkg:pypi/flake8-isort","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-string-format","version":"^0.3","purl":"pkg:pypi/flake8-string-format","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-tidy-imports","version":"^4.5","purl":"pkg:pypi/flake8-tidy-imports","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"flake8-todo","version":"^0.7","purl":"pkg:pypi/flake8-todo","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"pep8-naming","version":"^0.12","purl":"pkg:pypi/pep8-naming","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"pre-commit","version":"^2.15","purl":"pkg:pypi/pre-commit","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"taskipy","version":"^1.9","purl":"pkg:pypi/taskipy","properties":[{"name":"filePath","value":"pyproject.toml"}]},{"type":"library","name":"postgres","version":"15-alpine","purl":"pkg:docker/postgres","properties":[{"name":"filePath","value":"docker-compose.yml"}]},{"type":"library","name":"alembic","version":"==1.12.0","purl":"pkg:pypi/alembic","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"anyio","version":"==3.7.1","purl":"pkg:pypi/anyio","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"asyncpg","version":"==0.28.0","purl":"pkg:pypi/asyncpg","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"click","version":"==8.1.7","purl":"pkg:pypi/click","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"colorama","version":"==0.4.6","purl":"pkg:pypi/colorama","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"fastapi","version":"==0.103.1","purl":"pkg:pypi/fastapi","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"greenlet","version":"==2.0.2","purl":"pkg:pypi/greenlet","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"h11","version":"==0.14.0","purl":"pkg:pypi/h11","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"httptools","version":"==0.6.0","purl":"pkg:pypi/httptools","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"idna","version":"==3.4","purl":"pkg:pypi/idna","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"mako","version":"==1.2.4","purl":"pkg:pypi/mako","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"markupsafe","version":"==2.1.3","purl":"pkg:pypi/markupsafe","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pydantic","version":"==1.10.12","purl":"pkg:pypi/pydantic","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"python-dateutil","version":"==2.8.2","purl":"pkg:pypi/python-dateutil","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"python-dotenv","version":"==1.0.0","purl":"pkg:pypi/python-dotenv","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyyaml","version":"==6.0.1","purl":"pkg:pypi/pyyaml","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"six","version":"==1.16.0","purl":"pkg:pypi/six","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"sniffio","version":"==1.3.0","purl":"pkg:pypi/sniffio","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"sqlalchemy","version":"==2.0.19","purl":"pkg:pypi/sqlalchemy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"starlette","version":"==0.27.0","purl":"pkg:pypi/starlette","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"typing-extensions","version":"==4.7.1","purl":"pkg:pypi/typing-extensions","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"uvicorn","version":"==0.23.2","purl":"pkg:pypi/uvicorn","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"uvloop","version":"==0.17.0","purl":"pkg:pypi/uvloop","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"watchfiles","version":"==0.20.0","purl":"pkg:pypi/watchfiles","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"websockets","version":"==11.0.3","purl":"pkg:pypi/websockets","properties":[{"name":"filePath","value":"requirements.txt"}]}]}