From: Fredrik Tolf Date: Sun, 1 Jan 2012 21:42:41 +0000 (+0100) Subject: Merge branch 'master' into python3 X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=commitdiff_plain;h=f593b3dbae242213fa6ea3e1b11310fe15d6ddad;hp=f84a3f10e332cd8e67230551e3146dd900a97c0a Merge branch 'master' into python3 Conflicts: 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 fe62df3..709cfe4 100644 --- a/wrw/dispatch.py +++ b/wrw/dispatch.py @@ -20,17 +20,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 @@ -46,7 +46,7 @@ def handle(req, startreq, handler): try: resp = iterproxy(handler(req)) break - except restart, i: + except restart as i: handler = i.handle req.commit(startreq) return resp 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 8216d23..75a7f3a 100644 --- a/wrw/resp.py +++ b/wrw/resp.py @@ -1,4 +1,4 @@ -import dispatch, proto +from . import dispatch, proto __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 @@ -47,7 +47,7 @@ class usererror(dispatch.restart): class message(dispatch.restart): def __init__(self, message, detail): - super(message, self).__init__() + super().__init__() self.message = message self.detail = detail @@ -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 7632449..d78c43b 100644 --- a/wrw/session.py +++ b/wrw/session.py @@ -1,5 +1,5 @@ import threading, time, pickle, random, os -import cookie +from . import cookie __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 b94564b..e338e2c 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()