{"url":"https://pypi.sbomify.com/package/loopsleuth/0.1.2","markdown_url":"https://pypi.sbomify.com/package/loopsleuth/0.1.2.md","name":"loopsleuth","version":"0.1.2","purl":"pkg:pypi/loopsleuth@0.1.2","summary":"AI-powered Python performance analyzer that detects algorithmic bottlenecks","author":null,"project_urls":{"Homepage":"https://github.com/tarekziade/loopsleuth","Repository":"https://github.com/tarekziade/loopsleuth"},"requires_python":">=3.10","license":"MIT","classifiers":["Development Status :: 4 - Beta","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Programming Language :: Rust","Topic :: Software Development :: Quality Assurance","Topic :: Software Development :: Testing"],"wheels":[{"filename":"loopsleuth-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl","url":"https://files.pythonhosted.org/packages/99/e4/c0462b61a2a7924ceb3aabd47cae4e533189582757c9483280a1c80eabee/loopsleuth-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl","sboms":[{"artifact_uuid":"4b0f1d1c-59ed-5d09-aefd-009076ddd637","path":"loopsleuth-0.1.2.dist-info/sboms/auditwheel.cdx.json","format":"CycloneDX/1.4","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/4b0f1d1c-59ed-5d09-aefd-009076ddd637/download","vulnerability_count":0,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"tarekziade/loopsleuth","workflow":"publish.yml","environment":"pypi","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.10":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/tarekziade/loopsleuth","1.3.6.1.4.1.57264.1.13":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.15":"1146131374","1.3.6.1.4.1.57264.1.16":"https://github.com/tarekziade","1.3.6.1.4.1.57264.1.17":"250019","1.3.6.1.4.1.57264.1.18":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.19":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.20":"release","1.3.6.1.4.1.57264.1.21":"https://github.com/tarekziade/loopsleuth/actions/runs/21746516061/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"loopsleuth-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl","url":"https://files.pythonhosted.org/packages/90/4e/00f46e9c87ae3f11c983e01e9a45abea4b7ad192934a4bbe076380cb055c/loopsleuth-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl","sboms":[{"artifact_uuid":"c20a1678-8208-53af-a9cd-96c7a98db681","path":"loopsleuth-0.1.2.dist-info/sboms/auditwheel.cdx.json","format":"CycloneDX/1.4","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/c20a1678-8208-53af-a9cd-96c7a98db681/download","vulnerability_count":0,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"tarekziade/loopsleuth","workflow":"publish.yml","environment":"pypi","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.10":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/tarekziade/loopsleuth","1.3.6.1.4.1.57264.1.13":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.15":"1146131374","1.3.6.1.4.1.57264.1.16":"https://github.com/tarekziade","1.3.6.1.4.1.57264.1.17":"250019","1.3.6.1.4.1.57264.1.18":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.19":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.20":"release","1.3.6.1.4.1.57264.1.21":"https://github.com/tarekziade/loopsleuth/actions/runs/21746516061/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"loopsleuth-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl","url":"https://files.pythonhosted.org/packages/9e/a6/62b0d101ab2d0a0c4d499d1f511d38ae846d33cbdfca113e8cedd76aa742/loopsleuth-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl","sboms":[{"artifact_uuid":"9a027132-9474-552e-98d2-3868c03bcac4","path":"loopsleuth-0.1.2.dist-info/sboms/auditwheel.cdx.json","format":"CycloneDX/1.4","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/9a027132-9474-552e-98d2-3868c03bcac4/download","vulnerability_count":0,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"tarekziade/loopsleuth","workflow":"publish.yml","environment":"pypi","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.10":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/tarekziade/loopsleuth","1.3.6.1.4.1.57264.1.13":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.15":"1146131374","1.3.6.1.4.1.57264.1.16":"https://github.com/tarekziade","1.3.6.1.4.1.57264.1.17":"250019","1.3.6.1.4.1.57264.1.18":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.19":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.20":"release","1.3.6.1.4.1.57264.1.21":"https://github.com/tarekziade/loopsleuth/actions/runs/21746516061/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"loopsleuth-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl","url":"https://files.pythonhosted.org/packages/49/a1/8d471125994ab6d2c0aa80bc380b59f3f5340ff783a8b67e2411c177e871/loopsleuth-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl","sboms":[{"artifact_uuid":"4e14c15d-b84d-5edd-b2e0-c919da1f55ff","path":"loopsleuth-0.1.2.dist-info/sboms/auditwheel.cdx.json","format":"CycloneDX/1.4","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/4e14c15d-b84d-5edd-b2e0-c919da1f55ff/download","vulnerability_count":0,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"tarekziade/loopsleuth","workflow":"publish.yml","environment":"pypi","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.10":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/tarekziade/loopsleuth","1.3.6.1.4.1.57264.1.13":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.15":"1146131374","1.3.6.1.4.1.57264.1.16":"https://github.com/tarekziade","1.3.6.1.4.1.57264.1.17":"250019","1.3.6.1.4.1.57264.1.18":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.19":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.20":"release","1.3.6.1.4.1.57264.1.21":"https://github.com/tarekziade/loopsleuth/actions/runs/21746516061/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"loopsleuth-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl","url":"https://files.pythonhosted.org/packages/e6/4b/9778617f55b1b0b2a12815002359189513ce2c71079f5c0ed996138678da/loopsleuth-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl","sboms":[{"artifact_uuid":"21c05cce-4bda-537b-ae5d-2318783686c2","path":"loopsleuth-0.1.2.dist-info/sboms/auditwheel.cdx.json","format":"CycloneDX/1.4","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/21c05cce-4bda-537b-ae5d-2318783686c2/download","vulnerability_count":0,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"tarekziade/loopsleuth","workflow":"publish.yml","environment":"pypi","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.10":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/tarekziade/loopsleuth","1.3.6.1.4.1.57264.1.13":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.15":"1146131374","1.3.6.1.4.1.57264.1.16":"https://github.com/tarekziade","1.3.6.1.4.1.57264.1.17":"250019","1.3.6.1.4.1.57264.1.18":"https://github.com/tarekziade/loopsleuth/.github/workflows/publish.yml@refs/tags/v0.1.2","1.3.6.1.4.1.57264.1.19":"797ec6d3eb2429bc4d98dbdb666a9786f0b71d6a","1.3.6.1.4.1.57264.1.20":"release","1.3.6.1.4.1.57264.1.21":"https://github.com/tarekziade/loopsleuth/actions/runs/21746516061/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}}],"formats":["CycloneDX"],"sbom_count":5,"has_attestation":true,"vulnerabilities":[],"vulnerability_scan":{"scanned_sboms":5,"total_sboms":5,"scanned_at":"2026-11-09","scanner":"osv-scanner 2.7.0","severity_counts":{}}}