{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.timercrack/trader","documentNamespace":"https://spdx.org/spdxdocs/protobom/8b9d8b3d-bc1f-4d48-9352-e78043339277","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-20260121122932-f5d50261f216+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2026-01-22T17:19:11Z"},"packages":[{"name":"requests","SPDXID":"SPDXRef-pypi-requests-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/requests"}]},{"name":"aiohttp","SPDXID":"SPDXRef-pypi-aiohttp-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aiohttp"}]},{"name":"redis","SPDXID":"SPDXRef-pypi-redis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/redis"}]},{"name":"huggingface-hub","SPDXID":"SPDXRef-pypi-huggingface-hub-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/huggingface-hub"}]},{"name":"django","SPDXID":"SPDXRef-pypi-django-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/django"}]},{"name":"tzdata","SPDXID":"SPDXRef-pypi-tzdata-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tzdata"}]},{"name":"appdirs","SPDXID":"SPDXRef-pypi-appdirs-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/appdirs"}]},{"name":"croniter","SPDXID":"SPDXRef-pypi-croniter-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/croniter"}]},{"name":"safetensors","SPDXID":"SPDXRef-pypi-safetensors-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/safetensors"}]},{"name":"pandas","SPDXID":"SPDXRef-pypi-pandas-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pandas"}]},{"name":"matplotlib","SPDXID":"SPDXRef-pypi-matplotlib-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/matplotlib"}]},{"name":"tqdm","SPDXID":"SPDXRef-pypi-tqdm-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tqdm"}]},{"name":"ujson","SPDXID":"SPDXRef-pypi-ujson-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/ujson"}]},{"name":"aioredis","SPDXID":"SPDXRef-pypi-aioredis-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aioredis"}]},{"name":"mysqlclient","SPDXID":"SPDXRef-pypi-mysqlclient-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mysqlclient"}]},{"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":"ta-lib","SPDXID":"SPDXRef-pypi-ta-lib-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/ta-lib"}]},{"name":"numpy","SPDXID":"SPDXRef-pypi-numpy-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/numpy"}]},{"name":"einops","SPDXID":"SPDXRef-pypi-einops-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/einops"}]},{"name":"beautifulsoup4","SPDXID":"SPDXRef-pypi-beautifulsoup4-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/beautifulsoup4"}]},{"name":"lxml","SPDXID":"SPDXRef-pypi-lxml-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/lxml"}]},{"name":"sshtunnel","SPDXID":"SPDXRef-pypi-sshtunnel-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sshtunnel"}]},{"name":"asynctest","SPDXID":"SPDXRef-pypi-asynctest-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/asynctest"}]},{"name":"django-choices","SPDXID":"SPDXRef-pypi-django-choices-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/django-choices"}]},{"name":"pytz","SPDXID":"SPDXRef-pypi-pytz-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytz"}]},{"name":"Yikun/hub-mirror-action","SPDXID":"SPDXRef-githubactions-Yikun-hub-mirror-action-master-75c946","versionInfo":"master","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/Yikun/hub-mirror-action@master"}]},{"name":"com.github.timercrack/trader","SPDXID":"SPDXRef-github-timercrack-trader-master-576f90","versionInfo":"master","downloadLocation":"git+https://github.com/timercrack/trader","filesAnalyzed":false,"licenseDeclared":"Apache-2.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/timercrack/trader@master"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-ta-lib-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-numpy-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-lxml-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-pytz-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-mysqlclient-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-django-redis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-einops-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-beautifulsoup4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-asynctest-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-django-choices-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-githubactions-Yikun-hub-mirror-action-master-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-requests-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-django-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-safetensors-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-ujson-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-aiohttp-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-redis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-huggingface-hub-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-appdirs-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-pandas-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-tqdm-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-aioredis-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-sshtunnel-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-tzdata-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-croniter-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-timercrack-trader-master-576f90","relatedSpdxElement":"SPDXRef-pypi-matplotlib-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-timercrack-trader-master-576f90","relationshipType":"DESCRIBES"}]}