"""Prints every number the lesson quotes. Loading the demo pickle calls harmless.ran_on_open once; the safetensors file calls nothing."""
import pickle

import harmless
import modelfile as mf


def main():
    n = mf.numbers()
    print(f"pickle file: {n['pickle_bytes']} bytes, {n['opcodes']} opcodes, {n['imports']} import and {n['calls']} call")
    print(f"  import is step {n['import_step']}, call is step {n['call_step']}")
    print(f"safetensors file: {n['safetensors_bytes']} bytes, header {n['header_bytes']} bytes, {n['safetensors_steps']} reading steps, 0 imports, 0 calls")
    print("header text:", mf.demo_safetensors()[8:8 + n["header_bytes"]].decode())

    tensors, _ = mf.read_safetensors(mf.demo_safetensors())
    print("safetensors opened; notes recorded:", len(harmless.NOTES), "; numbers:", tensors[mf.NAME][2])
    loaded = pickle.loads(mf.demo_pickle())
    print("pickle opened; notes recorded:", len(harmless.NOTES), "; numbers:", tuple(loaded[mf.NAME]))
    harmless.NOTES.clear()
    try:
        mf.load_restricted(mf.demo_pickle())
    except pickle.UnpicklingError as e:
        print("restricted loader:", e, "; notes recorded:", len(harmless.NOTES))
    print("scanner flags:", mf.scan(mf.demo_pickle()), "; flags the plain pickle:", mf.scan(mf.plain_pickle()))


if __name__ == "__main__":
    main()
