{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.wechaty/python-wechaty","documentNamespace":"https://spdx.org/spdxdocs/protobom/c05fd29b-ab2a-4ff1-b189-c0f909624490","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-20250805170613-cf5b071169fb+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2025-08-11T01:56:44Z"},"packages":[{"name":"sqlalchemy","SPDXID":"SPDXRef-pypi-sqlalchemy-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sqlalchemy"}]},{"name":"urllib3","SPDXID":"SPDXRef-pypi-urllib3-75c946","versionInfo":"\u003c 2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/urllib3"}]},{"name":"quart","SPDXID":"SPDXRef-pypi-quart-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/quart"}]},{"name":"quart-cors","SPDXID":"SPDXRef-pypi-quart-cors-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/quart-cors"}]},{"name":"pyee","SPDXID":"SPDXRef-pypi-pyee-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pyee"}]},{"name":"wechaty-puppet-service","SPDXID":"SPDXRef-pypi-wechaty-puppet-service-75c946","versionInfo":"\u003e= 0.8.9","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/wechaty-puppet-service"}]},{"name":"wechaty-puppet","SPDXID":"SPDXRef-pypi-wechaty-puppet-75c946","versionInfo":"\u003e= 0.4.19","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/wechaty-puppet"}]},{"name":"pygithub","SPDXID":"SPDXRef-pypi-pygithub-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pygithub"}]},{"name":"opengraph-py3","SPDXID":"SPDXRef-pypi-opengraph-py3-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/opengraph-py3"}]},{"name":"actions/checkout","SPDXID":"SPDXRef-githubactions-actions-checkout-2..-75c946","versionInfo":"2.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/checkout@2.%2A.%2A"}]},{"name":"actions/checkout","SPDXID":"SPDXRef-githubactions-actions-checkout-3..-75c946","versionInfo":"3.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/checkout@3.%2A.%2A"}]},{"name":"actions/setup-node","SPDXID":"SPDXRef-githubactions-actions-setup-node-3..-75c946","versionInfo":"3.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/setup-node@3.%2A.%2A"}]},{"name":"actions/setup-python","SPDXID":"SPDXRef-githubactions-actions-setup-python-1..-75c946","versionInfo":"1.*.*","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/setup-python@1.%2A.%2A"}]},{"name":"pre-commit","SPDXID":"SPDXRef-pypi-pre-commit-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pre-commit"}]},{"name":"pycodestyle","SPDXID":"SPDXRef-pypi-pycodestyle-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pycodestyle"}]},{"name":"mkdocs","SPDXID":"SPDXRef-pypi-mkdocs-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mkdocs"}]},{"name":"setuptools","SPDXID":"SPDXRef-pypi-setuptools-75c946","versionInfo":"\u003e= 63.2.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/setuptools"}]},{"name":"pytype","SPDXID":"SPDXRef-pypi-pytype-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytype"}]},{"name":"pytest-cov","SPDXID":"SPDXRef-pypi-pytest-cov-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-cov"}]},{"name":"mypy","SPDXID":"SPDXRef-pypi-mypy-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mypy"}]},{"name":"apscheduler","SPDXID":"SPDXRef-pypi-apscheduler-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/apscheduler"}]},{"name":"yapf","SPDXID":"SPDXRef-pypi-yapf-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/yapf"}]},{"name":"mkdocstrings","SPDXID":"SPDXRef-pypi-mkdocstrings-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mkdocstrings"}]},{"name":"pylint-quotes","SPDXID":"SPDXRef-pypi-pylint-quotes-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pylint-quotes"}]},{"name":"semver","SPDXID":"SPDXRef-pypi-semver-3.0.0.dev3-75c946","versionInfo":"3.0.0.dev3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/semver@3.0.0.dev3"}]},{"name":"requests","SPDXID":"SPDXRef-pypi-requests-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/requests"}]},{"name":"pytest","SPDXID":"SPDXRef-pypi-pytest-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest"}]},{"name":"pytest-asyncio","SPDXID":"SPDXRef-pypi-pytest-asyncio-0.18.3-75c946","versionInfo":"0.18.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-asyncio@0.18.3"}]},{"name":"types-requests","SPDXID":"SPDXRef-pypi-types-requests-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/types-requests"}]},{"name":"pylint","SPDXID":"SPDXRef-pypi-pylint-2.17.7-75c946","versionInfo":"2.17.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"GPL-2.0-or-later AND GPL-3.0-or-later","copyrightText":"Copyright (c) 1989, 1991 Free Software Foundation, Inc., Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt, copyrighted by the Free Software Foundation","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pylint@2.17.7"}]},{"name":"qrcode","SPDXID":"SPDXRef-pypi-qrcode-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/qrcode"}]},{"name":"mypy-extensions","SPDXID":"SPDXRef-pypi-mypy-extensions-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mypy-extensions"}]},{"name":"mkdocs-material","SPDXID":"SPDXRef-pypi-mkdocs-material-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mkdocs-material"}]},{"name":"pyee","SPDXID":"SPDXRef-pypi-pyee-11.0.0-75c946","versionInfo":"11.0.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2021 Josh Holbrook","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pyee@11.0.0"}]},{"name":"mkdocstrings-python-legacy","SPDXID":"SPDXRef-pypi-mkdocstrings-python-legacy-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mkdocstrings-python-legacy"}]},{"name":"urllib3","SPDXID":"SPDXRef-pypi-urllib3-1.26-75c946","versionInfo":"1.26","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/urllib3@1.26"}]},{"name":"flake8","SPDXID":"SPDXRef-pypi-flake8-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flake8"}]},{"name":"lxml","SPDXID":"SPDXRef-pypi-lxml-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/lxml"}]},{"name":"com.github.wechaty/python-wechaty","SPDXID":"SPDXRef-github-wechaty-python-wechaty-main-918afd","versionInfo":"main","downloadLocation":"git+https://github.com/wechaty/python-wechaty","filesAnalyzed":false,"licenseDeclared":"Apache-2.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/wechaty/python-wechaty@main"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-qrcode-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-mypy-extensions-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pyee-11.0.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pyee-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pre-commit-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-mkdocs-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pytype-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-semver-3.0.0.dev3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pytest-asyncio-0.18.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-wechaty-puppet-service-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-githubactions-actions-checkout-2..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-yapf-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-mkdocstrings-python-legacy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-flake8-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-quart-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-quart-cors-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-mypy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-mkdocstrings-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-urllib3-1.26-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-setuptools-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pytest-cov-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-requests-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-mkdocs-material-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-githubactions-actions-setup-node-3..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pycodestyle-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-types-requests-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-sqlalchemy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-wechaty-puppet-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-opengraph-py3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-githubactions-actions-checkout-3..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-githubactions-actions-setup-python-1..-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-apscheduler-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pytest-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pylint-2.17.7-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-lxml-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-urllib3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pygithub-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relatedSpdxElement":"SPDXRef-pypi-pylint-quotes-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-wechaty-python-wechaty-main-918afd","relationshipType":"DESCRIBES"}]}