def test_format_tb(): try: raise NameError("You dun goofed now") except Exception as exc: x = color.format_tb(exc) assert x assert x != color.format_tb(exc, start=1)
def test_format_tb(): try: # by raising, the exception has a traceback raise NameError("You dun goofed now") except Exception as exc: x = color.format_tb(exc) assert x assert x != color.format_tb(exc, start=1)
def main(): args = docopt(__doc__, more_magic=True) _update_argv_from_docopt(args) active_project = None if project.check_for_project(): active_project = project.load() active_project.load_config() print(f"{active_project._name} is the active project.") network.connect(CONFIG.argv["network"]) path, _ = _get_path(args["<filename>"]) path_str = path.absolute().as_posix() try: return_value, frame = run( args["<filename>"], method_name=args["<function>"] or "main", args=args["<arg>"], _include_frame=True, ) exit_code = 0 except Exception as e: print(color.format_tb(e)) frame = next( (i.frame for i in inspect.trace()[::-1] if Path(i.filename).as_posix() == path_str), None, ) if frame is None: # exception was an internal brownie issue - do not open the console sys.exit(1) exit_code = 1 return_value = None try: if args["--interactive"]: # filter internal objects from the namespace prior to opening the console globals_dict = { k: v for k, v in frame.f_globals.items() if not k.startswith("__") } extra_locals = { "_": return_value, **globals_dict, **frame.f_locals } shell = Console(active_project, extra_locals) shell.interact( banner="\nInteractive mode enabled. Use quit() to close.", exitmsg="") finally: # the console terminates from a SystemExit - make sure we still deliver the final gas report if CONFIG.argv["gas"]: print("\n======= Gas profile =======") for line in _build_gas_profile_output(): print(line) sys.exit(exit_code)
def main(): print( f"Brownie v{__version__} - Python development framework for Ethereum\n" ) # remove options before calling docopt if len(sys.argv) > 1 and sys.argv[1][0] != "-": idx = next((sys.argv.index(i) for i in sys.argv if i.startswith("-")), len(sys.argv)) opts = sys.argv[idx:] sys.argv = sys.argv[:idx] args = docopt(__doc__) sys.argv += opts cmd_list = [i.stem for i in Path(__file__).parent.glob("[!_]*.py")] if args["<command>"] not in cmd_list: sys.exit( "Invalid command. Try 'brownie --help' for available commands.") ARGV["cli"] = args["<command>"] sys.modules["brownie"].a = network.accounts sys.modules["brownie"].__all__.append("a") try: importlib.import_module(f"brownie._cli.{args['<command>']}").main() except ProjectNotFound: notify("ERROR", "Brownie environment has not been initiated for this folder.") print("Type 'brownie init' to create the file structure.") except Exception as e: print(color.format_tb(e))
def main(): print(f"Brownie v{__version__} - Python development framework for Ethereum\n") if len(sys.argv) < 2 or sys.argv[1].startswith("-"): # this call triggers a SystemExit docopt(__doc__, ["brownie", "-h"]) cmd = sys.argv[1] cmd_list = [i.stem for i in Path(__file__).parent.glob("[!_]*.py")] if cmd not in cmd_list: distances = sorted([(i, levenshtein_norm(cmd, i)) for i in cmd_list], key=lambda k: k[1]) if distances[0][1] <= 0.2: sys.exit(f"Invalid command. Did you mean 'brownie {distances[0][0]}'?") sys.exit("Invalid command. Try 'brownie --help' for available commands.") CONFIG.argv["cli"] = cmd sys.modules["brownie"].a = network.accounts sys.modules["brownie"].__all__.append("a") try: importlib.import_module(f"brownie._cli.{cmd}").main() except ProjectNotFound: notify("ERROR", "Brownie environment has not been initiated for this folder.") print("Type 'brownie init' to create the file structure.") except Exception as e: print(color.format_tb(e))
def main(): args = docopt(__doc__) _update_argv_from_docopt(args) if project.check_for_project(): active_project = project.load() active_project.load_config() print(f"{active_project._name} is the active project.") else: raise ProjectNotFound network.connect(CONFIG.argv["network"]) path, _ = _get_path(args["<filename>"]) path_str = path.absolute().as_posix() try: run(args["<filename>"], method_name=args["<function>"] or "main") except Exception as e: print(color.format_tb(e)) if args["--interactive"]: frame = next( (i.frame for i in inspect.trace()[::-1] if Path(i.filename).as_posix() == path_str), None, ) if frame is not None: globals_dict = { k: v for k, v in frame.f_globals.items() if not k.startswith("__") } shell = Console(active_project, { **globals_dict, **frame.f_locals }) shell.interact( banner="\nInteractive mode enabled. Use quit() to close.", exitmsg="") sys.exit(1) if CONFIG.argv["gas"]: print("\n======= Gas profile =======") for line in _build_gas_profile_output(): print(line)
def showtraceback(self): tb = color.format_tb(sys.exc_info()[1], start=1) self.write(tb + "\n")
def showsyntaxerror(self, filename): tb = color.format_tb(sys.exc_info()[1]) self.write(tb + "\n")