{
  "expectations": "slsa_provenance_census",
  "probe_version": "1.0.0",
  "generated_at": "2026-08-02T03:41:42.805849+00:00",
  "published_before_results": true,
  "subject": {
    "what": "the dependency set this engine installs for itself",
    "requirements_file": "requirements.txt",
    "requirements_sha256": "7e1faf942c6cddc14cc4a137a2a83c98635bae2cb66528f14bf42fcd672319eb",
    "engine_commit": "c9e1ab67d08c866c7005ab61f107018b6ec724b6",
    "resolver": "pip via /private/tmp/slsa_venv/bin/python",
    "python": "3.11.15",
    "platform": "Darwin arm64",
    "platform_note": "Wheel selection is platform specific, so the artifact list is the one this machine would install. A different platform resolves different wheel filenames for the same versions, and would need its own run."
  },
  "expectation_count": 94,
  "declared_roots": 14,
  "transitive": 80,
  "unresolvable_roots": [
    {
      "package": "helixhash",
      "declared_line": "helixhash>=1.0",
      "reason": "declared_range_unsatisfiable_on_pypi",
      "latest_published_on_pypi": "0.1.1"
    },
    {
      "package": "witnessfield",
      "declared_line": "witnessfield>=1.0",
      "reason": "project_not_on_pypi",
      "latest_published_on_pypi": null
    }
  ],
  "limb_order_frozen": [
    "index_resolves",
    "provenance_published",
    "bundle_wellformed",
    "artifact_bytes_match_index",
    "signature_verifies",
    "signer_matches_declared_source",
    "predicate_is_slsa_build_provenance",
    "attestation_in_transparency_log"
  ],
  "limb_spec_level": {
    "index_resolves": "MUST",
    "provenance_published": "MUST",
    "bundle_wellformed": "MUST",
    "artifact_bytes_match_index": "MUST",
    "signature_verifies": "MUST",
    "signer_matches_declared_source": "SHOULD",
    "predicate_is_slsa_build_provenance": "OBSERVED",
    "attestation_in_transparency_log": "OBSERVED"
  },
  "limb_definitions": {
    "index_resolves": {
      "admit_when": "The declared requirement resolves to one concrete distribution on the public index today. Transitive members admit by construction: the resolver already picked them. Declared roots admit only if some published version satisfies the range written in requirements.txt.",
      "refuse_reasons": [
        "project_not_on_pypi",
        "declared_range_unsatisfiable_on_pypi"
      ]
    },
    "provenance_published": {
      "admit_when": "The PyPI integrity endpoint returns HTTP 200 and a JSON body for the exact artifact filename the resolver chose. A 404 means the uploader published no attestation for this file. That is the ordinary case today and it is recorded as a refusal, not as an absence.",
      "refuse_reasons": [
        "no_provenance_published",
        "http_<status>",
        "transport_error:<detail>",
        "not_json"
      ]
    },
    "bundle_wellformed": {
      "admit_when": "The body parses as a PEP 740 provenance object carrying at least one attestation bundle, each with a named publisher identity and at least one attestation holding a DSSE envelope and verification material.",
      "refuse_reasons": [
        "no_attestation_bundles",
        "no_attestations_in_bundle",
        "schema_error:<detail>"
      ]
    },
    "artifact_bytes_match_index": {
      "admit_when": "The probe downloads the artifact and the SHA-256 it computes over those bytes equals the digest the resolver recorded from the index. The digest compared against the signature in the next limb is this computed one, never a digest quoted back from an API.",
      "refuse_reasons": [
        "download_failed:<detail>",
        "digest_mismatch",
        "artifact_over_size_cap"
      ]
    },
    "signature_verifies": {
      "admit_when": "Sigstore verification of the DSSE envelope succeeds against the Fulcio certificate chain and the Rekor transparency log, and the subject digest inside the signed statement equals the digest this probe computed from the downloaded bytes.",
      "refuse_reasons": [
        "verification_error:<detail>",
        "verifier_unavailable",
        "subject_digest_mismatch"
      ]
    },
    "signer_matches_declared_source": {
      "admit_when": "The source repository the project declares in its own PyPI metadata is the same repository the attestation was signed from. This is the limb that makes the identity check non-circular in one direction: the signer claim and the source claim are set by the maintainer in two different places and are compared against each other.",
      "refuse_reasons": [
        "no_source_repo_declared_on_pypi",
        "signer_repo_mismatch:<declared>!=<signed>",
        "non_github_publisher_unmatched:<kind>"
      ]
    },
    "predicate_is_slsa_build_provenance": {
      "admit_when": "The verified statement carries predicate type https://slsa.dev/provenance/v1, meaning it describes how the artifact was built. A predicate of https://docs.pypi.org/attestations/publish/v1 refuses here: it is a publish attestation, which binds the file to an uploading workflow and says nothing about the build.",
      "refuse_reasons": [
        "publish_attestation_not_build_provenance",
        "other_predicate:<type>"
      ]
    },
    "attestation_in_transparency_log": {
      "admit_when": "The verification material carries at least one transparency log entry, so the signature is discoverable by a third party in Rekor and not only by whoever was handed the bundle.",
      "refuse_reasons": [
        "no_transparency_log_entry"
      ]
    }
  },
  "admit_rules": {
    "must_admit": "Every MUST limb is ok: the requirement resolves, an attestation exists for the exact artifact, the bundle is well formed, the bytes hash to the digest the index recorded, and the signature verifies against that computed digest.",
    "full_admit": "must_admit, and additionally the signer repository matches the source repository the project declares, the predicate is SLSA build provenance rather than a publish attestation, and the signature is in a transparency log.",
    "refuse": "Any limb of the relevant level failed. The receipt names the limb and the reason; there is no aggregate score and no badge."
  },
  "statuses": {
    "ok": "limb observed to pass",
    "fail": "limb observed to fail; counts against the package",
    "not_applicable": "limb cannot apply to this package",
    "absent": "an optional artifact was not published; not counted as a failure",
    "not_reached": "an earlier limb failed, so this one was never observed; it is neither a pass nor an exemption"
  },
  "predicate_types_of_interest": {
    "slsa_build_provenance": "https://slsa.dev/provenance/v1",
    "pypi_publish_attestation": "https://docs.pypi.org/attestations/publish/v1"
  },
  "expected_packages": [
    {
      "package": "anthropic",
      "normalized_name": "anthropic",
      "version": "0.120.2",
      "role": "declared_root",
      "declared_line": "anthropic>=0.40",
      "artifact": "anthropic-0.120.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/63/af/0f5db57b9397a0f3b7fc204cbef143401a7cadaf982330f97f1ce3d39f34/anthropic-0.120.2-py3-none-any.whl",
      "artifact_sha256_per_index": "0f0bc2b381dc0eb41c8d886b815d79c2041cd2374f83aed36f574b6dc9c579c1",
      "resolvable": true
    },
    {
      "package": "beautifulsoup4",
      "normalized_name": "beautifulsoup4",
      "version": "4.15.0",
      "role": "declared_root",
      "declared_line": "beautifulsoup4>=4.12",
      "artifact": "beautifulsoup4-4.15.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl",
      "artifact_sha256_per_index": "d6f88de62e1d4e38ecb1077eb9724cd0eff29d2a08ca16a401e9b9e93f117cf9",
      "resolvable": true
    },
    {
      "package": "edgartools",
      "normalized_name": "edgartools",
      "version": "5.44.1",
      "role": "declared_root",
      "declared_line": "edgartools>=5.30,<6",
      "artifact": "edgartools-5.44.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/da/55/a46bc8133e1dc39b40875f99ad36128bb85bd0c9f62bce6ddb6b36ce908b/edgartools-5.44.1-py3-none-any.whl",
      "artifact_sha256_per_index": "9fa8ef10d4ad36e0a14e1ae146a278f72e5471606d0701bc969c7ae8fd16fa8d",
      "resolvable": true
    },
    {
      "package": "helixhash",
      "normalized_name": "helixhash",
      "version": null,
      "role": "declared_root",
      "declared_line": "helixhash>=1.0",
      "artifact": null,
      "artifact_url": null,
      "artifact_sha256_per_index": null,
      "resolvable": false,
      "unresolvable_reason": "declared_range_unsatisfiable_on_pypi",
      "latest_published_on_pypi": "0.1.1",
      "published_versions_on_pypi": [
        "0.1.1"
      ],
      "optional_dependency": false
    },
    {
      "package": "networkx",
      "normalized_name": "networkx",
      "version": "3.6.1",
      "role": "declared_root",
      "declared_line": "networkx>=3.2,<4",
      "artifact": "networkx-3.6.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl",
      "artifact_sha256_per_index": "d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762",
      "resolvable": true
    },
    {
      "package": "numpy",
      "normalized_name": "numpy",
      "version": "2.4.6",
      "role": "declared_root",
      "declared_line": "numpy>=2.0",
      "artifact": "numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/ad/40/40a40ee0ddf7ceb782c49af278894b686e586d65d8c1889c8b5da01a3d7d/numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl",
      "artifact_sha256_per_index": "4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8",
      "resolvable": true
    },
    {
      "package": "pdfplumber",
      "normalized_name": "pdfplumber",
      "version": "0.11.10",
      "role": "declared_root",
      "declared_line": "pdfplumber>=0.11",
      "artifact": "pdfplumber-0.11.10-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/a2/9a/07d658e1e7fad860f1c541ab941348125dbdab773be3a0afaf32361866c7/pdfplumber-0.11.10-py3-none-any.whl",
      "artifact_sha256_per_index": "7741ea81bf165b474b153e6789d10d18e06b6ddcf3ec84289c3ef2fed6802580",
      "resolvable": true
    },
    {
      "package": "pydantic",
      "normalized_name": "pydantic",
      "version": "2.13.4",
      "role": "declared_root",
      "declared_line": "pydantic>=2.12",
      "artifact": "pydantic-2.13.4-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl",
      "artifact_sha256_per_index": "45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba",
      "resolvable": true
    },
    {
      "package": "python-dotenv",
      "normalized_name": "python-dotenv",
      "version": "1.2.2",
      "role": "declared_root",
      "declared_line": "python-dotenv>=1.0",
      "artifact": "python_dotenv-1.2.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl",
      "artifact_sha256_per_index": "1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a",
      "resolvable": true
    },
    {
      "package": "requests",
      "normalized_name": "requests",
      "version": "2.34.2",
      "role": "declared_root",
      "declared_line": "requests>=2.32",
      "artifact": "requests-2.34.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl",
      "artifact_sha256_per_index": "2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0",
      "resolvable": true
    },
    {
      "package": "scipy",
      "normalized_name": "scipy",
      "version": "1.17.1",
      "role": "declared_root",
      "declared_line": "scipy>=1.13",
      "artifact": "scipy-1.17.1-cp311-cp311-macosx_14_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/6d/ee/18146b7757ed4976276b9c9819108adbc73c5aad636e5353e20746b73069/scipy-1.17.1-cp311-cp311-macosx_14_0_arm64.whl",
      "artifact_sha256_per_index": "a3472cfbca0a54177d0faa68f697d8ba4c80bbdc19908c3465556d9f7efce9ee",
      "resolvable": true
    },
    {
      "package": "tweepy",
      "normalized_name": "tweepy",
      "version": "4.17.0",
      "role": "declared_root",
      "declared_line": "tweepy>=4.14",
      "artifact": "tweepy-4.17.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/2e/01/c23575054cf6ca9590562ea6f32e75af1ea812d9670ac3f334bbcd50b571/tweepy-4.17.0-py3-none-any.whl",
      "artifact_sha256_per_index": "1244d7f2959091542f8e4a2c0c4256294e3beb69c0aa26eaf634b126d81eee49",
      "resolvable": true
    },
    {
      "package": "web3",
      "normalized_name": "web3",
      "version": "7.16.0",
      "role": "declared_root",
      "declared_line": "web3>=7.0",
      "artifact": "web3-7.16.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/2c/f9/5345c13f8469f3ce344b4d9934c0387b83a49420192482111e9c1fa95ec2/web3-7.16.0-py3-none-any.whl",
      "artifact_sha256_per_index": "760b2718c473980d70708c3593d9d28395db4b482f45e38a63a36fa028178f51",
      "resolvable": true
    },
    {
      "package": "witnessfield",
      "normalized_name": "witnessfield",
      "version": null,
      "role": "declared_root",
      "declared_line": "witnessfield>=1.0",
      "artifact": null,
      "artifact_url": null,
      "artifact_sha256_per_index": null,
      "resolvable": false,
      "unresolvable_reason": "project_not_on_pypi",
      "latest_published_on_pypi": null,
      "published_versions_on_pypi": [],
      "optional_dependency": false
    },
    {
      "package": "aiofiles",
      "normalized_name": "aiofiles",
      "version": "25.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "aiofiles-25.1.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl",
      "artifact_sha256_per_index": "abe311e527c862958650f9438e859c1fa7568a141b22abcd015e120e86a85695",
      "resolvable": true
    },
    {
      "package": "aiohappyeyeballs",
      "normalized_name": "aiohappyeyeballs",
      "version": "2.7.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "aiohappyeyeballs-2.7.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/71/43/1947f06babed6b3f1d7f38b0c767f52df66bfb2bc10b468c4a7de9eceff2/aiohappyeyeballs-2.7.1-py3-none-any.whl",
      "artifact_sha256_per_index": "9243213661e29250eb41368e5daa826fc017156c3b8a11440826b2e3ed376472",
      "resolvable": true
    },
    {
      "package": "aiohttp",
      "normalized_name": "aiohttp",
      "version": "3.14.3",
      "role": "transitive",
      "declared_line": null,
      "artifact": "aiohttp-3.14.3-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/b9/3f/01264f820ee2e3712a827892b1cd6ff80f3300c1fcbffbb45714a915d47a/aiohttp-3.14.3-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "21c016079415ed3fd676963e9793700a566d85dbbd6bfc564b9b2d209147dcc8",
      "resolvable": true
    },
    {
      "package": "aiosignal",
      "normalized_name": "aiosignal",
      "version": "1.4.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "aiosignal-1.4.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl",
      "artifact_sha256_per_index": "053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e",
      "resolvable": true
    },
    {
      "package": "annotated-types",
      "normalized_name": "annotated-types",
      "version": "0.8.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "annotated_types-0.8.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl",
      "artifact_sha256_per_index": "f072f4d804ea359e4eaf198b1af7a8b0943881a87f31bb764f8bf219bb9419e0",
      "resolvable": true
    },
    {
      "package": "anyio",
      "normalized_name": "anyio",
      "version": "4.14.2",
      "role": "transitive",
      "declared_line": null,
      "artifact": "anyio-4.14.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl",
      "artifact_sha256_per_index": "9f505dda5ac9f0c8309b5e8bd445a8c2bf7246f3ce950121e45ea15bc41d1494",
      "resolvable": true
    },
    {
      "package": "attrs",
      "normalized_name": "attrs",
      "version": "26.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "attrs-26.1.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl",
      "artifact_sha256_per_index": "c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309",
      "resolvable": true
    },
    {
      "package": "bitarray",
      "normalized_name": "bitarray",
      "version": "3.10.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "bitarray-3.10.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/7f/2f/2189dcd9e7cc2b02098ae903b3a5dadda0d41a9e426b1e8ed667d4804baa/bitarray-3.10.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "05bd497036fefa4653bc73875ca62b22e3ce2d1619aac0ab989235374ad2623c",
      "resolvable": true
    },
    {
      "package": "certifi",
      "normalized_name": "certifi",
      "version": "2026.7.22",
      "role": "transitive",
      "declared_line": null,
      "artifact": "certifi-2026.7.22-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl",
      "artifact_sha256_per_index": "62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775",
      "resolvable": true
    },
    {
      "package": "cffi",
      "normalized_name": "cffi",
      "version": "2.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "cffi-2.1.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/ea/dd/e3b0baa2d3d6a857ac72b7efbf18e32e487c9cdafcc13049ad765495b15e/cffi-2.1.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "f5bce581e6b8c235e566a14768a943b172ada3ed73537bb0c0be1edee312d4e7",
      "resolvable": true
    },
    {
      "package": "charset-normalizer",
      "normalized_name": "charset-normalizer",
      "version": "3.4.9",
      "role": "transitive",
      "declared_line": null,
      "artifact": "charset_normalizer-3.4.9-cp311-cp311-macosx_10_9_universal2.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/0b/e3/85ec501f206fb049259288c1f3506e53876937fb00edb47009348e66756b/charset_normalizer-3.4.9-cp311-cp311-macosx_10_9_universal2.whl",
      "artifact_sha256_per_index": "0e94703ec9684807f20cfb5eed95c70f67f2a8f21ad620146d7b5a13677b93e5",
      "resolvable": true
    },
    {
      "package": "ckzg",
      "normalized_name": "ckzg",
      "version": "2.1.8",
      "role": "transitive",
      "declared_line": null,
      "artifact": "ckzg-2.1.8-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/7a/bb/925bf38dfb4ab47857a6f5cfc934e9c0aa3a375f0441e4818240d012e9bc/ckzg-2.1.8-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "adb4868ec73547d040d8551538dc00ebc3822a758a7fb2b762735e097556c13b",
      "resolvable": true
    },
    {
      "package": "cryptography",
      "normalized_name": "cryptography",
      "version": "50.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/c5/5c/59086b4aac5e879d38ddbcf74e4be7ade89cebc3eb199a55da998c3bb46a/cryptography-50.0.0-cp311-abi3-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "031e2d5dd4bb9caa3ca9c82e5a197fd8ae680232cee62603d1a813f3f07e3d03",
      "resolvable": true
    },
    {
      "package": "cytoolz",
      "normalized_name": "cytoolz",
      "version": "1.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "cytoolz-1.1.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/09/aa/e2b2ee9fc684867e817640764ea5807f9d25aa1e7bdba02dd4b249aab0f7/cytoolz-1.1.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "653cb18c4fc5d8a8cfce2bce650aabcbe82957cd0536827367d10810566d5294",
      "resolvable": true
    },
    {
      "package": "distro",
      "normalized_name": "distro",
      "version": "1.9.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "distro-1.9.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl",
      "artifact_sha256_per_index": "7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2",
      "resolvable": true
    },
    {
      "package": "docstring_parser",
      "normalized_name": "docstring-parser",
      "version": "0.18.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "docstring_parser-0.18.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/a7/5f/ed01f9a3cdffbd5a008556fc7b2a08ddb1cc6ace7effa7340604b1d16699/docstring_parser-0.18.0-py3-none-any.whl",
      "artifact_sha256_per_index": "b3fcbed555c47d8479be0796ef7e19c2670d428d72e96da63f3a40122860374b",
      "resolvable": true
    },
    {
      "package": "eth_abi",
      "normalized_name": "eth-abi",
      "version": "5.2.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_abi-5.2.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/7a/b4/2f3982c4cbcbf5eeb6aec62df1533c0e63c653b3021ff338d44944405676/eth_abi-5.2.0-py3-none-any.whl",
      "artifact_sha256_per_index": "17abe47560ad753f18054f5b3089fcb588f3e3a092136a416b6c1502cb7e8877",
      "resolvable": true
    },
    {
      "package": "eth-account",
      "normalized_name": "eth-account",
      "version": "0.13.7",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_account-0.13.7-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/46/18/088fb250018cbe665bc2111974301b2d59f294a565aff7564c4df6878da2/eth_account-0.13.7-py3-none-any.whl",
      "artifact_sha256_per_index": "39727de8c94d004ff61d10da7587509c04d2dc7eac71e04830135300bdfc6d24",
      "resolvable": true
    },
    {
      "package": "eth-hash",
      "normalized_name": "eth-hash",
      "version": "0.8.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_hash-0.8.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/87/87/b36792150ca0b28e4df683a34be15a61461ca0e349e5b5cf3ec8f694edb9/eth_hash-0.8.0-py3-none-any.whl",
      "artifact_sha256_per_index": "523718a51b369ab89866b929a5c93c52978cd866ea309192ad980dd8271f9fac",
      "resolvable": true
    },
    {
      "package": "eth-keyfile",
      "normalized_name": "eth-keyfile",
      "version": "0.8.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_keyfile-0.8.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/88/fc/48a586175f847dd9e05e5b8994d2fe8336098781ec2e9836a2ad94280281/eth_keyfile-0.8.1-py3-none-any.whl",
      "artifact_sha256_per_index": "65387378b82fe7e86d7cb9f8d98e6d639142661b2f6f490629da09fddbef6d64",
      "resolvable": true
    },
    {
      "package": "eth-keys",
      "normalized_name": "eth-keys",
      "version": "0.7.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_keys-0.7.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/4d/25/0ae00f2b0095e559d61ad3dc32171bd5a29dfd95ab04b4edd641f7c75f72/eth_keys-0.7.0-py3-none-any.whl",
      "artifact_sha256_per_index": "b0cdda8ffe8e5ba69c7c5ca33f153828edcace844f67aabd4542d7de38b159cf",
      "resolvable": true
    },
    {
      "package": "eth-rlp",
      "normalized_name": "eth-rlp",
      "version": "2.2.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_rlp-2.2.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/99/3b/57efe2bc2df0980680d57c01a36516cd3171d2319ceb30e675de19fc2cc5/eth_rlp-2.2.0-py3-none-any.whl",
      "artifact_sha256_per_index": "5692d595a741fbaef1203db6a2fedffbd2506d31455a6ad378c8449ee5985c47",
      "resolvable": true
    },
    {
      "package": "eth-typing",
      "normalized_name": "eth-typing",
      "version": "6.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_typing-6.0.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/aa/0d/e756622fab29f404d846d7464f929d642a7ee6eff5b38bcc79e7c64ac630/eth_typing-6.0.0-py3-none-any.whl",
      "artifact_sha256_per_index": "ee74fb641eb36dd885e1c42c2a3055314efa532b3e71480816df70a94d35cfb9",
      "resolvable": true
    },
    {
      "package": "eth-utils",
      "normalized_name": "eth-utils",
      "version": "6.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "eth_utils-6.0.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/53/45/a20b907227b9d1aea2e36f7b12818d055629ca9bc65fc282b45738f28ca3/eth_utils-6.0.0-py3-none-any.whl",
      "artifact_sha256_per_index": "63cf48ee32c45541cb5748751909a8345c470432fb6f0fed4bd7c53fd6400469",
      "resolvable": true
    },
    {
      "package": "filelock",
      "normalized_name": "filelock",
      "version": "3.32.2",
      "role": "transitive",
      "declared_line": null,
      "artifact": "filelock-3.32.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/c1/e8/72f8cef9fdfeffe06213fe8508039396ee48daa0e3259457ed766173bfd6/filelock-3.32.2-py3-none-any.whl",
      "artifact_sha256_per_index": "87dd94cf281e586d135fa51132b8e3d9a598b316e90377a288663c9321036c82",
      "resolvable": true
    },
    {
      "package": "frozenlist",
      "normalized_name": "frozenlist",
      "version": "1.8.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/6e/ef/0e8f1fe32f8a53dd26bdd1f9347efe0778b0fddf62789ea683f4cc7d787d/frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93",
      "resolvable": true
    },
    {
      "package": "h11",
      "normalized_name": "h11",
      "version": "0.16.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "h11-0.16.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl",
      "artifact_sha256_per_index": "63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86",
      "resolvable": true
    },
    {
      "package": "hexbytes",
      "normalized_name": "hexbytes",
      "version": "1.3.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "hexbytes-1.3.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/8d/e0/3b31492b1c89da3c5a846680517871455b30c54738486fc57ac79a5761bd/hexbytes-1.3.1-py3-none-any.whl",
      "artifact_sha256_per_index": "da01ff24a1a9a2b1881c4b85f0e9f9b0f51b526b379ffa23832ae7899d29c2c7",
      "resolvable": true
    },
    {
      "package": "httpcore",
      "normalized_name": "httpcore",
      "version": "1.0.9",
      "role": "transitive",
      "declared_line": null,
      "artifact": "httpcore-1.0.9-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl",
      "artifact_sha256_per_index": "2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55",
      "resolvable": true
    },
    {
      "package": "httpx",
      "normalized_name": "httpx",
      "version": "0.28.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "httpx-0.28.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl",
      "artifact_sha256_per_index": "d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad",
      "resolvable": true
    },
    {
      "package": "httpxthrottlecache",
      "normalized_name": "httpxthrottlecache",
      "version": "0.3.5",
      "role": "transitive",
      "declared_line": null,
      "artifact": "httpxthrottlecache-0.3.5-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/df/85/834c5837b9da6faa5cf895d448c41afb357c6d6d4d4bff508bb6e1fecab3/httpxthrottlecache-0.3.5-py3-none-any.whl",
      "artifact_sha256_per_index": "e1f0c8ce043a96d3a88ac518c504ede4c63f1aade12d248f8fec386c662508cd",
      "resolvable": true
    },
    {
      "package": "humanize",
      "normalized_name": "humanize",
      "version": "4.16.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "humanize-4.16.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/b0/aa/0b7365d30fed43e7a3449aba1fe20a0a7174d9cf13e282af4e69ac825441/humanize-4.16.0-py3-none-any.whl",
      "artifact_sha256_per_index": "353eb2f34c09d098b2880eee8bef21832eae6d174f48c5762fff7e5fcb74d01d",
      "resolvable": true
    },
    {
      "package": "idna",
      "normalized_name": "idna",
      "version": "3.18",
      "role": "transitive",
      "declared_line": null,
      "artifact": "idna-3.18-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl",
      "artifact_sha256_per_index": "7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2",
      "resolvable": true
    },
    {
      "package": "Jinja2",
      "normalized_name": "jinja2",
      "version": "3.1.6",
      "role": "transitive",
      "declared_line": null,
      "artifact": "jinja2-3.1.6-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl",
      "artifact_sha256_per_index": "85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67",
      "resolvable": true
    },
    {
      "package": "jiter",
      "normalized_name": "jiter",
      "version": "0.16.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "jiter-0.16.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/c8/e3/97c6c3562c077f6247d6e6ce5c82562500b6316c0d928e97e106b7a1321a/jiter-0.16.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "c90c0f63df322be920eda6ce622e3083d8906ba267f8220fe7873213b8b4430e",
      "resolvable": true
    },
    {
      "package": "lxml",
      "normalized_name": "lxml",
      "version": "6.1.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "lxml-6.1.1-cp311-cp311-macosx_10_9_universal2.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/62/b0/83f481780d1548750b8ce2ec824073deef2f452d9cd1a6faff8507e3d16d/lxml-6.1.1-cp311-cp311-macosx_10_9_universal2.whl",
      "artifact_sha256_per_index": "53b7d2b7a10b1c35c0a5e21e9224accf60c1bbfba523990732e521b2b73adef2",
      "resolvable": true
    },
    {
      "package": "markdown-it-py",
      "normalized_name": "markdown-it-py",
      "version": "4.2.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "markdown_it_py-4.2.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl",
      "artifact_sha256_per_index": "9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a",
      "resolvable": true
    },
    {
      "package": "MarkupSafe",
      "normalized_name": "markupsafe",
      "version": "3.0.3",
      "role": "transitive",
      "declared_line": null,
      "artifact": "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a",
      "resolvable": true
    },
    {
      "package": "mdurl",
      "normalized_name": "mdurl",
      "version": "0.1.2",
      "role": "transitive",
      "declared_line": null,
      "artifact": "mdurl-0.1.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl",
      "artifact_sha256_per_index": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
      "resolvable": true
    },
    {
      "package": "multidict",
      "normalized_name": "multidict",
      "version": "6.7.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/dd/a4/d45caf2b97b035c57267791ecfaafbd59c68212004b3842830954bb4b02e/multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855",
      "resolvable": true
    },
    {
      "package": "nest-asyncio",
      "normalized_name": "nest-asyncio",
      "version": "1.6.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "nest_asyncio-1.6.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl",
      "artifact_sha256_per_index": "87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c",
      "resolvable": true
    },
    {
      "package": "oauthlib",
      "normalized_name": "oauthlib",
      "version": "3.3.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "oauthlib-3.3.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl",
      "artifact_sha256_per_index": "88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1",
      "resolvable": true
    },
    {
      "package": "orjson",
      "normalized_name": "orjson",
      "version": "3.11.9",
      "role": "transitive",
      "declared_line": null,
      "artifact": "orjson-3.11.9-cp311-cp311-macosx_15_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/16/fa/9d54b07cb3f3b0bfd57841478e42d7a0ece4a9f49f9907eecf5a45461687/orjson-3.11.9-cp311-cp311-macosx_15_0_arm64.whl",
      "artifact_sha256_per_index": "3ebca4179031ee716ed076ffadc29428e900512f6fccee8614c9983157fcf19c",
      "resolvable": true
    },
    {
      "package": "pandas",
      "normalized_name": "pandas",
      "version": "3.0.5",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pandas-3.0.5-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/31/b4/0eafac990a431561187694126de01f9b12559549b4d86360c0c4bd870fde/pandas-3.0.5-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "71ecc8fb7ed1a7aa4392316b5309a6347e8e7f832f38fd897846b3a1457a9298",
      "resolvable": true
    },
    {
      "package": "parsimonious",
      "normalized_name": "parsimonious",
      "version": "0.10.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "parsimonious-0.10.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/aa/0f/c8b64d9b54ea631fcad4e9e3c8dbe8c11bb32a623be94f22974c88e71eaf/parsimonious-0.10.0-py3-none-any.whl",
      "artifact_sha256_per_index": "982ab435fabe86519b57f6b35610aa4e4e977e9f02a14353edf4bbc75369fc0f",
      "resolvable": true
    },
    {
      "package": "pdfminer.six",
      "normalized_name": "pdfminer-six",
      "version": "20260107",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pdfminer_six-20260107-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/20/8b/28c4eaec9d6b036a52cb44720408f26b1a143ca9bce76cc19e8f5de00ab4/pdfminer_six-20260107-py3-none-any.whl",
      "artifact_sha256_per_index": "366585ba97e80dffa8f00cebe303d2f381884d8637af4ce422f1df3ef38111a9",
      "resolvable": true
    },
    {
      "package": "pillow",
      "normalized_name": "pillow",
      "version": "12.3.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pillow-12.3.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/b2/5b/a02d30018abd97ced9f5a6c63d28597694a00d066516b9c1c6de45859fc9/pillow-12.3.0-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "37d6d0a00072fd2948eb22bce7e1475f34569d90c87c59f7a2ec59541b77f7a6",
      "resolvable": true
    },
    {
      "package": "propcache",
      "normalized_name": "propcache",
      "version": "0.5.2",
      "role": "transitive",
      "declared_line": null,
      "artifact": "propcache-0.5.2-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/15/a8/8ede85d6aa1f79fc7dc2f8fd2c8d65920b8272c3892903c8a1affde48cfb/propcache-0.5.2-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "c6844ba6364fb12f403928a82cfd295ab103a2b315c77c747b2dbe4a41894ea7",
      "resolvable": true
    },
    {
      "package": "pyarrow",
      "normalized_name": "pyarrow",
      "version": "25.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pyarrow-25.0.0-cp311-cp311-macosx_12_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/a7/98/ae2b5acf9876dbeffa6f320776242c52caab062df55c8ac5501ed2679e74/pyarrow-25.0.0-cp311-cp311-macosx_12_0_arm64.whl",
      "artifact_sha256_per_index": "2e3b6544e26e393fe2cd530f523e36c1c8d3c345bbbb60cca3fd866be8322517",
      "resolvable": true
    },
    {
      "package": "pycparser",
      "normalized_name": "pycparser",
      "version": "3.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pycparser-3.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl",
      "artifact_sha256_per_index": "b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992",
      "resolvable": true
    },
    {
      "package": "pycryptodome",
      "normalized_name": "pycryptodome",
      "version": "3.23.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/db/6c/a1f71542c969912bb0e106f64f60a56cc1f0fabecf9396f45accbe63fa68/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl",
      "artifact_sha256_per_index": "187058ab80b3281b1de11c2e6842a357a1f71b42cb1e15bce373f3d238135c27",
      "resolvable": true
    },
    {
      "package": "pydantic_core",
      "normalized_name": "pydantic-core",
      "version": "2.46.4",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c",
      "resolvable": true
    },
    {
      "package": "Pygments",
      "normalized_name": "pygments",
      "version": "2.20.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pygments-2.20.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl",
      "artifact_sha256_per_index": "81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176",
      "resolvable": true
    },
    {
      "package": "pypdfium2",
      "normalized_name": "pypdfium2",
      "version": "5.12.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pypdfium2-5.12.1-py3-none-macosx_13_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/e2/a8/d7a61700db3022792b28bce5264be90a7d2e7104998362af6b93766f50b2/pypdfium2-5.12.1-py3-none-macosx_13_0_arm64.whl",
      "artifact_sha256_per_index": "66a9ed40d70a5d728cd42148fecb9d7a0917c6161d6bb67c844093a4ed1df089",
      "resolvable": true
    },
    {
      "package": "pyrate-limiter",
      "normalized_name": "pyrate-limiter",
      "version": "4.4.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pyrate_limiter-4.4.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/2b/77/2b5ea2e5e343fd7f74ba9c50a282d7cb66d1be3d12bd647510338d78fcf1/pyrate_limiter-4.4.0-py3-none-any.whl",
      "artifact_sha256_per_index": "f738dfa3c7ac1222a5ea3d31e00cfd31b5592b13ade4077afe9e8ac6293381f5",
      "resolvable": true
    },
    {
      "package": "python-dateutil",
      "normalized_name": "python-dateutil",
      "version": "2.9.0.post0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "python_dateutil-2.9.0.post0-py2.py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl",
      "artifact_sha256_per_index": "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427",
      "resolvable": true
    },
    {
      "package": "pyunormalize",
      "normalized_name": "pyunormalize",
      "version": "17.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "pyunormalize-17.0.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/92/80/61512483dc509e3ae8a42fb143479d1e406ce1d91f8f08d538a3dde39c6d/pyunormalize-17.0.0-py3-none-any.whl",
      "artifact_sha256_per_index": "f0d93b076f938db2b26d319d04f2b58505d1cd7a80b5b72badbe7d1aa4d2a31c",
      "resolvable": true
    },
    {
      "package": "rank-bm25",
      "normalized_name": "rank-bm25",
      "version": "0.2.2",
      "role": "transitive",
      "declared_line": null,
      "artifact": "rank_bm25-0.2.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/2a/21/f691fb2613100a62b3fa91e9988c991e9ca5b89ea31c0d3152a3210344f9/rank_bm25-0.2.2-py3-none-any.whl",
      "artifact_sha256_per_index": "7bd4a95571adadfc271746fa146a4bcfd89c0cf731e49c3d1ad863290adbe8ae",
      "resolvable": true
    },
    {
      "package": "RapidFuzz",
      "normalized_name": "rapidfuzz",
      "version": "3.14.5",
      "role": "transitive",
      "declared_line": null,
      "artifact": "rapidfuzz-3.14.5-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/9e/89/c2557e37531d03465193bff0ab9de70b468420a807d71a26a65100635459/rapidfuzz-3.14.5-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "5ab449c9abd0d4e1f8145dce0798a4c822a1a1933d613c764a641bea88b8bdab",
      "resolvable": true
    },
    {
      "package": "regex",
      "normalized_name": "regex",
      "version": "2026.7.19",
      "role": "transitive",
      "declared_line": null,
      "artifact": "regex-2026.7.19-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/41/2e/2360c41d8080a3d9ec7e5c90fad6eab3b50192869d10e9a5609e48c8177b/regex-2026.7.19-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "90c633e7e8d6bf4e992b8b36ce69e018f834b641dd6de8cea6d78c06ffa119c5",
      "resolvable": true
    },
    {
      "package": "requests-oauthlib",
      "normalized_name": "requests-oauthlib",
      "version": "2.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "requests_oauthlib-2.0.0-py2.py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl",
      "artifact_sha256_per_index": "7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36",
      "resolvable": true
    },
    {
      "package": "rich",
      "normalized_name": "rich",
      "version": "15.0.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "rich-15.0.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl",
      "artifact_sha256_per_index": "33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb",
      "resolvable": true
    },
    {
      "package": "rlp",
      "normalized_name": "rlp",
      "version": "4.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "rlp-4.1.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/99/fb/e4c0ced9893b84ac95b7181d69a9786ce5879aeb3bbbcbba80a164f85d6a/rlp-4.1.0-py3-none-any.whl",
      "artifact_sha256_per_index": "8eca394c579bad34ee0b937aecb96a57052ff3716e19c7a578883e767bc5da6f",
      "resolvable": true
    },
    {
      "package": "six",
      "normalized_name": "six",
      "version": "1.17.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "six-1.17.0-py2.py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl",
      "artifact_sha256_per_index": "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274",
      "resolvable": true
    },
    {
      "package": "sniffio",
      "normalized_name": "sniffio",
      "version": "1.3.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "sniffio-1.3.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl",
      "artifact_sha256_per_index": "2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2",
      "resolvable": true
    },
    {
      "package": "soupsieve",
      "normalized_name": "soupsieve",
      "version": "2.9.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "soupsieve-2.9.1-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/0f/2c/437fe806897c2d6cfdc3ee43a18da8bf8e568530a4ae9bac781541ca9896/soupsieve-2.9.1-py3-none-any.whl",
      "artifact_sha256_per_index": "4f4477399246b7a0c720a88ca2454b11cd6bb9ae4c9d170140786e916776c14c",
      "resolvable": true
    },
    {
      "package": "stamina",
      "normalized_name": "stamina",
      "version": "26.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "stamina-26.1.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/1d/f0/1ff90a1d1dd02de23feafdf9dffaecef3958348be5c192df56670ccb4f86/stamina-26.1.0-py3-none-any.whl",
      "artifact_sha256_per_index": "62e06829bec87c06d4cafde520b32a6097d1017c378a9eb63253c5bf5ebbbb88",
      "resolvable": true
    },
    {
      "package": "tabulate",
      "normalized_name": "tabulate",
      "version": "0.10.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "tabulate-0.10.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl",
      "artifact_sha256_per_index": "f0b0622e567335c8fabaaa659f1b33bcb6ddfe2e496071b743aa113f8774f2d3",
      "resolvable": true
    },
    {
      "package": "tenacity",
      "normalized_name": "tenacity",
      "version": "9.1.4",
      "role": "transitive",
      "declared_line": null,
      "artifact": "tenacity-9.1.4-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl",
      "artifact_sha256_per_index": "6095a360c919085f28c6527de529e76a06ad89b23659fa881ae0649b867a9d55",
      "resolvable": true
    },
    {
      "package": "textdistance",
      "normalized_name": "textdistance",
      "version": "4.6.3",
      "role": "transitive",
      "declared_line": null,
      "artifact": "textdistance-4.6.3-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/c6/c2/c62601c858010b0513a6434b9be19bd740533a6e861eddfd30b7258d92a0/textdistance-4.6.3-py3-none-any.whl",
      "artifact_sha256_per_index": "0cb1b2cc8e3339ddc3e0f8c870e49fb49de6ecc42a718917308b3c971f34aa56",
      "resolvable": true
    },
    {
      "package": "toolz",
      "normalized_name": "toolz",
      "version": "1.1.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "toolz-1.1.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl",
      "artifact_sha256_per_index": "15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8",
      "resolvable": true
    },
    {
      "package": "tqdm",
      "normalized_name": "tqdm",
      "version": "4.70.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "tqdm-4.70.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl",
      "artifact_sha256_per_index": "7f585706bfddbdebf89daac705b2dfcc16890130727d3197ca62c732b4310953",
      "resolvable": true
    },
    {
      "package": "truststore",
      "normalized_name": "truststore",
      "version": "0.10.4",
      "role": "transitive",
      "declared_line": null,
      "artifact": "truststore-0.10.4-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl",
      "artifact_sha256_per_index": "adaeaecf1cbb5f4de3b1959b42d41f6fab57b2b1666adb59e89cb0b53361d981",
      "resolvable": true
    },
    {
      "package": "types-requests",
      "normalized_name": "types-requests",
      "version": "2.33.0.20260712",
      "role": "transitive",
      "declared_line": null,
      "artifact": "types_requests-2.33.0.20260712-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/62/e7/010c87f559e216d83f9dc51e939633fd0d0ead3377340181ab0e223cd3b5/types_requests-2.33.0.20260712-py3-none-any.whl",
      "artifact_sha256_per_index": "de027e28c171d3da529689cbfa023b0b4eab188c8dfa22fd834eebd2cee6e7bb",
      "resolvable": true
    },
    {
      "package": "typing_extensions",
      "normalized_name": "typing-extensions",
      "version": "4.16.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "typing_extensions-4.16.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl",
      "artifact_sha256_per_index": "481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8",
      "resolvable": true
    },
    {
      "package": "typing-inspection",
      "normalized_name": "typing-inspection",
      "version": "0.4.2",
      "role": "transitive",
      "declared_line": null,
      "artifact": "typing_inspection-0.4.2-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl",
      "artifact_sha256_per_index": "4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7",
      "resolvable": true
    },
    {
      "package": "Unidecode",
      "normalized_name": "unidecode",
      "version": "1.4.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "Unidecode-1.4.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl",
      "artifact_sha256_per_index": "c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021",
      "resolvable": true
    },
    {
      "package": "urllib3",
      "normalized_name": "urllib3",
      "version": "2.7.0",
      "role": "transitive",
      "declared_line": null,
      "artifact": "urllib3-2.7.0-py3-none-any.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl",
      "artifact_sha256_per_index": "9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897",
      "resolvable": true
    },
    {
      "package": "websockets",
      "normalized_name": "websockets",
      "version": "15.0.1",
      "role": "transitive",
      "declared_line": null,
      "artifact": "websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905",
      "resolvable": true
    },
    {
      "package": "yarl",
      "normalized_name": "yarl",
      "version": "1.24.5",
      "role": "transitive",
      "declared_line": null,
      "artifact": "yarl-1.24.5-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_url": "https://files.pythonhosted.org/packages/ce/97/10b939c44d7b28d1dbc389cfc7012306d1ea8dba01eaef44b39fffaee52a/yarl-1.24.5-cp311-cp311-macosx_11_0_arm64.whl",
      "artifact_sha256_per_index": "709f1efed56c4a145793c046cd4939f9959bcd818979a787b77d8e09c57a0840",
      "resolvable": true
    }
  ],
  "predictions": {
    "disclosure": "Three packages were fetched while the probe was being written: networkx, pydantic and cryptography. All three served a provenance object and one of them was verified end to end. The predictions below are written after those three and before the other packages in this list are touched.",
    "stated_before_the_run": [
      "Fewer than half of these distributions will serve any PEP 740 attestation.",
      "No distribution in this set will carry a SLSA build provenance predicate. The ones that are attested at all will carry the PyPI publish attestation, which binds an upload to a workflow and does not describe the build.",
      "Both host published roots will refuse at the first limb, because the engine declares versions of them that the public index cannot satisfy.",
      "Every attestation that verifies will also be in the transparency log, because PyPI requires it."
    ],
    "how_to_score_these": "Each prediction is either met or not by the published summary. A missed prediction stays in this file; it is not edited after the run."
  },
  "not_claimed": [
    "This is a census of one dependency set, not a sample of PyPI. It supports no claim about the index as a whole and no rate here should be quoted as one.",
    "A refusal names what this probe observed at one moment from one machine. It is not a judgement about a maintainer, and an unattested package is not an unsafe package.",
    "Verifying a signature says a specific workflow in a specific repository produced the upload. It does not say the code is good, the build was clean, or the maintainer is honest.",
    "No package was contacted beyond the public index endpoints and a plain download of artifacts this engine already installs."
  ],
  "digest": "d089f5dc2f47169f77d83f4b4374334c580f85102640ffea3b46e8c4697a71aa"
}
