1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import os
17 import sys
18 import locale
19 import collections
20
21 import paste.webkit
22
23 from babel.core import Locale, UnknownLocaleError
24
25
26
28 webware_dir = os.path.join(os.path.dirname(paste.webkit.__file__),
29 'FakeWebware')
30 if webware_dir not in sys.path:
31 sys.path.append(webware_dir)
32
33
35 return (lambda x: getattr(__import__(x.rsplit('.', 1)[0],
36 fromlist=x.rsplit('.', 1)[0]),
37 x.split('.')[-1]))(className)
38
39
41 return cls.__mro__[1] if len(cls.__mro__) > 1 else None
42
43
45 """@return: fully qualified name of given class"""
46 return cls.__module__ + "." + cls.__name__
47
48
50 """@return: fully qualified name of given object's class"""
51 return clsname(obj.__class__)
52
53
55 return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 1e6) / 1e6
56
57
59 try:
60 lang, _ = locale.getdefaultlocale()
61 except Exception:
62 lang = None
63
64 if lang is not None:
65 try:
66 return Locale.parse(lang)
67 except UnknownLocaleError:
68 pass
69 else:
70 try:
71 return Locale.default()
72 except UnknownLocaleError:
73 return Locale('en', 'US')
74
75
84
85
88
89
90 KEY, PREV, NEXT = range(3)
91
92
94
96 self.end = end = []
97 end += [None, end, end]
98 self.map = {}
99 if iterable is not None:
100 self |= iterable
101
104
106 return key in self.map
107
108 - def add(self, key):
109 if key not in self.map:
110 end = self.end
111 curr = end[PREV]
112 curr[NEXT] = end[PREV] = self.map[key] = [key, curr, end]
113
115 if key in self.map:
116 key, prev, nxt = self.map.pop(key)
117 prev[NEXT] = nxt
118 nxt[PREV] = prev
119
121 end = self.end
122 curr = end[NEXT]
123 while curr is not end:
124 yield curr[KEY]
125 curr = curr[NEXT]
126
128 end = self.end
129 curr = end[PREV]
130 while curr is not end:
131 yield curr[KEY]
132 curr = curr[PREV]
133
134 - def pop(self, last=True):
135 if not self:
136 raise KeyError('set is empty')
137 key = next(reversed(self)) if last else next(iter(self))
138 self.discard(key)
139 return key
140
142 if not self:
143 return '%s()' % (self.__class__.__name__,)
144 return '%s(%r)' % (self.__class__.__name__, list(self))
145
147 if isinstance(other, OrderedSet):
148 return len(self) == len(other) and list(self) == list(other)
149 return set(self) == set(other)
150
153