def func(self): "hook function" caller = self.caller pycode = self.args if not pycode: string = "Usage: @py <code>" self.msg(string) return # check if caller is a player # import useful variables import ev available_vars = { "self": caller, "me": caller, "here": hasattr(caller, "location") and caller.location or None, "ev": ev, "inherits_from": utils.inherits_from, } try: self.msg(">>> %s" % pycode, raw=True, sessid=self.sessid) except TypeError: self.msg(">>> %s" % pycode, raw=True) mode = "eval" try: try: pycode_compiled = compile(pycode, "", mode) except Exception: mode = "exec" pycode_compiled = compile(pycode, "", mode) duration = "" if "time" in self.switches: t0 = timemeasure() ret = eval(pycode_compiled, {}, available_vars) t1 = timemeasure() duration = " (%.4f ms)" % ((t1 - t0) * 1000) else: ret = eval(pycode_compiled, {}, available_vars) if mode == "eval": ret = "{n<<< %s%s" % (str(ret), duration) else: ret = "{n<<< Done.%s" % duration except Exception: errlist = traceback.format_exc().split("\n") if len(errlist) > 4: errlist = errlist[4:] ret = "\n".join("{n<<< %s" % line for line in errlist if line) if ret is not None: try: self.msg(ret, sessid=self.sessid) except TypeError: self.msg(ret)
def func(self): "hook function" caller = self.caller pycode = self.args if not pycode: string = "Usage: @py <code>" self.msg(string) return # check if caller is a player # import useful variables import evennia available_vars = { 'self': caller, 'me': caller, 'here': hasattr(caller, "location") and caller.location or None, 'evennia': evennia, 'ev': evennia, 'inherits_from': utils.inherits_from } try: self.msg(">>> %s" % pycode, raw=True, session=self.session) except TypeError: self.msg(">>> %s" % pycode, raw=True) mode = "eval" try: try: pycode_compiled = compile(pycode, "", mode) except Exception: mode = "exec" pycode_compiled = compile(pycode, "", mode) duration = "" if "time" in self.switches: t0 = timemeasure() ret = eval(pycode_compiled, {}, available_vars) t1 = timemeasure() duration = " (runtime ~ %.4f ms)" % ((t1 - t0) * 1000) else: ret = eval(pycode_compiled, {}, available_vars) if mode == "eval": ret = "<<< %s%s" % (str(ret), duration) else: ret = "<<< Done (use self.msg() if you want to catch output)%s" % duration except Exception: errlist = traceback.format_exc().split('\n') if len(errlist) > 4: errlist = errlist[4:] ret = "\n".join("<<< %s" % line for line in errlist if line) try: self.msg(ret, session=self.session, raw=True) except TypeError: self.msg(ret, raw=True)
def func(self): "hook function" caller = self.caller pycode = self.args if not pycode: string = "Usage: @py <code>" self.msg(string) return # check if caller is a player # import useful variables import evennia available_vars = {'self': caller, 'me': caller, 'here': hasattr(caller, "location") and caller.location or None, 'evennia': evennia, 'ev': evennia, 'inherits_from': utils.inherits_from} try: self.msg(">>> %s" % pycode, raw=True, session=self.session) except TypeError: self.msg(">>> %s" % pycode, raw=True) mode = "eval" try: try: pycode_compiled = compile(pycode, "", mode) except Exception: mode = "exec" pycode_compiled = compile(pycode, "", mode) duration = "" if "time" in self.switches: t0 = timemeasure() ret = eval(pycode_compiled, {}, available_vars) t1 = timemeasure() duration = " (runtime ~ %.4f ms)" % ((t1 - t0) * 1000) else: ret = eval(pycode_compiled, {}, available_vars) if mode == "eval": ret = "%s%s" % (str(ret), duration) else: ret = " Done (use self.msg() if you want to catch output)%s" % duration except Exception: errlist = traceback.format_exc().split('\n') if len(errlist) > 4: errlist = errlist[4:] ret = "\n".join("%s" % line for line in errlist if line) try: self.msg(ret, session=self.session, raw=True) except TypeError: self.msg(ret, raw=True)
def func(self): "hook function" caller = self.caller pycode = self.args if not pycode: string = "Usage: @py <code>" caller.msg(string) return # import useful variables import ev available_vars = {'self':caller, 'me':caller, 'here':caller.location, 'ev':ev, 'inherits_from':utils.inherits_from} caller.msg(">>> %s" % pycode, data={"raw":True}) mode = "eval" try: try: pycode_compiled = compile(pycode, "", mode) except Exception: mode = "exec" pycode_compiled = compile(pycode, "", mode) duration = "" if "time" in self.switches: t0 = timemeasure() ret = eval(pycode_compiled, {}, available_vars) t1 = timemeasure() duration = " (%.4f ms)" % ((t1 - t0) * 1000) else: ret = eval(pycode_compiled, {}, available_vars) if mode == "eval": ret = "{n<<< %s%s" % (str(ret), duration) else: ret = "{n<<< Done.%s" % duration except Exception: errlist = traceback.format_exc().split('\n') if len(errlist) > 4: errlist = errlist[4:] ret = "\n".join("{n<<< %s" % line for line in errlist if line) if ret != None: caller.msg(ret)