def METHOD_NAME():
    parser = OptionParser(usage="Usage: %prog [options] [file [args]]")
    parser.add_option(
        "--version", "-V", action="store_true", help="Print version and exit."
    )
    options, args = parser.parse_args(sys.argv)
    if options.version:
        print(version_banner(base="bpdb"))
        print(copyright_banner())
        return 0
    if len(args) < 2:
        print("usage: bpdb scriptfile [arg] ...")
        return 2
    # The following code is based on Python's pdb.py.
    mainpyfile = args[1]
    if not os.path.exists(mainpyfile):
        print(f"Error: {mainpyfile} does not exist.")
        return 1
    # Hide bpdb from argument list.
    del sys.argv[0]
    # Replace bpdb's dir with script's dir in front of module search path.
    sys.path[0] = os.path.dirname(mainpyfile)
    pdb = BPdb()
    while True:
        try:
            pdb._runscript(mainpyfile)
            if pdb._user_requested_quit:
                break
            print("The program finished and will be restarted.")
        except Restart:
            print(f"Restarting {mainpyfile} with arguments:")
            print("\t" + " ".join(sys.argv[1:]))
        except SystemExit:
            # In most cases SystemExit does not warrant a post-mortem session.
            print(
                "The program exited via sys.exit(). Exit status: ",
            )
            print(sys.exc_info()[1])
        except:
            traceback.print_exc()
            print("Uncaught exception. Entering post mortem debugging.")
            print("Running 'cont' or 'step' will restart the program.")
            t = sys.exc_info()[2]
            pdb.interaction(None, t)
            print(
                f"Post mortem debugger finished. The {mainpyfile} will be restarted."
            )