@stuartarchibald or someone else probably knows a cleaner way, but for a particular nbi file I used something like this while investigating for this issue. Most of it is cribbed out of caching.py.
for nbi in args.nbi_info:
if not nbi.endswith('.nbi'):
logger.warning(f"skipping filename that doesn't end with 'nbi' -->'{nbi}'")
continue
import io
with io.BytesIO(cu.super_slurp(nbi, audit_logr=logger)) as f:
version = pickle.load(f)
data = f.read()
if version != numba.__version__:
logger.warning(
f"skipping, program numba version '{numba.__version__}' doesn't match index"
f" file numba version '{version}'"
)
continue
stamp, overloads = pickle.loads(data)
print(f'\nindex={nbi}')
print(f'numba_version={version}')
print(f'stamp={stamp}')
for overload, fname in overloads.items():
print(f'overload_fname={fname}')
sig, flags, stuff = overload
print(f'overload_key_signature={sig}')
print(f'overload_key_magic_tuple={flags}')
print(f'overload_key_code_hash={stuff}')