1
2
3
4
5
6 import time
7 import urllib
8 import warnings
9
10 weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
11 monthname = [None,
12 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
13 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
14
16 return "-".join([w.lower().capitalize() for w in name.split("-")])
17
19 """Return the current date and time formatted for a message header."""
20 if timestamp is None:
21 timestamp = time.time()
22 year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp)
23 s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
24 weekdayname[wd],
25 day, monthname[month], year,
26 hh, mm, ss)
27 return s
28
30 if not isinstance(s, basestring):
31 raise TypeError("value should be a str or unicode")
32
33 if isinstance(s, unicode):
34 return s.encode('utf-8')
35 return s
36
38 """URL encode a single string with a given encoding."""
39 if isinstance(s, unicode):
40 s = s.encode(charset)
41 elif not isinstance(s, str):
42 s = str(s)
43 return urllib.quote(s, safe=safe)
44
45
46 -def url_encode(obj, charset="utf8", encode_keys=False):
47 items = []
48 if isinstance(obj, dict):
49 for k, v in list(obj.items()):
50 items.append((k, v))
51 else:
52 items = list(items)
53
54 tmp = []
55 for k, v in items:
56 if encode_keys:
57 k = encode(k, charset)
58
59 if not isinstance(v, (tuple, list)):
60 v = [v]
61
62 for v1 in v:
63 if v1 is None:
64 v1 = ''
65 elif callable(v1):
66 v1 = encode(v1(), charset)
67 else:
68 v1 = encode(v1, charset)
69 tmp.append('%s=%s' % (urllib.quote(k), urllib.quote_plus(v1)))
70 return '&'.join(tmp)
71
73 if isinstance(v, unicode):
74 v = v.encode(charset)
75 else:
76 v = str(v)
77 return v
78
80 """
81 Wraps a decorator, with a deprecation warning or error
82 """
83 - def __init__(self, decorator, attr, message, warning=True):
84 self.decorator = decorator
85 self.attr = attr
86 self.message = message
87 self.warning = warning
88
90 if obj is None:
91 return self
92 self.warn()
93 return self.decorator.__get__(obj, type)
94
98
102
104 return '<Deprecated attribute %s: %r>' % (
105 self.attr,
106 self.decorator)
107
109 if not self.warning:
110 raise DeprecationWarning(
111 'The attribute %s is deprecated: %s' % (self.attr, self.message))
112 else:
113 warnings.warn(
114 'The attribute %s is deprecated: %s' % (self.attr, self.message),
115 DeprecationWarning,
116 stacklevel=3)
117