{"nodes": [{"id": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "label": "digest.py", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1"}, {"id": "digest_gen_fallback_info", "label": "_gen_fallback_info()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L122"}, {"id": "digest_get_hash_aliases", "label": "_get_hash_aliases()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L138"}, {"id": "digest_get_hash_const", "label": "_get_hash_const()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L202"}, {"id": "digest_lookup_hash", "label": "lookup_hash()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L250"}, {"id": "digest_norm_hash_name", "label": "norm_hash_name()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L371"}, {"id": "digest_hashinfo", "label": "HashInfo", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L406"}, {"id": "sequencemixin", "label": "SequenceMixin", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "digest_hashinfo_init", "label": ".__init__()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L457"}, {"id": "digest_hashinfo_repr", "label": ".__repr__()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L533"}, {"id": "digest_hashinfo_as_tuple", "label": "._as_tuple()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L537"}, {"id": "digest_supported", "label": "supported()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L541"}, {"id": "digest_supported_by_fastpbkdf2", "label": "supported_by_fastpbkdf2()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L549"}, {"id": "digest_supported_by_hashlib_pbkdf2", "label": "supported_by_hashlib_pbkdf2()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L561"}, {"id": "digest_set_mock_fips_mode", "label": "_set_mock_fips_mode()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L607"}, {"id": "digest_compile_hmac", "label": "compile_hmac()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L628"}, {"id": "digest_pbkdf1", "label": "pbkdf1()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L708"}, {"id": "digest_pbkdf2_hmac", "label": "pbkdf2_hmac()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L773"}, {"id": "digest_get_pbkdf2_looper", "label": "_get_pbkdf2_looper()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L882"}, {"id": "digest_pbkdf2_looper", "label": "_pbkdf2_looper()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L885"}, {"id": "digest_rationale_1", "label": "passlib.crypto.digest -- crytographic helpers used by the password hashes in pas", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1"}, {"id": "digest_rationale_123", "label": "internal helper used to generate ``_fallback_info`` dict. currently only run", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L123"}, {"id": "digest_rationale_139", "label": "internal helper used by :func:`lookup_hash` -- normalize arbitrary hash name", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L139"}, {"id": "digest_rationale_203", "label": "internal helper used by :func:`lookup_hash` -- lookup hash constructor by na", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L203"}, {"id": "digest_rationale_252", "label": "Returns a :class:`HashInfo` record containing information about a given hash fun", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L252"}, {"id": "digest_rationale_372", "label": "Normalize hash function name (convenience wrapper for :func:`lookup_hash`).", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L372"}, {"id": "digest_rationale_407", "label": "Record containing information about a given hash algorithm, as returned :func:`l", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L407"}, {"id": "digest_rationale_459", "label": "initialize new instance. :arg const: hash constructor", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L459"}, {"id": "digest_rationale_542", "label": "whether hash is available for use (if False, constructor will throw Unkn", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L542"}, {"id": "digest_rationale_550", "label": "helper to detect if hash is supported by fastpbkdf2()", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L550"}, {"id": "digest_rationale_562", "label": "helper to detect if hash is supported by hashlib.pbkdf2_hmac()", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L562"}, {"id": "digest_rationale_608", "label": "UT helper which monkeypatches lookup_hash() internals to replicate FIPS mode.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L608"}, {"id": "digest_rationale_629", "label": "This function returns an efficient HMAC function, hardcoded with a specific dige", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L629"}, {"id": "digest_rationale_709", "label": "pkcs#5 password-based key derivation v1.5 :arg digest: digest name", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L709"}, {"id": "digest_rationale_774", "label": "pkcs#5 password-based key derivation v2.0 using HMAC + arbitrary digest. :a", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L774"}, {"id": "digest_rationale_886", "label": "py3-only implementation of pbkdf2 inner loop; uses 'int.from_bytes' + in", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L886"}, {"id": "digest_rationale_910", "label": "We want a helper function which performs equivalent of the following::", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L910"}, {"id": "digest_rationale_83", "label": "# TODO: add sha3 to this table.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L83"}, {"id": "digest_rationale_93", "label": "# NOTE: there was an older \"ripemd\" and \"ripemd-128\",", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L93"}, {"id": "digest_rationale_245", "label": "# TODO: add pysha3 support.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L245"}, {"id": "digest_rationale_292", "label": "# NOTE: TypeError is to catch 'TypeError: unhashable type' (e.g. HashInfo)", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L292"}, {"id": "digest_rationale_315", "label": "# NOTE: may return None, which is handled by HashInfo constructor", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L315"}, {"id": "digest_rationale_498", "label": "# TODO: load in preset digest size info for known hashes.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L498"}, {"id": "digest_rationale_680", "label": "# NOTE: this is slightly slower than the single-shot version,", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L680"}, {"id": "digest_rationale_834", "label": "# NOTE: stdlib will throw error at lower bound (keylen > MAX_SINT32)", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L834"}, {"id": "digest_rationale_835", "label": "# NOTE: have do this before other backends checked, since fastpbkdf2 raises wron", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L835"}, {"id": "digest_rationale_846", "label": "# NOTE: have to do this after above guards since fastpbkdf2 lacks bounds checks.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L846"}, {"id": "digest_rationale_851", "label": "# NOTE: have to do this after fastpbkdf2 since hashlib-ssl is slower,", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L851"}, {"id": "digest_rationale_874", "label": "# TODO: consider some alternatives, such as C-accelerated xor_bytes helper if av", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L874"}, {"id": "digest_rationale_876", "label": "# NOTE: this env var is only present to support the admin/benchmark_pbkdf2 scrip", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L876"}], "edges": [{"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "hashlib", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L11", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "hashlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L14", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "re", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L22", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L23", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "struct", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L24", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "warnings", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L25", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "fastpbkdf2", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L29", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "passlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L33", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "passlib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L34", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "passlib_utils_compat", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L36", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "passlib_utils_decor", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L37", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_gen_fallback_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L122", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_get_hash_aliases", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L138", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_get_hash_const", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L202", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_lookup_hash", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L250", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_norm_hash_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L371", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_hashinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L406", "weight": 1.0}, {"source": "digest_hashinfo", "target": "sequencemixin", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L406", "weight": 1.0}, {"source": "digest_hashinfo", "target": "digest_hashinfo_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L457", "weight": 1.0}, {"source": "digest_hashinfo", "target": "digest_hashinfo_repr", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L533", "weight": 1.0}, {"source": "digest_hashinfo", "target": "digest_hashinfo_as_tuple", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L537", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_supported", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L541", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_supported_by_fastpbkdf2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L549", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_supported_by_hashlib_pbkdf2", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L561", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_set_mock_fips_mode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L607", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_compile_hmac", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L628", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_pbkdf1", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L708", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_pbkdf2_hmac", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L773", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "functools", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L880", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_get_pbkdf2_looper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L882", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_pbkdf2_looper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L885", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "struct", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L901", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "passlib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L902", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_get_pbkdf2_looper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L909", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "binascii", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1019", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "passlib_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1020", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_get_pbkdf2_looper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1022", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "target": "digest_pbkdf2_looper", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1025", "weight": 1.0}, {"source": "digest_gen_fallback_info", "target": "digest_lookup_hash", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L130", "weight": 1.0}, {"source": "digest_lookup_hash", "target": "digest_get_hash_aliases", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L303", "weight": 1.0}, {"source": "digest_lookup_hash", "target": "digest_get_hash_const", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L316", "weight": 1.0}, {"source": "digest_lookup_hash", "target": "digest_hashinfo", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L355", "weight": 1.0}, {"source": "digest_norm_hash_name", "target": "digest_lookup_hash", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L395", "weight": 1.0}, {"source": "digest_compile_hmac", "target": "digest_lookup_hash", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L660", "weight": 1.0}, {"source": "digest_pbkdf1", "target": "digest_lookup_hash", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L738", "weight": 1.0}, {"source": "digest_pbkdf2_hmac", "target": "digest_lookup_hash", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L813", "weight": 1.0}, {"source": "digest_pbkdf2_hmac", "target": "digest_compile_hmac", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L861", "weight": 1.0}, {"source": "digest_pbkdf2_hmac", "target": "digest_get_pbkdf2_looper", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L864", "weight": 1.0}, {"source": "digest_rationale_1", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1", "weight": 1.0}, {"source": "digest_rationale_123", "target": "digest_gen_fallback_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L123", "weight": 1.0}, {"source": "digest_rationale_139", "target": "digest_get_hash_aliases", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L139", "weight": 1.0}, {"source": "digest_rationale_203", "target": "digest_get_hash_const", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L203", "weight": 1.0}, {"source": "digest_rationale_252", "target": "digest_lookup_hash", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L252", "weight": 1.0}, {"source": "digest_rationale_372", "target": "digest_norm_hash_name", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L372", "weight": 1.0}, {"source": "digest_rationale_407", "target": "digest_hashinfo", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L407", "weight": 1.0}, {"source": "digest_rationale_459", "target": "digest_hashinfo_init", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L459", "weight": 1.0}, {"source": "digest_rationale_542", "target": "digest_hashinfo_supported", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L542", "weight": 1.0}, {"source": "digest_rationale_550", "target": "digest_hashinfo_supported_by_fastpbkdf2", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L550", "weight": 1.0}, {"source": "digest_rationale_562", "target": "digest_hashinfo_supported_by_hashlib_pbkdf2", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L562", "weight": 1.0}, {"source": "digest_rationale_608", "target": "digest_set_mock_fips_mode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L608", "weight": 1.0}, {"source": "digest_rationale_629", "target": "digest_compile_hmac", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L629", "weight": 1.0}, {"source": "digest_rationale_709", "target": "digest_pbkdf1", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L709", "weight": 1.0}, {"source": "digest_rationale_774", "target": "digest_pbkdf2_hmac", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L774", "weight": 1.0}, {"source": "digest_rationale_886", "target": "digest_pbkdf2_looper", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L886", "weight": 1.0}, {"source": "digest_rationale_910", "target": "digest_get_pbkdf2_looper", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L910", "weight": 1.0}, {"source": "digest_rationale_83", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L83", "weight": 1.0}, {"source": "digest_rationale_93", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L93", "weight": 1.0}, {"source": "digest_rationale_245", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L245", "weight": 1.0}, {"source": "digest_rationale_292", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L292", "weight": 1.0}, {"source": "digest_rationale_315", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L315", "weight": 1.0}, {"source": "digest_rationale_498", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L498", "weight": 1.0}, {"source": "digest_rationale_680", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L680", "weight": 1.0}, {"source": "digest_rationale_834", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L834", "weight": 1.0}, {"source": "digest_rationale_835", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L835", "weight": 1.0}, {"source": "digest_rationale_846", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L846", "weight": 1.0}, {"source": "digest_rationale_851", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L851", "weight": 1.0}, {"source": "digest_rationale_874", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L874", "weight": 1.0}, {"source": "digest_rationale_876", "target": "backend_venv_lib_python3_12_site_packages_passlib_crypto_digest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L876", "weight": 1.0}], "raw_calls": [{"caller_nid": "digest_gen_fallback_info", "callee": "sorted", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L129"}, {"caller_nid": "digest_gen_fallback_info", "callee": "set", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L129"}, {"caller_nid": "digest_get_hash_aliases", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L153"}, {"caller_nid": "digest_get_hash_aliases", "callee": "to_native_str", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L154"}, {"caller_nid": "digest_get_hash_aliases", "callee": "sub", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L155"}, {"caller_nid": "digest_get_hash_aliases", "callee": "lower", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L155"}, {"caller_nid": "digest_get_hash_aliases", "callee": "strip", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L155"}, {"caller_nid": "digest_get_hash_aliases", "callee": "startswith", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L156"}, {"caller_nid": "digest_get_hash_aliases", "callee": "endswith", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L158"}, {"caller_nid": "digest_get_hash_aliases", "callee": "check_table", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L166"}, {"caller_nid": "digest_get_hash_aliases", "callee": "match", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L171"}, {"caller_nid": "digest_get_hash_aliases", "callee": "group", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L175"}, {"caller_nid": "digest_get_hash_aliases", "callee": "check_table", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L184"}, {"caller_nid": "digest_get_hash_aliases", "callee": "info", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L189"}, {"caller_nid": "digest_get_hash_aliases", "callee": "replace", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L195"}, {"caller_nid": "digest_get_hash_aliases", "callee": "warning", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L196"}, {"caller_nid": "digest_get_hash_const", "callee": "startswith", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L215"}, {"caller_nid": "digest_get_hash_const", "callee": "getattr", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L217"}, {"caller_nid": "digest_get_hash_const", "callee": "new_ssl_hash", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L225"}, {"caller_nid": "digest_lookup_hash", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L301"}, {"caller_nid": "digest_lookup_hash", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L324"}, {"caller_nid": "digest_lookup_hash", "callee": "callable", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L328"}, {"caller_nid": "digest_lookup_hash", "callee": "const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L332"}, {"caller_nid": "digest_lookup_hash", "callee": "ExpectedTypeError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L352"}, {"caller_nid": "digest_lookup_hash", "callee": "get", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L363"}, {"caller_nid": "digest_norm_hash_name", "callee": "warn", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L397"}, {"caller_nid": "digest_norm_hash_name", "callee": "ValueError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L403"}, {"caller_nid": "digest_hashinfo_init", "callee": "use_stub_const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L497"}, {"caller_nid": "digest_hashinfo_init", "callee": "const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L503"}, {"caller_nid": "digest_hashinfo_init", "callee": "lower", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L509"}, {"caller_nid": "digest_hashinfo_init", "callee": "str", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L509"}, {"caller_nid": "digest_hashinfo_init", "callee": "type", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L512"}, {"caller_nid": "digest_hashinfo_init", "callee": "use_stub_const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L513"}, {"caller_nid": "digest_hashinfo_init", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L522"}, {"caller_nid": "digest_hashinfo_init", "callee": "digest", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L522"}, {"caller_nid": "digest_hashinfo_init", "callee": "RuntimeError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L523"}, {"caller_nid": "digest_hashinfo_init", "callee": "warn", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L527"}, {"caller_nid": "digest_supported_by_fastpbkdf2", "callee": "_fast_pbkdf2_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L554"}, {"caller_nid": "digest_supported_by_hashlib_pbkdf2", "callee": "_stdlib_pbkdf2_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L566"}, {"caller_nid": "digest_set_mock_fips_mode", "callee": "clear_cache", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L613"}, {"caller_nid": "digest_compile_hmac", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L665"}, {"caller_nid": "digest_compile_hmac", "callee": "to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L666"}, {"caller_nid": "digest_compile_hmac", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L667"}, {"caller_nid": "digest_compile_hmac", "callee": "digest", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L669"}, {"caller_nid": "digest_compile_hmac", "callee": "const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L669"}, {"caller_nid": "digest_compile_hmac", "callee": "const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L675"}, {"caller_nid": "digest_compile_hmac", "callee": "translate", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L675"}, {"caller_nid": "digest_compile_hmac", "callee": "const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L676"}, {"caller_nid": "digest_compile_hmac", "callee": "translate", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L676"}, {"caller_nid": "digest_pbkdf1", "callee": "to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L741"}, {"caller_nid": "digest_pbkdf1", "callee": "to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L742"}, {"caller_nid": "digest_pbkdf1", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L745"}, {"caller_nid": "digest_pbkdf1", "callee": "ExpectedTypeError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L746"}, {"caller_nid": "digest_pbkdf1", "callee": "ValueError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L748"}, {"caller_nid": "digest_pbkdf1", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L753"}, {"caller_nid": "digest_pbkdf1", "callee": "ExpectedTypeError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L754"}, {"caller_nid": "digest_pbkdf1", "callee": "ValueError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L756"}, {"caller_nid": "digest_pbkdf1", "callee": "ValueError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L758"}, {"caller_nid": "digest_pbkdf1", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L763"}, {"caller_nid": "digest_pbkdf1", "callee": "digest", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L764"}, {"caller_nid": "digest_pbkdf1", "callee": "const", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L764"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L809"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L810"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L817"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "ExpectedTypeError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L818"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "ValueError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L820"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L825"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "ExpectedTypeError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L826"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "ValueError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L829"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "OverflowError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L839"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "_fast_pbkdf2_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L848"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "_stdlib_pbkdf2_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L854"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "join_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L867"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "calc_block", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L868"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "keyed_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L868"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "_pack_uint32", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L868"}, {"caller_nid": "digest_pbkdf2_hmac", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L869"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "partial", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L883"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "from_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L892"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L893"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "keyed_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L894"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "from_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L895"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L896"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "NotImplementedError", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L964"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "Struct", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L965"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "dict", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L970"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L972"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L972"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L973"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L973"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "format", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L977"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L988"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "format", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L992"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "compile", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L997"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "dict", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L998"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "dict", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L999"}, {"caller_nid": "digest_get_pbkdf2_looper", "callee": "eval", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1000"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "int", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1027"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "hexlify", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1027"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "irange", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1028"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "keyed_hmac", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1029"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "int", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1030"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "hexlify", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1030"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "int_to_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1031"}, {"caller_nid": "digest_pbkdf2_looper", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/passlib/crypto/digest.py", "source_location": "L1031"}]}