Index: third_party/twisted_8_1/twisted/web/util.py |
diff --git a/third_party/twisted_8_1/twisted/web/util.py b/third_party/twisted_8_1/twisted/web/util.py |
deleted file mode 100644 |
index 0a50de6ddda9bc46cc3f635af48f88132f4d6c6a..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/web/util.py |
+++ /dev/null |
@@ -1,390 +0,0 @@ |
-# -*- test-case-name: twisted.web.test.test_web -*- |
- |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-from cStringIO import StringIO |
- |
-from twisted.python import failure |
- |
-import html |
-import resource |
- |
- |
-import linecache |
-import string, re |
-import types |
- |
- |
-def redirectTo(URL, request): |
- request.redirect(URL) |
- return """ |
-<html> |
- <head> |
- <meta http-equiv=\"refresh\" content=\"0;URL=%(url)s\"> |
- </head> |
- <body bgcolor=\"#FFFFFF\" text=\"#000000\"> |
- <a href=\"%(url)s\">click here</a> |
- </body> |
-</html> |
-""" % {'url': URL} |
- |
-class Redirect(resource.Resource): |
- |
- isLeaf = 1 |
- |
- def __init__(self, url): |
- resource.Resource.__init__(self) |
- self.url = url |
- |
- def render(self, request): |
- return redirectTo(self.url, request) |
- |
- def getChild(self, name, request): |
- return self |
- |
-class ChildRedirector(Redirect): |
- isLeaf = 0 |
- def __init__(self, url): |
- # XXX is this enough? |
- if ((url.find('://') == -1) |
- and (not url.startswith('..')) |
- and (not url.startswith('/'))): |
- raise ValueError("It seems you've given me a redirect (%s) that is a child of myself! That's not good, it'll cause an infinite redirect." % url) |
- Redirect.__init__(self, url) |
- |
- def getChild(self, name, request): |
- newUrl = self.url |
- if not newUrl.endswith('/'): |
- newUrl += '/' |
- newUrl += name |
- return ChildRedirector(newUrl) |
- |
- |
-from twisted.python import urlpath |
- |
-class ParentRedirect(resource.Resource): |
- """ |
- I redirect to URLPath.here(). |
- """ |
- isLeaf = 1 |
- def render(self, request): |
- return redirectTo(urlpath.URLPath.fromRequest(request).here(), request) |
- |
- def getChild(self, request): |
- return self |
- |
- |
-class DeferredResource(resource.Resource): |
- """ |
- I wrap up a Deferred that will eventually result in a Resource |
- object. |
- """ |
- isLeaf = 1 |
- |
- def __init__(self, d): |
- resource.Resource.__init__(self) |
- self.d = d |
- |
- def getChild(self, name, request): |
- return self |
- |
- def render(self, request): |
- self.d.addCallback(self._cbChild, request).addErrback( |
- self._ebChild,request) |
- from twisted.web.server import NOT_DONE_YET |
- return NOT_DONE_YET |
- |
- def _cbChild(self, child, request): |
- result = resource.getChildForRequest(child, request).render(request) |
- from twisted.web.server import NOT_DONE_YET |
- if result == NOT_DONE_YET: |
- return |
- else: |
- request.write(result) |
- request.finish() |
- |
- def _ebChild(self, reason, request): |
- request.processingFailed(reason) |
- return reason |
- |
- |
-stylesheet = """ |
-<style type="text/css"> |
- p.error { |
- color: red; |
- font-family: Verdana, Arial, helvetica, sans-serif; |
- font-weight: bold; |
- } |
- |
- div { |
- font-family: Verdana, Arial, helvetica, sans-serif; |
- } |
- |
- div.stackTrace { |
- } |
- |
- div.frame { |
- padding: 1em; |
- background: white; |
- border-bottom: thin black dashed; |
- } |
- |
- div.firstFrame { |
- padding: 1em; |
- background: white; |
- border-top: thin black dashed; |
- border-bottom: thin black dashed; |
- } |
- |
- div.location { |
- } |
- |
- div.snippet { |
- margin-bottom: 0.5em; |
- margin-left: 1em; |
- background: #FFFFDD; |
- } |
- |
- div.snippetHighlightLine { |
- color: red; |
- } |
- |
- span.code { |
- font-family: "Courier New", courier, monotype; |
- } |
- |
- span.function { |
- font-weight: bold; |
- font-family: "Courier New", courier, monotype; |
- } |
- |
- table.variables { |
- border-collapse: collapse; |
- margin-left: 1em; |
- } |
- |
- td.varName { |
- vertical-align: top; |
- font-weight: bold; |
- padding-left: 0.5em; |
- padding-right: 0.5em; |
- } |
- |
- td.varValue { |
- padding-left: 0.5em; |
- padding-right: 0.5em; |
- } |
- |
- div.variables { |
- margin-bottom: 0.5em; |
- } |
- |
- span.heading { |
- font-weight: bold; |
- } |
- |
- div.dict { |
- background: #cccc99; |
- padding: 2px; |
- float: left; |
- } |
- |
- td.dictKey { |
- background: #ffff99; |
- font-weight: bold; |
- } |
- |
- td.dictValue { |
- background: #ffff99; |
- } |
- |
- div.list { |
- background: #7777cc; |
- padding: 2px; |
- float: left; |
- } |
- |
- div.listItem { |
- background: #9999ff; |
- } |
- |
- div.instance { |
- background: #cc7777; |
- padding: 2px; |
- float: left; |
- } |
- |
- span.instanceName { |
- font-weight: bold; |
- display: block; |
- } |
- |
- span.instanceRepr { |
- background: #ff9999; |
- font-family: "Courier New", courier, monotype; |
- } |
- |
- div.function { |
- background: orange; |
- font-weight: bold; |
- float: left; |
- } |
-</style> |
-""" |
- |
- |
-def htmlrepr(x): |
- return htmlReprTypes.get(type(x), htmlUnknown)(x) |
- |
-def saferepr(x): |
- try: |
- rx = repr(x) |
- except: |
- rx = "<repr failed! %s instance at %s>" % (x.__class__, id(x)) |
- return rx |
- |
-def htmlUnknown(x): |
- return '<code>'+html.escape(saferepr(x))+'</code>' |
- |
-def htmlDict(d): |
- io = StringIO() |
- w = io.write |
- w('<div class="dict"><span class="heading">Dictionary instance @ %s</span>' % hex(id(d))) |
- w('<table class="dict">') |
- for k, v in d.items(): |
- |
- if k == '__builtins__': |
- v = 'builtin dictionary' |
- w('<tr><td class="dictKey">%s</td><td class="dictValue">%s</td></tr>' % (htmlrepr(k), htmlrepr(v))) |
- w('</table></div>') |
- return io.getvalue() |
- |
-def htmlList(l): |
- io = StringIO() |
- w = io.write |
- w('<div class="list"><span class="heading">List instance @ %s</span>' % hex(id(l))) |
- for i in l: |
- w('<div class="listItem">%s</div>' % htmlrepr(i)) |
- w('</div>') |
- return io.getvalue() |
- |
-def htmlInst(i): |
- if hasattr(i, "__html__"): |
- s = i.__html__() |
- else: |
- s = html.escape(saferepr(i)) |
- return '''<div class="instance"><span class="instanceName">%s instance @ %s</span> |
- <span class="instanceRepr">%s</span></div> |
- ''' % (i.__class__, hex(id(i)), s) |
- |
-def htmlString(s): |
- return html.escape(saferepr(s)) |
- |
-def htmlFunc(f): |
- return ('<div class="function">' + |
- html.escape("function %s in file %s at line %s" % |
- (f.__name__, f.func_code.co_filename, |
- f.func_code.co_firstlineno))+ |
- '</div>') |
- |
-htmlReprTypes = {types.DictType: htmlDict, |
- types.ListType: htmlList, |
- types.InstanceType: htmlInst, |
- types.StringType: htmlString, |
- types.FunctionType: htmlFunc} |
- |
- |
- |
-def htmlIndent(snippetLine): |
- ret = string.replace(string.replace(html.escape(string.rstrip(snippetLine)), |
- ' ', ' '), |
- '\t', ' ') |
- return ret |
- |
-def formatFailure(myFailure): |
- |
- exceptionHTML = """ |
-<p class="error">%s: %s</p> |
-""" |
- |
- frameHTML = """ |
-<div class="location">%s, line %s in <span class="function">%s</span></div> |
-""" |
- |
- snippetLineHTML = """ |
-<div class="snippetLine"><span class="lineno">%s</span><span class="code">%s</span></div> |
-""" |
- |
- snippetHighlightLineHTML = """ |
-<div class="snippetHighlightLine"><span class="lineno">%s</span><span class="code">%s</span></div> |
-""" |
- |
- variableHTML = """ |
-<tr class="varRow"><td class="varName">%s</td><td class="varValue">%s</td></tr> |
-""" |
- |
- if not isinstance(myFailure, failure.Failure): |
- return html.PRE(str(myFailure)) |
- io = StringIO() |
- w = io.write |
- w(stylesheet) |
- w('<a href="#tbend">') |
- w(exceptionHTML % (html.escape(str(myFailure.type)), |
- html.escape(str(myFailure.value)))) |
- w('</a>') |
- w('<div class="stackTrace">') |
- first = 1 |
- for method, filename, lineno, localVars, globalVars in myFailure.frames: |
- if filename == '<string>': |
- continue |
- if first: |
- w('<div class="firstFrame">') |
- first = 0 |
- else: |
- w('<div class="frame">') |
- w(frameHTML % (filename, lineno, method)) |
- |
- w('<div class="snippet">') |
- textSnippet = '' |
- for snipLineNo in range(lineno-2, lineno+2): |
- snipLine = linecache.getline(filename, snipLineNo) |
- textSnippet += snipLine |
- snipLine = htmlIndent(snipLine) |
- if snipLineNo == lineno: |
- w(snippetHighlightLineHTML % (snipLineNo, snipLine)) |
- else: |
- w(snippetLineHTML % (snipLineNo, snipLine)) |
- w('</div>') |
- |
- # Instance variables |
- for name, var in localVars: |
- if name == 'self' and hasattr(var, '__dict__'): |
- usedVars = [ (key, value) for (key, value) in var.__dict__.items() |
- if re.search(r'\W'+'self.'+key+r'\W', textSnippet) ] |
- if usedVars: |
- w('<div class="variables"><b>Self</b>') |
- w('<table class="variables">') |
- for key, value in usedVars: |
- w(variableHTML % (key, htmlrepr(value))) |
- w('</table></div>') |
- break |
- |
- # Local and global vars |
- for nm, varList in ('Locals', localVars), ('Globals', globalVars): |
- usedVars = [ (name, var) for (name, var) in varList |
- if re.search(r'\W'+name+r'\W', textSnippet) ] |
- if usedVars: |
- w('<div class="variables"><b>%s</b><table class="variables">' % nm) |
- for name, var in usedVars: |
- w(variableHTML % (name, htmlrepr(var))) |
- w('</table></div>') |
- |
- w('</div>') # frame |
- w('</div>') # stacktrace |
- w('<a name="tbend"> </a>') |
- w(exceptionHTML % (html.escape(str(myFailure.type)), |
- html.escape(str(myFailure.value)))) |
- |
- return io.getvalue() |