##// END OF EJS Templates
caches: use repo.lru based Dict cache. This LRUDict uses Timing Algo to not have to use locking...
marcink -
r497:23957c07 default
parent child Browse files
Show More
@@ -0,0 +1,65 b''
1 # -*- coding: utf-8 -*-
2
3 # RhodeCode VCSServer provides access to different vcs backends via network.
4 # Copyright (C) 2014-2018 RhodeCode GmbH
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software Foundation,
18 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
20
21 import logging
22
23 from repoze.lru import LRUCache
24
25 from vcsserver.utils import safe_str
26
27 log = logging.getLogger(__name__)
28
29
30 class LRUDict(LRUCache):
31 """
32 Wrapper to provide partial dict access
33 """
34
35 def __setitem__(self, key, value):
36 return self.put(key, value)
37
38 def __getitem__(self, key):
39 return self.get(key)
40
41 def __contains__(self, key):
42 return bool(self.get(key))
43
44 def __delitem__(self, key):
45 del self.data[key]
46
47 def keys(self):
48 return self.data.keys()
49
50
51 class LRUDictDebug(LRUDict):
52 """
53 Wrapper to provide some debug options
54 """
55 def _report_keys(self):
56 elems_cnt = '%s/%s' % (len(self.keys()), self.size)
57 # trick for pformat print it more nicely
58 fmt = '\n'
59 for cnt, elem in enumerate(self.keys()):
60 fmt += '%s - %s\n' % (cnt+1, safe_str(elem))
61 log.debug('current LRU keys (%s):%s' % (elems_cnt, fmt))
62
63 def __getitem__(self, key):
64 self._report_keys()
65 return self.get(key)
@@ -1,936 +1,924 b''
1 1 # Generated by pip2nix 0.8.0.dev1
2 2 # See https://github.com/johbo/pip2nix
3 3
4 4 { pkgs, fetchurl, fetchgit, fetchhg }:
5 5
6 6 self: super: {
7 7 "atomicwrites" = super.buildPythonPackage {
8 8 name = "atomicwrites-1.1.5";
9 9 doCheck = false;
10 10 src = fetchurl {
11 11 url = "https://files.pythonhosted.org/packages/a1/e1/2d9bc76838e6e6667fde5814aa25d7feb93d6fa471bf6816daac2596e8b2/atomicwrites-1.1.5.tar.gz";
12 12 sha256 = "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214";
13 13 };
14 14 meta = {
15 15 license = [ pkgs.lib.licenses.mit ];
16 16 };
17 17 };
18 18 "attrs" = super.buildPythonPackage {
19 19 name = "attrs-18.1.0";
20 20 doCheck = false;
21 21 src = fetchurl {
22 22 url = "https://files.pythonhosted.org/packages/e4/ac/a04671e118b57bee87dabca1e0f2d3bda816b7a551036012d0ca24190e71/attrs-18.1.0.tar.gz";
23 23 sha256 = "0yzqz8wv3w1srav5683a55v49i0szkm47dyrnkd56fqs8j8ypl70";
24 24 };
25 25 meta = {
26 26 license = [ pkgs.lib.licenses.mit ];
27 27 };
28 28 };
29 29 "backports.shutil-get-terminal-size" = super.buildPythonPackage {
30 30 name = "backports.shutil-get-terminal-size-1.0.0";
31 31 doCheck = false;
32 32 src = fetchurl {
33 33 url = "https://files.pythonhosted.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz";
34 34 sha256 = "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki";
35 35 };
36 36 meta = {
37 37 license = [ pkgs.lib.licenses.mit ];
38 38 };
39 39 };
40 40 "beautifulsoup4" = super.buildPythonPackage {
41 41 name = "beautifulsoup4-4.6.0";
42 42 doCheck = false;
43 43 src = fetchurl {
44 44 url = "https://files.pythonhosted.org/packages/fa/8d/1d14391fdaed5abada4e0f63543fef49b8331a34ca60c88bd521bcf7f782/beautifulsoup4-4.6.0.tar.gz";
45 45 sha256 = "12cf0ygpz9srpfh9gx2f9ba0swa1rzypv3sm4r0hmjyw6b4nm2w0";
46 46 };
47 47 meta = {
48 48 license = [ pkgs.lib.licenses.mit ];
49 49 };
50 50 };
51 51 "configobj" = super.buildPythonPackage {
52 52 name = "configobj-5.0.6";
53 53 doCheck = false;
54 54 propagatedBuildInputs = [
55 55 self."six"
56 56 ];
57 57 src = fetchurl {
58 58 url = "https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c";
59 59 sha256 = "1hhcxirwvg58grlfr177b3awhbq8hlx1l3lh69ifl1ki7lfd1s1x";
60 60 };
61 61 meta = {
62 62 license = [ pkgs.lib.licenses.bsdOriginal ];
63 63 };
64 64 };
65 65 "cov-core" = super.buildPythonPackage {
66 66 name = "cov-core-1.15.0";
67 67 doCheck = false;
68 68 propagatedBuildInputs = [
69 69 self."coverage"
70 70 ];
71 71 src = fetchurl {
72 72 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
73 73 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
74 74 };
75 75 meta = {
76 76 license = [ pkgs.lib.licenses.mit ];
77 77 };
78 78 };
79 79 "coverage" = super.buildPythonPackage {
80 80 name = "coverage-3.7.1";
81 81 doCheck = false;
82 82 src = fetchurl {
83 83 url = "https://files.pythonhosted.org/packages/09/4f/89b06c7fdc09687bca507dc411c342556ef9c5a3b26756137a4878ff19bf/coverage-3.7.1.tar.gz";
84 84 sha256 = "0knlbq79g2ww6xzsyknj9rirrgrgc983dpa2d9nkdf31mb2a3bni";
85 85 };
86 86 meta = {
87 87 license = [ pkgs.lib.licenses.bsdOriginal ];
88 88 };
89 89 };
90 90 "decorator" = super.buildPythonPackage {
91 91 name = "decorator-4.1.2";
92 92 doCheck = false;
93 93 src = fetchurl {
94 94 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
95 95 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
96 96 };
97 97 meta = {
98 98 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
99 99 };
100 100 };
101 101 "dogpile.cache" = super.buildPythonPackage {
102 102 name = "dogpile.cache-0.6.6";
103 103 doCheck = false;
104 104 src = fetchurl {
105 105 url = "https://files.pythonhosted.org/packages/48/ca/604154d835c3668efb8a31bd979b0ea4bf39c2934a40ffecc0662296cb51/dogpile.cache-0.6.6.tar.gz";
106 106 sha256 = "1h8n1lxd4l2qvahfkiinljkqz7pww7w3sgag0j8j9ixbl2h4wk84";
107 107 };
108 108 meta = {
109 109 license = [ pkgs.lib.licenses.bsdOriginal ];
110 110 };
111 111 };
112 112 "dogpile.core" = super.buildPythonPackage {
113 113 name = "dogpile.core-0.4.1";
114 114 doCheck = false;
115 115 src = fetchurl {
116 116 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
117 117 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
118 118 };
119 119 meta = {
120 120 license = [ pkgs.lib.licenses.bsdOriginal ];
121 121 };
122 122 };
123 123 "dulwich" = super.buildPythonPackage {
124 124 name = "dulwich-0.13.0";
125 125 doCheck = false;
126 126 src = fetchurl {
127 127 url = "https://files.pythonhosted.org/packages/84/95/732d280eee829dacc954e8109f97b47abcadcca472c2ab013e1635eb4792/dulwich-0.13.0.tar.gz";
128 128 sha256 = "0f1jwvrh549c4rgavkn3wizrch904s73s4fmrxykxy9cw8s57lwf";
129 129 };
130 130 meta = {
131 131 license = [ pkgs.lib.licenses.gpl2Plus ];
132 132 };
133 133 };
134 134 "enum34" = super.buildPythonPackage {
135 135 name = "enum34-1.1.6";
136 136 doCheck = false;
137 137 src = fetchurl {
138 138 url = "https://files.pythonhosted.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz";
139 139 sha256 = "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a";
140 140 };
141 141 meta = {
142 142 license = [ pkgs.lib.licenses.bsdOriginal ];
143 143 };
144 144 };
145 145 "funcsigs" = super.buildPythonPackage {
146 146 name = "funcsigs-1.0.2";
147 147 doCheck = false;
148 148 src = fetchurl {
149 149 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
150 150 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
151 151 };
152 152 meta = {
153 153 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
154 154 };
155 155 };
156 156 "gevent" = super.buildPythonPackage {
157 157 name = "gevent-1.3.5";
158 158 doCheck = false;
159 159 propagatedBuildInputs = [
160 160 self."greenlet"
161 161 ];
162 162 src = fetchurl {
163 163 url = "https://files.pythonhosted.org/packages/e6/0a/fc345c6e6161f84484870dbcaa58e427c10bd9bdcd08a69bed3d6b398bf1/gevent-1.3.5.tar.gz";
164 164 sha256 = "1w3gydxirgd2f60c5yv579w4903ds9s4g3587ik4jby97hgqc5bz";
165 165 };
166 166 meta = {
167 167 license = [ pkgs.lib.licenses.mit ];
168 168 };
169 169 };
170 170 "gprof2dot" = super.buildPythonPackage {
171 171 name = "gprof2dot-2017.9.19";
172 172 doCheck = false;
173 173 src = fetchurl {
174 174 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
175 175 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
176 176 };
177 177 meta = {
178 178 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
179 179 };
180 180 };
181 181 "greenlet" = super.buildPythonPackage {
182 182 name = "greenlet-0.4.13";
183 183 doCheck = false;
184 184 src = fetchurl {
185 185 url = "https://files.pythonhosted.org/packages/13/de/ba92335e9e76040ca7274224942282a80d54f85e342a5e33c5277c7f87eb/greenlet-0.4.13.tar.gz";
186 186 sha256 = "1r412gfx25jrdiv444prmz5a8igrfabwnwqyr6b52ypq7ga87vqg";
187 187 };
188 188 meta = {
189 189 license = [ pkgs.lib.licenses.mit ];
190 190 };
191 191 };
192 192 "gunicorn" = super.buildPythonPackage {
193 193 name = "gunicorn-19.9.0";
194 194 doCheck = false;
195 195 src = fetchurl {
196 196 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
197 197 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
198 198 };
199 199 meta = {
200 200 license = [ pkgs.lib.licenses.mit ];
201 201 };
202 202 };
203 203 "hg-evolve" = super.buildPythonPackage {
204 204 name = "hg-evolve-8.0.1";
205 205 doCheck = false;
206 206 src = fetchurl {
207 207 url = "https://files.pythonhosted.org/packages/06/1a/c5c12d8f117426f05285a820ee5a23121882f5381104e86276b72598934f/hg-evolve-8.0.1.tar.gz";
208 208 sha256 = "1brafifb42k71gl7qssb5m3ijnm7y30lfvm90z8xxcr2fgz19p29";
209 209 };
210 210 meta = {
211 211 license = [ { fullName = "GPLv2+"; } ];
212 212 };
213 213 };
214 214 "hgsubversion" = super.buildPythonPackage {
215 215 name = "hgsubversion-1.9.2";
216 216 doCheck = false;
217 217 propagatedBuildInputs = [
218 218 self."mercurial"
219 219 self."subvertpy"
220 220 ];
221 221 src = fetchurl {
222 222 url = "https://files.pythonhosted.org/packages/05/80/3a3cef10dd65e86528ef8d7ac57a41ebc782d0f3c6cfa4fed021aa9fbee0/hgsubversion-1.9.2.tar.gz";
223 223 sha256 = "16490narhq14vskml3dam8g5y3w3hdqj3g8bgm2b0c0i85l1xvcz";
224 224 };
225 225 meta = {
226 226 license = [ pkgs.lib.licenses.gpl1 ];
227 227 };
228 228 };
229 229 "hupper" = super.buildPythonPackage {
230 230 name = "hupper-1.3";
231 231 doCheck = false;
232 232 src = fetchurl {
233 233 url = "https://files.pythonhosted.org/packages/51/0c/96335b1f2f32245fb871eea5bb9773196505ddb71fad15190056a282df9e/hupper-1.3.tar.gz";
234 234 sha256 = "1pkyrm9c2crc32ps00k1ahnc5clj3pjwiarc7j0x8aykwih7ff10";
235 235 };
236 236 meta = {
237 237 license = [ pkgs.lib.licenses.mit ];
238 238 };
239 239 };
240 240 "ipdb" = super.buildPythonPackage {
241 241 name = "ipdb-0.11";
242 242 doCheck = false;
243 243 propagatedBuildInputs = [
244 244 self."setuptools"
245 245 self."ipython"
246 246 ];
247 247 src = fetchurl {
248 248 url = "https://files.pythonhosted.org/packages/80/fe/4564de08f174f3846364b3add8426d14cebee228f741c27e702b2877e85b/ipdb-0.11.tar.gz";
249 249 sha256 = "02m0l8wrhhd3z7dg3czn5ys1g5pxib516hpshdzp7rxzsxgcd0bh";
250 250 };
251 251 meta = {
252 252 license = [ pkgs.lib.licenses.bsdOriginal ];
253 253 };
254 254 };
255 255 "ipython" = super.buildPythonPackage {
256 256 name = "ipython-5.1.0";
257 257 doCheck = false;
258 258 propagatedBuildInputs = [
259 259 self."setuptools"
260 260 self."decorator"
261 261 self."pickleshare"
262 262 self."simplegeneric"
263 263 self."traitlets"
264 264 self."prompt-toolkit"
265 265 self."pygments"
266 266 self."pexpect"
267 267 self."backports.shutil-get-terminal-size"
268 268 self."pathlib2"
269 269 self."pexpect"
270 270 ];
271 271 src = fetchurl {
272 272 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
273 273 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
274 274 };
275 275 meta = {
276 276 license = [ pkgs.lib.licenses.bsdOriginal ];
277 277 };
278 278 };
279 279 "ipython-genutils" = super.buildPythonPackage {
280 280 name = "ipython-genutils-0.2.0";
281 281 doCheck = false;
282 282 src = fetchurl {
283 283 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
284 284 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
285 285 };
286 286 meta = {
287 287 license = [ pkgs.lib.licenses.bsdOriginal ];
288 288 };
289 289 };
290 "lru-dict" = super.buildPythonPackage {
291 name = "lru-dict-1.1.6";
292 doCheck = false;
293 src = fetchurl {
294 url = "https://files.pythonhosted.org/packages/00/a5/32ed6e10246cd341ca8cc205acea5d208e4053f48a4dced2b1b31d45ba3f/lru-dict-1.1.6.tar.gz";
295 sha256 = "1k2lhd4dpl6xa6iialbwx4l6bkdzxmzhygms39pvf19x1rk5fm1n";
296 };
297 meta = {
298 license = [ pkgs.lib.licenses.mit ];
299 };
300 };
301 290 "mako" = super.buildPythonPackage {
302 291 name = "mako-1.0.7";
303 292 doCheck = false;
304 293 propagatedBuildInputs = [
305 294 self."markupsafe"
306 295 ];
307 296 src = fetchurl {
308 297 url = "https://files.pythonhosted.org/packages/eb/f3/67579bb486517c0d49547f9697e36582cd19dafb5df9e687ed8e22de57fa/Mako-1.0.7.tar.gz";
309 298 sha256 = "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf";
310 299 };
311 300 meta = {
312 301 license = [ pkgs.lib.licenses.mit ];
313 302 };
314 303 };
315 304 "markupsafe" = super.buildPythonPackage {
316 305 name = "markupsafe-1.0";
317 306 doCheck = false;
318 307 src = fetchurl {
319 308 url = "https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
320 309 sha256 = "0rdn1s8x9ni7ss8rfiacj7x1085lx8mh2zdwqslnw8xc3l4nkgm6";
321 310 };
322 311 meta = {
323 312 license = [ pkgs.lib.licenses.bsdOriginal ];
324 313 };
325 314 };
326 315 "mercurial" = super.buildPythonPackage {
327 316 name = "mercurial-4.6.2";
328 317 doCheck = false;
329 318 src = fetchurl {
330 319 url = "https://files.pythonhosted.org/packages/d9/fb/c7ecf2b7fd349878dbf45b8390b8db735cef73d49dd9ce8a364b4ca3a846/mercurial-4.6.2.tar.gz";
331 320 sha256 = "1bv6wgcdx8glihjjfg22khhc52mclsn4kwfqvzbzlg0b42h4xl0w";
332 321 };
333 322 meta = {
334 323 license = [ pkgs.lib.licenses.gpl1 pkgs.lib.licenses.gpl2Plus ];
335 324 };
336 325 };
337 326 "mock" = super.buildPythonPackage {
338 327 name = "mock-1.0.1";
339 328 doCheck = false;
340 329 src = fetchurl {
341 330 url = "https://files.pythonhosted.org/packages/a2/52/7edcd94f0afb721a2d559a5b9aae8af4f8f2c79bc63fdbe8a8a6c9b23bbe/mock-1.0.1.tar.gz";
342 331 sha256 = "0kzlsbki6q0awf89rc287f3aj8x431lrajf160a70z0ikhnxsfdq";
343 332 };
344 333 meta = {
345 334 license = [ pkgs.lib.licenses.bsdOriginal ];
346 335 };
347 336 };
348 337 "more-itertools" = super.buildPythonPackage {
349 338 name = "more-itertools-4.2.0";
350 339 doCheck = false;
351 340 propagatedBuildInputs = [
352 341 self."six"
353 342 ];
354 343 src = fetchurl {
355 344 url = "https://files.pythonhosted.org/packages/c0/2f/6773347277d76c5ade4414a6c3f785ef27e7f5c4b0870ec7e888e66a8d83/more-itertools-4.2.0.tar.gz";
356 345 sha256 = "1s6qhl7a7jy8gqw8p545rxfp7rwz1hmjr9p6prk93zbv6f9rhsrb";
357 346 };
358 347 meta = {
359 348 license = [ pkgs.lib.licenses.mit ];
360 349 };
361 350 };
362 351 "msgpack-python" = super.buildPythonPackage {
363 352 name = "msgpack-python-0.5.6";
364 353 doCheck = false;
365 354 src = fetchurl {
366 355 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
367 356 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
368 357 };
369 358 meta = {
370 359 license = [ pkgs.lib.licenses.asl20 ];
371 360 };
372 361 };
373 362 "pastedeploy" = super.buildPythonPackage {
374 363 name = "pastedeploy-1.5.2";
375 364 doCheck = false;
376 365 src = fetchurl {
377 366 url = "https://files.pythonhosted.org/packages/0f/90/8e20cdae206c543ea10793cbf4136eb9a8b3f417e04e40a29d72d9922cbd/PasteDeploy-1.5.2.tar.gz";
378 367 sha256 = "1jz3m4hq8v6hyhfjz9425nd3nvn52cvbfipdcd72krjmla4qz1fm";
379 368 };
380 369 meta = {
381 370 license = [ pkgs.lib.licenses.mit ];
382 371 };
383 372 };
384 373 "pathlib2" = super.buildPythonPackage {
385 374 name = "pathlib2-2.3.0";
386 375 doCheck = false;
387 376 propagatedBuildInputs = [
388 377 self."six"
389 378 self."scandir"
390 379 ];
391 380 src = fetchurl {
392 381 url = "https://files.pythonhosted.org/packages/a1/14/df0deb867c2733f7d857523c10942b3d6612a1b222502fdffa9439943dfb/pathlib2-2.3.0.tar.gz";
393 382 sha256 = "1cx5gs2v9j2vnzmcrbq5l8fq2mwrr1h6pyf1sjdji2w1bavm09fk";
394 383 };
395 384 meta = {
396 385 license = [ pkgs.lib.licenses.mit ];
397 386 };
398 387 };
399 388 "pexpect" = super.buildPythonPackage {
400 389 name = "pexpect-4.6.0";
401 390 doCheck = false;
402 391 propagatedBuildInputs = [
403 392 self."ptyprocess"
404 393 ];
405 394 src = fetchurl {
406 395 url = "https://files.pythonhosted.org/packages/89/43/07d07654ee3e25235d8cea4164cdee0ec39d1fda8e9203156ebe403ffda4/pexpect-4.6.0.tar.gz";
407 396 sha256 = "1fla85g47iaxxpjhp9vkxdnv4pgc7rplfy6ja491smrrk0jqi3ia";
408 397 };
409 398 meta = {
410 399 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
411 400 };
412 401 };
413 402 "pickleshare" = super.buildPythonPackage {
414 403 name = "pickleshare-0.7.4";
415 404 doCheck = false;
416 405 propagatedBuildInputs = [
417 406 self."pathlib2"
418 407 ];
419 408 src = fetchurl {
420 409 url = "https://files.pythonhosted.org/packages/69/fe/dd137d84daa0fd13a709e448138e310d9ea93070620c9db5454e234af525/pickleshare-0.7.4.tar.gz";
421 410 sha256 = "0yvk14dzxk7g6qpr7iw23vzqbsr0dh4ij4xynkhnzpfz4xr2bac4";
422 411 };
423 412 meta = {
424 413 license = [ pkgs.lib.licenses.mit ];
425 414 };
426 415 };
427 416 "plaster" = super.buildPythonPackage {
428 417 name = "plaster-1.0";
429 418 doCheck = false;
430 419 propagatedBuildInputs = [
431 420 self."setuptools"
432 421 ];
433 422 src = fetchurl {
434 423 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
435 424 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
436 425 };
437 426 meta = {
438 427 license = [ pkgs.lib.licenses.mit ];
439 428 };
440 429 };
441 430 "plaster-pastedeploy" = super.buildPythonPackage {
442 431 name = "plaster-pastedeploy-0.6";
443 432 doCheck = false;
444 433 propagatedBuildInputs = [
445 434 self."pastedeploy"
446 435 self."plaster"
447 436 ];
448 437 src = fetchurl {
449 438 url = "https://files.pythonhosted.org/packages/3f/e7/6a6833158d2038ec40085433308a1e164fd1dac595513f6dd556d5669bb8/plaster_pastedeploy-0.6.tar.gz";
450 439 sha256 = "1bkggk18f4z2bmsmxyxabvf62znvjwbivzh880419r3ap0616cf2";
451 440 };
452 441 meta = {
453 442 license = [ pkgs.lib.licenses.mit ];
454 443 };
455 444 };
456 445 "pluggy" = super.buildPythonPackage {
457 446 name = "pluggy-0.6.0";
458 447 doCheck = false;
459 448 src = fetchurl {
460 449 url = "https://files.pythonhosted.org/packages/11/bf/cbeb8cdfaffa9f2ea154a30ae31a9d04a1209312e2919138b4171a1f8199/pluggy-0.6.0.tar.gz";
461 450 sha256 = "1zqckndfn85l1cd8pndw212zg1bq9fkg1nnj32kp2mppppsyg2kz";
462 451 };
463 452 meta = {
464 453 license = [ pkgs.lib.licenses.mit ];
465 454 };
466 455 };
467 456 "prompt-toolkit" = super.buildPythonPackage {
468 457 name = "prompt-toolkit-1.0.15";
469 458 doCheck = false;
470 459 propagatedBuildInputs = [
471 460 self."six"
472 461 self."wcwidth"
473 462 ];
474 463 src = fetchurl {
475 464 url = "https://files.pythonhosted.org/packages/8a/ad/cf6b128866e78ad6d7f1dc5b7f99885fb813393d9860778b2984582e81b5/prompt_toolkit-1.0.15.tar.gz";
476 465 sha256 = "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5";
477 466 };
478 467 meta = {
479 468 license = [ pkgs.lib.licenses.bsdOriginal ];
480 469 };
481 470 };
482 471 "psutil" = super.buildPythonPackage {
483 472 name = "psutil-5.4.6";
484 473 doCheck = false;
485 474 src = fetchurl {
486 475 url = "https://files.pythonhosted.org/packages/51/9e/0f8f5423ce28c9109807024f7bdde776ed0b1161de20b408875de7e030c3/psutil-5.4.6.tar.gz";
487 476 sha256 = "1xmw4qi6hnrhw81xqzkvmsm9im7j2vkk4v26ycjwq2jczqsmlvk8";
488 477 };
489 478 meta = {
490 479 license = [ pkgs.lib.licenses.bsdOriginal ];
491 480 };
492 481 };
493 482 "ptyprocess" = super.buildPythonPackage {
494 483 name = "ptyprocess-0.6.0";
495 484 doCheck = false;
496 485 src = fetchurl {
497 486 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
498 487 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
499 488 };
500 489 meta = {
501 490 license = [ ];
502 491 };
503 492 };
504 493 "py" = super.buildPythonPackage {
505 494 name = "py-1.5.3";
506 495 doCheck = false;
507 496 src = fetchurl {
508 497 url = "https://files.pythonhosted.org/packages/f7/84/b4c6e84672c4ceb94f727f3da8344037b62cee960d80e999b1cd9b832d83/py-1.5.3.tar.gz";
509 498 sha256 = "10gq2lckvgwlk9w6yzijhzkarx44hsaknd0ypa08wlnpjnsgmj99";
510 499 };
511 500 meta = {
512 501 license = [ pkgs.lib.licenses.mit ];
513 502 };
514 503 };
515 504 "pygments" = super.buildPythonPackage {
516 505 name = "pygments-2.2.0";
517 506 doCheck = false;
518 507 src = fetchurl {
519 508 url = "https://files.pythonhosted.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz";
520 509 sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv";
521 510 };
522 511 meta = {
523 512 license = [ pkgs.lib.licenses.bsdOriginal ];
524 513 };
525 514 };
526 515 "pyramid" = super.buildPythonPackage {
527 516 name = "pyramid-1.9.2";
528 517 doCheck = false;
529 518 propagatedBuildInputs = [
530 519 self."setuptools"
531 520 self."webob"
532 521 self."repoze.lru"
533 522 self."zope.interface"
534 523 self."zope.deprecation"
535 524 self."venusian"
536 525 self."translationstring"
537 526 self."pastedeploy"
538 527 self."plaster"
539 528 self."plaster-pastedeploy"
540 529 self."hupper"
541 530 ];
542 531 src = fetchurl {
543 532 url = "https://files.pythonhosted.org/packages/a0/c1/b321d07cfc4870541989ad131c86a1d593bfe802af0eca9718a0dadfb97a/pyramid-1.9.2.tar.gz";
544 533 sha256 = "09drsl0346nchgxp2j7sa5hlk7mkhfld9wvbd0wicacrp26a92fg";
545 534 };
546 535 meta = {
547 536 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
548 537 };
549 538 };
550 539 "pyramid-mako" = super.buildPythonPackage {
551 540 name = "pyramid-mako-1.0.2";
552 541 doCheck = false;
553 542 propagatedBuildInputs = [
554 543 self."pyramid"
555 544 self."mako"
556 545 ];
557 546 src = fetchurl {
558 547 url = "https://files.pythonhosted.org/packages/f1/92/7e69bcf09676d286a71cb3bbb887b16595b96f9ba7adbdc239ffdd4b1eb9/pyramid_mako-1.0.2.tar.gz";
559 548 sha256 = "18gk2vliq8z4acblsl6yzgbvnr9rlxjlcqir47km7kvlk1xri83d";
560 549 };
561 550 meta = {
562 551 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
563 552 };
564 553 };
565 554 "pytest" = super.buildPythonPackage {
566 555 name = "pytest-3.6.0";
567 556 doCheck = false;
568 557 propagatedBuildInputs = [
569 558 self."py"
570 559 self."six"
571 560 self."setuptools"
572 561 self."attrs"
573 562 self."more-itertools"
574 563 self."atomicwrites"
575 564 self."pluggy"
576 565 self."funcsigs"
577 566 ];
578 567 src = fetchurl {
579 568 url = "https://files.pythonhosted.org/packages/67/6a/5bcdc22f8dbada1d2910d6e1a3a03f6b14306c78f81122890735b28be4bf/pytest-3.6.0.tar.gz";
580 569 sha256 = "0bdfazvjjbxssqzyvkb3m2x2in7xv56ipr899l00s87k7815sm9r";
581 570 };
582 571 meta = {
583 572 license = [ pkgs.lib.licenses.mit ];
584 573 };
585 574 };
586 575 "pytest-cov" = super.buildPythonPackage {
587 576 name = "pytest-cov-2.5.1";
588 577 doCheck = false;
589 578 propagatedBuildInputs = [
590 579 self."pytest"
591 580 self."coverage"
592 581 ];
593 582 src = fetchurl {
594 583 url = "https://files.pythonhosted.org/packages/24/b4/7290d65b2f3633db51393bdf8ae66309b37620bc3ec116c5e357e3e37238/pytest-cov-2.5.1.tar.gz";
595 584 sha256 = "0bbfpwdh9k3636bxc88vz9fa7vf4akchgn513ql1vd0xy4n7bah3";
596 585 };
597 586 meta = {
598 587 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
599 588 };
600 589 };
601 590 "pytest-profiling" = super.buildPythonPackage {
602 591 name = "pytest-profiling-1.3.0";
603 592 doCheck = false;
604 593 propagatedBuildInputs = [
605 594 self."six"
606 595 self."pytest"
607 596 self."gprof2dot"
608 597 ];
609 598 src = fetchurl {
610 599 url = "https://files.pythonhosted.org/packages/f5/34/4626126e041a51ef50a80d0619519b18d20aef249aac25b0d0fdd47e57ee/pytest-profiling-1.3.0.tar.gz";
611 600 sha256 = "08r5afx5z22yvpmsnl91l4amsy1yxn8qsmm61mhp06mz8zjs51kb";
612 601 };
613 602 meta = {
614 603 license = [ pkgs.lib.licenses.mit ];
615 604 };
616 605 };
617 606 "pytest-runner" = super.buildPythonPackage {
618 607 name = "pytest-runner-4.2";
619 608 doCheck = false;
620 609 src = fetchurl {
621 610 url = "https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz";
622 611 sha256 = "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj";
623 612 };
624 613 meta = {
625 614 license = [ pkgs.lib.licenses.mit ];
626 615 };
627 616 };
628 617 "pytest-sugar" = super.buildPythonPackage {
629 618 name = "pytest-sugar-0.9.1";
630 619 doCheck = false;
631 620 propagatedBuildInputs = [
632 621 self."pytest"
633 622 self."termcolor"
634 623 ];
635 624 src = fetchurl {
636 625 url = "https://files.pythonhosted.org/packages/3e/6a/a3f909083079d03bde11d06ab23088886bbe25f2c97fbe4bb865e2bf05bc/pytest-sugar-0.9.1.tar.gz";
637 626 sha256 = "0b4av40dv30727m54v211r0nzwjp2ajkjgxix6j484qjmwpw935b";
638 627 };
639 628 meta = {
640 629 license = [ pkgs.lib.licenses.bsdOriginal ];
641 630 };
642 631 };
643 632 "pytest-timeout" = super.buildPythonPackage {
644 633 name = "pytest-timeout-1.2.1";
645 634 doCheck = false;
646 635 propagatedBuildInputs = [
647 636 self."pytest"
648 637 ];
649 638 src = fetchurl {
650 639 url = "https://files.pythonhosted.org/packages/be/e9/a9106b8bc87521c6813060f50f7d1fdc15665bc1bbbe71c0ffc1c571aaa2/pytest-timeout-1.2.1.tar.gz";
651 640 sha256 = "1kdp6qbh5v1168l99rba5yfzvy05gmzkmkhldgp36p9xcdjd5dv8";
652 641 };
653 642 meta = {
654 643 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
655 644 };
656 645 };
657 646 "repoze.lru" = super.buildPythonPackage {
658 647 name = "repoze.lru-0.7";
659 648 doCheck = false;
660 649 src = fetchurl {
661 650 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
662 651 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
663 652 };
664 653 meta = {
665 654 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
666 655 };
667 656 };
668 657 "rhodecode-vcsserver" = super.buildPythonPackage {
669 658 name = "rhodecode-vcsserver-4.13.0";
670 659 buildInputs = [
671 660 self."pytest"
672 661 self."py"
673 662 self."pytest-cov"
674 663 self."pytest-sugar"
675 664 self."pytest-runner"
676 665 self."pytest-profiling"
677 666 self."gprof2dot"
678 667 self."pytest-timeout"
679 668 self."mock"
680 669 self."webtest"
681 670 self."cov-core"
682 671 self."coverage"
683 672 self."configobj"
684 673 ];
685 674 doCheck = true;
686 675 propagatedBuildInputs = [
687 676 self."configobj"
688 677 self."dogpile.cache"
689 678 self."dogpile.core"
690 679 self."decorator"
691 680 self."dulwich"
692 681 self."hgsubversion"
693 682 self."hg-evolve"
694 self."lru-dict"
695 683 self."mako"
696 684 self."markupsafe"
697 685 self."mercurial"
698 686 self."msgpack-python"
699 687 self."pastedeploy"
700 688 self."psutil"
701 689 self."pyramid"
702 690 self."pyramid-mako"
703 691 self."pygments"
704 692 self."pathlib2"
705 693 self."repoze.lru"
706 694 self."simplejson"
707 695 self."subprocess32"
708 696 self."subvertpy"
709 697 self."six"
710 698 self."translationstring"
711 699 self."webob"
712 700 self."zope.deprecation"
713 701 self."zope.interface"
714 702 self."gevent"
715 703 self."greenlet"
716 704 self."gunicorn"
717 705 self."waitress"
718 706 self."ipdb"
719 707 self."ipython"
720 708 self."pytest"
721 709 self."py"
722 710 self."pytest-cov"
723 711 self."pytest-sugar"
724 712 self."pytest-runner"
725 713 self."pytest-profiling"
726 714 self."gprof2dot"
727 715 self."pytest-timeout"
728 716 self."mock"
729 717 self."webtest"
730 718 self."cov-core"
731 719 self."coverage"
732 720 ];
733 721 src = ./.;
734 722 meta = {
735 723 license = [ { fullName = "GPL V3"; } { fullName = "GNU General Public License v3 or later (GPLv3+)"; } ];
736 724 };
737 725 };
738 726 "scandir" = super.buildPythonPackage {
739 727 name = "scandir-1.7";
740 728 doCheck = false;
741 729 src = fetchurl {
742 730 url = "https://files.pythonhosted.org/packages/13/bb/e541b74230bbf7a20a3949a2ee6631be299378a784f5445aa5d0047c192b/scandir-1.7.tar.gz";
743 731 sha256 = "0gbnhjzg42rj87ljv9kb648rfxph69ly3c8r9841dxy4d7l5pmdj";
744 732 };
745 733 meta = {
746 734 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
747 735 };
748 736 };
749 737 "simplegeneric" = super.buildPythonPackage {
750 738 name = "simplegeneric-0.8.1";
751 739 doCheck = false;
752 740 src = fetchurl {
753 741 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
754 742 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
755 743 };
756 744 meta = {
757 745 license = [ pkgs.lib.licenses.zpl21 ];
758 746 };
759 747 };
760 748 "simplejson" = super.buildPythonPackage {
761 749 name = "simplejson-3.11.1";
762 750 doCheck = false;
763 751 src = fetchurl {
764 752 url = "https://files.pythonhosted.org/packages/08/48/c97b668d6da7d7bebe7ea1817a6f76394b0ec959cb04214ca833c34359df/simplejson-3.11.1.tar.gz";
765 753 sha256 = "1rr58dppsq73p0qcd9bsw066cdd3v63sqv7j6sqni8frvm4jv8h1";
766 754 };
767 755 meta = {
768 756 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
769 757 };
770 758 };
771 759 "six" = super.buildPythonPackage {
772 760 name = "six-1.11.0";
773 761 doCheck = false;
774 762 src = fetchurl {
775 763 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
776 764 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
777 765 };
778 766 meta = {
779 767 license = [ pkgs.lib.licenses.mit ];
780 768 };
781 769 };
782 770 "subprocess32" = super.buildPythonPackage {
783 771 name = "subprocess32-3.5.1";
784 772 doCheck = false;
785 773 src = fetchurl {
786 774 url = "https://files.pythonhosted.org/packages/de/fb/fd3e91507021e2aecdb081d1b920082628d6b8869ead845e3e87b3d2e2ca/subprocess32-3.5.1.tar.gz";
787 775 sha256 = "0wgi3bfnssid1g6h0v803z3k1wjal6il16nr3r9c587cfzwfkv0q";
788 776 };
789 777 meta = {
790 778 license = [ pkgs.lib.licenses.psfl ];
791 779 };
792 780 };
793 781 "subvertpy" = super.buildPythonPackage {
794 782 name = "subvertpy-0.10.1";
795 783 doCheck = false;
796 784 src = fetchurl {
797 785 url = "https://files.pythonhosted.org/packages/9d/76/99fa82affce75f5ac0f7dbe513796c3f37311ace0c68e1b063683b4f9b99/subvertpy-0.10.1.tar.gz";
798 786 sha256 = "061ncy9wjz3zyv527avcrdyk0xygyssyy7p1644nhzhwp8zpybij";
799 787 };
800 788 meta = {
801 789 license = [ pkgs.lib.licenses.lgpl21Plus pkgs.lib.licenses.gpl2Plus ];
802 790 };
803 791 };
804 792 "termcolor" = super.buildPythonPackage {
805 793 name = "termcolor-1.1.0";
806 794 doCheck = false;
807 795 src = fetchurl {
808 796 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
809 797 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
810 798 };
811 799 meta = {
812 800 license = [ pkgs.lib.licenses.mit ];
813 801 };
814 802 };
815 803 "traitlets" = super.buildPythonPackage {
816 804 name = "traitlets-4.3.2";
817 805 doCheck = false;
818 806 propagatedBuildInputs = [
819 807 self."ipython-genutils"
820 808 self."six"
821 809 self."decorator"
822 810 self."enum34"
823 811 ];
824 812 src = fetchurl {
825 813 url = "https://files.pythonhosted.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz";
826 814 sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww";
827 815 };
828 816 meta = {
829 817 license = [ pkgs.lib.licenses.bsdOriginal ];
830 818 };
831 819 };
832 820 "translationstring" = super.buildPythonPackage {
833 821 name = "translationstring-1.3";
834 822 doCheck = false;
835 823 src = fetchurl {
836 824 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
837 825 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
838 826 };
839 827 meta = {
840 828 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
841 829 };
842 830 };
843 831 "venusian" = super.buildPythonPackage {
844 832 name = "venusian-1.1.0";
845 833 doCheck = false;
846 834 src = fetchurl {
847 835 url = "https://files.pythonhosted.org/packages/38/24/b4b470ab9e0a2e2e9b9030c7735828c8934b4c6b45befd1bb713ec2aeb2d/venusian-1.1.0.tar.gz";
848 836 sha256 = "0zapz131686qm0gazwy8bh11vr57pr89jbwbl50s528sqy9f80lr";
849 837 };
850 838 meta = {
851 839 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
852 840 };
853 841 };
854 842 "waitress" = super.buildPythonPackage {
855 843 name = "waitress-1.1.0";
856 844 doCheck = false;
857 845 src = fetchurl {
858 846 url = "https://files.pythonhosted.org/packages/3c/68/1c10dd5c556872ceebe88483b0436140048d39de83a84a06a8baa8136f4f/waitress-1.1.0.tar.gz";
859 847 sha256 = "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k";
860 848 };
861 849 meta = {
862 850 license = [ pkgs.lib.licenses.zpl21 ];
863 851 };
864 852 };
865 853 "wcwidth" = super.buildPythonPackage {
866 854 name = "wcwidth-0.1.7";
867 855 doCheck = false;
868 856 src = fetchurl {
869 857 url = "https://files.pythonhosted.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz";
870 858 sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx";
871 859 };
872 860 meta = {
873 861 license = [ pkgs.lib.licenses.mit ];
874 862 };
875 863 };
876 864 "webob" = super.buildPythonPackage {
877 865 name = "webob-1.7.4";
878 866 doCheck = false;
879 867 src = fetchurl {
880 868 url = "https://files.pythonhosted.org/packages/75/34/731e23f52371852dfe7490a61644826ba7fe70fd52a377aaca0f4956ba7f/WebOb-1.7.4.tar.gz";
881 869 sha256 = "1na01ljg04z40il7vcrn8g29vaw7nvg1xvhk64cr4jys5wcay44d";
882 870 };
883 871 meta = {
884 872 license = [ pkgs.lib.licenses.mit ];
885 873 };
886 874 };
887 875 "webtest" = super.buildPythonPackage {
888 876 name = "webtest-2.0.29";
889 877 doCheck = false;
890 878 propagatedBuildInputs = [
891 879 self."six"
892 880 self."webob"
893 881 self."waitress"
894 882 self."beautifulsoup4"
895 883 ];
896 884 src = fetchurl {
897 885 url = "https://files.pythonhosted.org/packages/94/de/8f94738be649997da99c47b104aa3c3984ecec51a1d8153ed09638253d56/WebTest-2.0.29.tar.gz";
898 886 sha256 = "0bcj1ica5lnmj5zbvk46x28kgphcsgh7sfnwjmn0cr94mhawrg6v";
899 887 };
900 888 meta = {
901 889 license = [ pkgs.lib.licenses.mit ];
902 890 };
903 891 };
904 892 "zope.deprecation" = super.buildPythonPackage {
905 893 name = "zope.deprecation-4.3.0";
906 894 doCheck = false;
907 895 propagatedBuildInputs = [
908 896 self."setuptools"
909 897 ];
910 898 src = fetchurl {
911 899 url = "https://files.pythonhosted.org/packages/a1/18/2dc5e6bfe64fdc3b79411b67464c55bb0b43b127051a20f7f492ab767758/zope.deprecation-4.3.0.tar.gz";
912 900 sha256 = "095jas41wbxgmw95kwdxqhbc3bgihw2hzj9b3qpdg85apcsf2lkx";
913 901 };
914 902 meta = {
915 903 license = [ pkgs.lib.licenses.zpl21 ];
916 904 };
917 905 };
918 906 "zope.interface" = super.buildPythonPackage {
919 907 name = "zope.interface-4.5.0";
920 908 doCheck = false;
921 909 propagatedBuildInputs = [
922 910 self."setuptools"
923 911 ];
924 912 src = fetchurl {
925 913 url = "https://files.pythonhosted.org/packages/ac/8a/657532df378c2cd2a1fe6b12be3b4097521570769d4852ec02c24bd3594e/zope.interface-4.5.0.tar.gz";
926 914 sha256 = "0k67m60ij06wkg82n15qgyn96waf4pmrkhv0njpkfzpmv5q89hsp";
927 915 };
928 916 meta = {
929 917 license = [ pkgs.lib.licenses.zpl21 ];
930 918 };
931 919 };
932 920
933 921 ### Test requirements
934 922
935 923
936 924 }
@@ -1,47 +1,46 b''
1 1 ## dependencies
2 2
3 3 # our custom configobj
4 4 https://code.rhodecode.com/upstream/configobj/archive/a11ff0a0bd4fbda9e3a91267e720f88329efb4a6.tar.gz?md5=9916c524ea11a6c418217af6b28d4b3c#egg=configobj==5.0.6
5 5 dogpile.cache==0.6.6
6 6 dogpile.core==0.4.1
7 7 decorator==4.1.2
8 8 dulwich==0.13.0
9 9 hgsubversion==1.9.2
10 10 hg-evolve==8.0.1
11 lru-dict==1.1.6
12 11 mako==1.0.7
13 12 markupsafe==1.0.0
14 13 mercurial==4.6.2
15 14 msgpack-python==0.5.6
16 15
17 16 pastedeploy==1.5.2
18 17 psutil==5.4.6
19 18 pyramid==1.9.2
20 19 pyramid-mako==1.0.2
21 20
22 21 pygments==2.2.0
23 22 pathlib2==2.3.0
24 23 repoze.lru==0.7
25 24 simplejson==3.11.1
26 25 subprocess32==3.5.1
27 26
28 27 subvertpy==0.10.1
29 28
30 29 six==1.11.0
31 30 translationstring==1.3
32 31 webob==1.7.4
33 32 zope.deprecation==4.3.0
34 33 zope.interface==4.5.0
35 34
36 35 ## http servers
37 36 gevent==1.3.5
38 37 greenlet==0.4.13
39 38 gunicorn==19.9.0
40 39 waitress==1.1.0
41 40
42 41 ## debug
43 42 ipdb==0.11.0
44 43 ipython==5.1.0
45 44
46 45 ## test related requirements
47 46 -r requirements_test.txt
@@ -1,51 +1,51 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
6 6 # the Free Software Foundation; either version 3 of the License, or
7 7 # (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software Foundation,
16 16 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 17
18 18 import logging
19 19
20 20 from dogpile.cache.backends import memory as memory_backend
21 from lru import LRU as LRUDict
21 from vcsserver.lib.memory_lru_dict import LRUDict, LRUDictDebug
22 22
23 23
24 24 _default_max_size = 1024
25 25
26 26 log = logging.getLogger(__name__)
27 27
28 28
29 29 class LRUMemoryBackend(memory_backend.MemoryBackend):
30 30 pickle_values = False
31 31
32 32 def __init__(self, arguments):
33 33 max_size = arguments.pop('max_size', _default_max_size)
34 callback = None
35 if arguments.pop('log_max_size_reached', None):
36 def evicted(key, value):
37 log.debug(
38 'LRU: evicting key `%s` due to max size %s reach', key, max_size)
39 callback = evicted
40 34
41 arguments['cache_dict'] = LRUDict(max_size, callback=callback)
35 LRUDictClass = LRUDict
36 if arguments.pop('log_key_count', None):
37 LRUDictClass = LRUDictDebug
38
39 arguments['cache_dict'] = LRUDictClass(max_size)
42 40 super(LRUMemoryBackend, self).__init__(arguments)
43 41
44 42 def delete(self, key):
45 if self._cache.has_key(key):
43 try:
46 44 del self._cache[key]
45 except KeyError:
46 # we don't care if key isn't there at deletion
47 pass
47 48
48 49 def delete_multi(self, keys):
49 50 for key in keys:
50 if self._cache.has_key(key):
51 del self._cache[key]
51 self.delete(key)
General Comments 0
You need to be logged in to leave comments. Login now