From: Fredrik Tolf Date: Sun, 5 Feb 2012 16:00:30 +0000 (+0100) Subject: Merge branch 'master' into python3 X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=commitdiff_plain;h=3614ca8353a5f2055fdcc086e6bc9dc993b49b42;hp=1f61bf3134f3b46954ad012096c6ff3b398a74ef Merge branch 'master' into python3 Conflicts: wrw/resp.py wrw/session.py --- diff --git a/setup.py b/setup.py index a3f45d2..85a07ae 100755 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 from distutils.core import setup, Extension diff --git a/wrw/__init__.py b/wrw/__init__.py index c0b8273..d4b0a63 100644 --- a/wrw/__init__.py +++ b/wrw/__init__.py @@ -1,6 +1,6 @@ __all__ = ["wsgiwrap", "restart", "cookie", "formdata"] -from util import wsgiwrap, formparams, persession, sessiondata, autodirty, manudirty -from dispatch import restart -import cookie -from form import formdata +from .util import wsgiwrap, formparams, persession, sessiondata, autodirty, manudirty +from .dispatch import restart +from . import cookie +from .form import formdata diff --git a/wrw/cookie.py b/wrw/cookie.py index 37e8708..c6ae36c 100644 --- a/wrw/cookie.py +++ b/wrw/cookie.py @@ -1,4 +1,4 @@ -import Cookie +import http.cookies __all__ = ["cookies", "get", "add"] @@ -10,10 +10,10 @@ def addcookies(req): class cookiedict(object): def __init__(self, req): try: - self.bk = Cookie.SimpleCookie(req.ihead.get("Cookie")) - except Cookie.CookieError: - self.bk = Cookie.SimpleCookie() - self.codec = Cookie.SimpleCookie() + self.bk = http.cookies.SimpleCookie(req.ihead.get("Cookie")) + except http.cookies.CookieError: + self.bk = http.cookies.SimpleCookie() + self.codec = http.cookies.SimpleCookie() req.oncommit(addcookies) def __getitem__(self, name): diff --git a/wrw/dispatch.py b/wrw/dispatch.py index 15ea99e..e51559e 100644 --- a/wrw/dispatch.py +++ b/wrw/dispatch.py @@ -1,5 +1,5 @@ import sys, traceback -import env +from . import env __all__ = ["restart"] @@ -23,17 +23,17 @@ class iterproxy(object): self.bk = real self.bki = iter(real) self._next = [None] - self.next() + self.__next__() def __iter__(self): return self - def next(self): + def __next__(self): if self._next is None: raise StopIteration() ret = self._next[0] try: - self._next[:] = [self.bki.next()] + self._next[:] = [self.bki.__next__()] except StopIteration: self._next = None return ret @@ -43,7 +43,7 @@ class iterproxy(object): self.bk.close() def defaulterror(req, excinfo): - import resp + from . import resp traceback.print_exception(*excinfo) raise resp.httperror(500) @@ -62,9 +62,9 @@ def handle(req, startreq, handler): try: resp = iterproxy(handler(req)) break - except restart, i: + except restart as i: handler = i.handle - except Exception, i: + except Exception as i: if eh is None: raise handler = wraphandler(eh, sys.exc_info()) diff --git a/wrw/filesys.py b/wrw/filesys.py index dcdc802..56d58aa 100644 --- a/wrw/filesys.py +++ b/wrw/filesys.py @@ -1,5 +1,5 @@ import os -import resp +from . import resp pj = os.path.join __all__ = ["filehandler"] @@ -29,7 +29,7 @@ class filehandler(object): elif ext == "html": ctype = "text/html" req.ohead["Content-Type"] = ctype - return open(path, "r") + return open(path, "rb") def resolvefile(self, req, curpath, el): if os.path.isfile(pj(curpath, el)): diff --git a/wrw/form.py b/wrw/form.py index af599e6..dd1d5e9 100644 --- a/wrw/form.py +++ b/wrw/form.py @@ -31,7 +31,7 @@ class formwrap(object): return list(iter()) def keys(self): - return self.cf.keys() + return list(self.cf.keys()) def values(self): return [val for key, val in self.items()] diff --git a/wrw/req.py b/wrw/req.py index 0d26964..0689cbd 100644 --- a/wrw/req.py +++ b/wrw/req.py @@ -17,7 +17,7 @@ class headdict(object): del self.dict[key.lower()] def __iter__(self): - return iter((list[0] for list in self.dict.itervalues())) + return iter((list[0] for list in self.dict.values())) def get(self, key, default = ""): if key.lower() in self.dict: diff --git a/wrw/resp.py b/wrw/resp.py index 3514616..6e95ec5 100644 --- a/wrw/resp.py +++ b/wrw/resp.py @@ -1,4 +1,4 @@ -import dispatch, proto, env +from . import dispatch, proto, env __all__ = ["skeleton", "skelfor", "setskel", "usererror"] @@ -38,7 +38,7 @@ def setskel(req, skel): class usererror(dispatch.restart): def __init__(self, message, detail): - super(usererror, self).__init__() + super().__init__() self.message = message self.detail = detail @@ -46,9 +46,9 @@ class usererror(dispatch.restart): return [skelfor(req).error(self.message, self.detail)] class message(dispatch.restart): - def __init__(self, msg, detail): - super(message, self).__init__() - self.message = msg + def __init__(self, message, detail): + super().__init__() + self.message = message self.detail = detail def handle(self, req): @@ -60,20 +60,20 @@ class httperror(usererror): message = proto.statusinfo[status][0] if detail is None: detail = proto.statusinfo[status][1] - super(httperror, self).__init__(message, detail) + super().__init__(message, detail) self.status = status def handle(self, req): req.status(self.status, self.message) - return super(httperror, self).handle(req) + return super().handle(req) class notfound(httperror): def __init__(self): - return super(notfound, self).__init__(404) + return super().__init__(404) class redirect(dispatch.restart): def __init__(self, url, status = 303): - super(redirect, self).__init__() + super().__init__() self.url = url self.status = status diff --git a/wrw/session.py b/wrw/session.py index 1239ecd..832387e 100644 --- a/wrw/session.py +++ b/wrw/session.py @@ -1,5 +1,5 @@ import threading, time, pickle, random, os -import cookie, env +from . import cookie, env __all__ = ["db", "get"] @@ -11,7 +11,7 @@ def hexencode(str): def gennonce(length): nonce = "" - for i in xrange(length): + for i in range(length): nonce += chr(random.randint(0, 255)) return nonce @@ -84,7 +84,7 @@ class db(object): now = int(time.time()) with self.lock: dlist = [] - for sess in self.live.itervalues(): + for sess in self.live.values(): if sess.atime + self.freezetime < now: try: if sess.dirty(): @@ -151,7 +151,7 @@ class db(object): data = self.backdb[sessid] try: return pickle.loads(data) - except Exception, e: + except: raise KeyError() def freeze(self, sess): diff --git a/wrw/util.py b/wrw/util.py index 6170c9e..58ead25 100644 --- a/wrw/util.py +++ b/wrw/util.py @@ -1,5 +1,5 @@ import inspect -import req, dispatch, session, form +from . import req, dispatch, session, form def wsgiwrap(callable): def wrapper(env, startreq): @@ -55,7 +55,7 @@ class sessiondata(object): class autodirty(sessiondata): @classmethod def get(cls, req): - ret = super(autodirty, cls).get(req) + ret = super().get(req) if "_is_dirty" not in ret.__dict__: ret.__dict__["_is_dirty"] = False return ret @@ -67,18 +67,18 @@ class autodirty(sessiondata): return self._is_dirty def __setattr__(self, name, value): - super(autodirty, self).__setattr__(name, value) + super().__setattr__(name, value) if "_is_dirty" in self.__dict__: self.__dict__["_is_dirty"] = True def __delattr__(self, name): - super(autodirty, self).__delattr__(name, value) + super().__delattr__(name, value) if "_is_dirty" in self.__dict__: self.__dict__["_is_dirty"] = True class manudirty(object): def __init__(self, *args, **kwargs): - super(manudirty, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self.__dirty = False def sessfrozen(self): diff --git a/wrw/wmako.py b/wrw/wmako.py index 9945345..817233d 100644 --- a/wrw/wmako.py +++ b/wrw/wmako.py @@ -1,6 +1,6 @@ import os, threading from mako import template, lookup, filters -import util, form, session +from . import util, form, session # It seems Mako isn't thread-safe. makolock = threading.Lock()