{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.dsh0416/python-miio","documentNamespace":"https://spdx.org/spdxdocs/protobom/1ed369fb-30a0-4d00-b9d1-5e825e001c56","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-20260109172223-ec205671c075+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2026-01-11T19:08:50Z"},"packages":[{"name":"sphinx-rtd-theme","SPDXID":"SPDXRef-pypi-sphinx-rtd-theme-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinx-rtd-theme"}]},{"name":"sphinxcontrib-apidoc","SPDXID":"SPDXRef-pypi-sphinxcontrib-apidoc-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinxcontrib-apidoc"}]},{"name":"appdirs","SPDXID":"SPDXRef-pypi-appdirs-75c946","versionInfo":"^ 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/appdirs"}]},{"name":"pytest","SPDXID":"SPDXRef-pypi-pytest-75c946","versionInfo":"\u003e= 6.2.5","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest"}]},{"name":"pytest-mock","SPDXID":"SPDXRef-pypi-pytest-mock-75c946","versionInfo":"^ 3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-mock"}]},{"name":"pyyaml","SPDXID":"SPDXRef-pypi-pyyaml-75c946","versionInfo":"\u003e= 5,\u003c 7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pyyaml"}]},{"name":"cffi","SPDXID":"SPDXRef-pypi-cffi-75c946","versionInfo":"^ 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/cffi"}]},{"name":"pytz","SPDXID":"SPDXRef-pypi-pytz-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytz"}]},{"name":"attrs","SPDXID":"SPDXRef-pypi-attrs-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/attrs"}]},{"name":"sphinx-click","SPDXID":"SPDXRef-pypi-sphinx-click-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinx-click"}]},{"name":"croniter","SPDXID":"SPDXRef-pypi-croniter-75c946","versionInfo":"\u003e= 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/croniter"}]},{"name":"click","SPDXID":"SPDXRef-pypi-click-75c946","versionInfo":"\u003e= 8","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/click"}]},{"name":"coverage","SPDXID":"SPDXRef-pypi-coverage-75c946","versionInfo":"^ 6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/coverage"}]},{"name":"tox","SPDXID":"SPDXRef-pypi-tox-75c946","versionInfo":"^ 3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tox"}]},{"name":"isort","SPDXID":"SPDXRef-pypi-isort-75c946","versionInfo":"^ 4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/isort"}]},{"name":"defusedxml","SPDXID":"SPDXRef-pypi-defusedxml-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/defusedxml"}]},{"name":"netifaces","SPDXID":"SPDXRef-pypi-netifaces-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/netifaces"}]},{"name":"voluptuous","SPDXID":"SPDXRef-pypi-voluptuous-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/voluptuous"}]},{"name":"android-backup","SPDXID":"SPDXRef-pypi-android-backup-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/android-backup"}]},{"name":"sphinx","SPDXID":"SPDXRef-pypi-sphinx-75c946","versionInfo":"\u003e= 4.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sphinx"}]},{"name":"importlib-metadata","SPDXID":"SPDXRef-pypi-importlib-metadata-75c946","versionInfo":"^ 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/importlib-metadata"}]},{"name":"restructuredtext-lint","SPDXID":"SPDXRef-pypi-restructuredtext-lint-75c946","versionInfo":"^ 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/restructuredtext-lint"}]},{"name":"construct","SPDXID":"SPDXRef-pypi-construct-75c946","versionInfo":"^ 2.10.56","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/construct"}]},{"name":"micloud","SPDXID":"SPDXRef-pypi-micloud-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/micloud"}]},{"name":"zeroconf","SPDXID":"SPDXRef-pypi-zeroconf-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/zeroconf"}]},{"name":"tqdm","SPDXID":"SPDXRef-pypi-tqdm-75c946","versionInfo":"^ 4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tqdm"}]},{"name":"mypy","SPDXID":"SPDXRef-pypi-mypy-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mypy"}]},{"name":"pytest-cov","SPDXID":"SPDXRef-pypi-pytest-cov-75c946","versionInfo":"^ 2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest-cov"}]},{"name":"cryptography","SPDXID":"SPDXRef-pypi-cryptography-75c946","versionInfo":"\u003e= 35","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/cryptography"}]},{"name":"python","SPDXID":"SPDXRef-pypi-python-75c946","versionInfo":"^ 3.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/python"}]},{"name":"pre-commit","SPDXID":"SPDXRef-pypi-pre-commit-75c946","versionInfo":"^ 2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pre-commit"}]},{"name":"doc8","SPDXID":"SPDXRef-pypi-doc8-75c946","versionInfo":"^ 0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/doc8"}]},{"name":"docformatter","SPDXID":"SPDXRef-pypi-docformatter-75c946","versionInfo":"^ 1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/docformatter"}]},{"name":"com.github.dsh0416/python-miio","SPDXID":"SPDXRef-github-dsh0416-python-miio-master-e37497","versionInfo":"master","downloadLocation":"git+https://github.com/dsh0416/python-miio","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/dsh0416/python-miio@master"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-voluptuous-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-pyyaml-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-attrs-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-coverage-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-pre-commit-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-tox-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-restructuredtext-lint-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-zeroconf-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-pytz-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-croniter-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-mypy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-python-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-pytest-cov-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-cryptography-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-sphinxcontrib-apidoc-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-sphinx-click-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-isort-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-defusedxml-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-netifaces-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-doc8-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-docformatter-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-sphinx-rtd-theme-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-pytest-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-cffi-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-click-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-construct-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-micloud-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-tqdm-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-android-backup-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-appdirs-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-pytest-mock-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-sphinx-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dsh0416-python-miio-master-e37497","relatedSpdxElement":"SPDXRef-pypi-importlib-metadata-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-dsh0416-python-miio-master-e37497","relationshipType":"DESCRIBES"}]}