Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Thu, 22 Dec 2011 05:12:45 +0000 (06:12 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Thu, 22 Dec 2011 05:12:45 +0000 (06:12 +0100)
1  2 
pdm/cli.py

diff --combined 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)
      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:
              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 = {}
          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