From: Fredrik Tolf Date: Thu, 22 Dec 2011 05:12:45 +0000 (+0100) Subject: Merge branch 'master' into python3 X-Git-Tag: 0.1~3 X-Git-Url: http://git.dolda2000.com/gitweb/?a=commitdiff_plain;h=864a9d46e7cc4a67bd244947b933baabc69c902f;hp=-c;p=pdm.git Merge branch 'master' into python3 --- 864a9d46e7cc4a67bd244947b933baabc69c902f diff --combined pdm/cli.py index 878a670,bb2bbf5..6af06f1 --- a/pdm/cli.py +++ b/pdm/cli.py @@@ -37,9 -37,9 +37,9 @@@ def resolve(spec) class client(object): def __init__(self, sk, proto = None): self.sk = resolve(sk) - self.buf = "" + self.buf = b"" line = self.readline() - if line != "+PDM1": + if line != b"+PDM1": raise protoerr("Illegal protocol signature") if proto is not None: self.select(proto) @@@ -47,26 -47,27 +47,29 @@@ def close(self): self.sk.close() + def fileno(self): + return self.sk.fileno() + def readline(self): while True: - p = self.buf.find("\n") + p = self.buf.find(b"\n") if p >= 0: ret = self.buf[:p] self.buf = self.buf[p + 1:] return ret ret = self.sk.recv(1024) - if ret == "": + if ret == b"": return None self.buf += ret def select(self, proto): - if "\n" in proto: + if isinstance(proto, str): + proto = proto.encode("ascii") + if b"\n" in proto: raise Exception("Illegal protocol specified: %r" % proto) - self.sk.send(proto + "\n") + self.sk.send(proto + b"\n") rep = self.readline() - if len(rep) < 1 or rep[0] != "+": + if len(rep) < 1 or rep[0] != b"+"[0]: raise protoerr("Error reply when selecting protocol %s: %s" % (proto, rep[1:])) def __enter__(self): @@@ -78,7 -79,7 +81,7 @@@ class replclient(client): def __init__(self, sk): - super(replclient, self).__init__(sk, "repl") + super().__init__(sk, "repl") def run(self, code): while True: @@@ -87,16 -88,16 +90,16 @@@ code = ncode while len(code) > 0 and code[-1] == "\n": code = code[:-1] - self.sk.send(code + "\n\n") - buf = "" + self.sk.send((code + "\n\n").encode("utf-8")) + buf = b"" while True: ln = self.readline() - if ln[0] == " ": - buf += ln[1:] + "\n" - elif ln[0] == "+": - return buf - elif ln[0] == "-": - raise protoerr("Error reply: %s" % ln[1:]) + if ln[0] == b" "[0]: + buf += ln[1:] + b"\n" + elif ln[0] == b"+"[0]: + return buf.decode("utf-8") + elif ln[0] == b"-"[0]: + raise protoerr("Error reply: %s" % ln[1:].decode("utf-8")) else: raise protoerr("Illegal reply: %s" % ln) @@@ -164,7 -165,7 +167,7 @@@ class perfproxy(object) class perfclient(client): def __init__(self, sk): - super(perfclient, self).__init__(sk, "perf") + super().__init__(sk, "perf") self.nextid = 0 self.lock = threading.Lock() self.proxies = {} @@@ -176,10 -177,10 +179,10 @@@ self.sk.send(buf) def recvb(self, num): - buf = "" + buf = b"" while len(buf) < num: data = self.sk.recv(num - len(buf)) - if data == "": + if data == b"": raise EOFError() buf += data return buf