import os, sys, socket, threading, grp, select
import types, pprint, traceback
import pickle, struct
+from . import perf as mperf
__all__ = ["repl", "perf", "listener", "unixlistener", "tcplistener", "listen"]
self.echo(eval(ccode, self.mod.__dict__))
self.cl.send(b"+OK\n")
except:
- for line in traceback.format_exception(*sys.exc_info()):
- self.cl.send(b" " + line.encode("utf-8"))
+ lines = ("".join(traceback.format_exception(*sys.exc_info()))).split("\n")
+ while len(lines) > 0 and lines[-1] == "": lines = lines[:-1]
+ for line in lines:
+ self.cl.send(b" " + line.encode("utf-8") + b"\n")
self.cl.send(b"+EXC\n")
def handle(self, buf):
def bindob(self, id, ob):
if not hasattr(ob, "pdm_protocols"):
- raise ValueError("Object does not support PDM introspection")
+ raise mperf.nosuchname("Object does not support PDM introspection")
try:
proto = ob.pdm_protocols()
except Exception as exc:
def bind(self, id, module, obnm):
resmod = sys.modules.get(module)
if resmod is None:
- self.send("-", ImportError("No such module: %s" % module))
+ self.send("-", mperf.nosuchname("No such module: %s" % module))
return
try:
ob = getattr(resmod, obnm)
except AttributeError:
- self.send("-", AttributeError("No such object: %s" % obnm))
+ self.send("-", mperf.nosuchname("No such object: %s" % obnm))
return
try:
proto = self.bindob(id, ob)
return None
ob, protos = ob
if proto not in protos:
- self.send("-", ValueError("Object does not support that protocol"))
+ self.send("-", mperf.nosuchproto("Object does not support that protocol: " + proto))
return None
return ob
try:
ob = src.lookup(obnm)
except KeyError as exc:
- self.send("-", exc)
+ self.send("-", mperf.nosuchname(obnm))
return
try:
proto = self.bindob(tgtid, ob)