##// END OF EJS Templates
emails: added premailer for inline style formatting to make emails render nicer on all email clients.
marcink -
r4275:9be1d088 default
parent child Browse files
Show More
@@ -1,2403 +1,2444 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 "alembic" = super.buildPythonPackage {
8 8 name = "alembic-1.4.2";
9 9 doCheck = false;
10 10 propagatedBuildInputs = [
11 11 self."sqlalchemy"
12 12 self."mako"
13 13 self."python-editor"
14 14 self."python-dateutil"
15 15 ];
16 16 src = fetchurl {
17 17 url = "https://files.pythonhosted.org/packages/60/1e/cabc75a189de0fbb2841d0975243e59bde8b7822bacbb95008ac6fe9ad47/alembic-1.4.2.tar.gz";
18 18 sha256 = "1gsdrzx9h7wfva200qvvsc9sn4w79mk2vs0bbnzjhxi1jw2b0nh3";
19 19 };
20 20 meta = {
21 21 license = [ pkgs.lib.licenses.mit ];
22 22 };
23 23 };
24 24 "amqp" = super.buildPythonPackage {
25 25 name = "amqp-2.5.2";
26 26 doCheck = false;
27 27 propagatedBuildInputs = [
28 28 self."vine"
29 29 ];
30 30 src = fetchurl {
31 31 url = "https://files.pythonhosted.org/packages/92/1d/433541994a5a69f4ad2fff39746ddbb0bdedb0ea0d85673eb0db68a7edd9/amqp-2.5.2.tar.gz";
32 32 sha256 = "13dhhfxjrqcjybnq4zahg92mydhpg2l76nxcmq7d560687wsxwbp";
33 33 };
34 34 meta = {
35 35 license = [ pkgs.lib.licenses.bsdOriginal ];
36 36 };
37 37 };
38 38 "appenlight-client" = super.buildPythonPackage {
39 39 name = "appenlight-client-0.6.26";
40 40 doCheck = false;
41 41 propagatedBuildInputs = [
42 42 self."webob"
43 43 self."requests"
44 44 self."six"
45 45 ];
46 46 src = fetchurl {
47 47 url = "https://files.pythonhosted.org/packages/2e/56/418fc10379b96e795ee39a15e69a730c222818af04c3821fa354eaa859ec/appenlight_client-0.6.26.tar.gz";
48 48 sha256 = "0s9xw3sb8s3pk73k78nnq4jil3q4mk6bczfa1fmgfx61kdxl2712";
49 49 };
50 50 meta = {
51 51 license = [ pkgs.lib.licenses.bsdOriginal ];
52 52 };
53 53 };
54 54 "asn1crypto" = super.buildPythonPackage {
55 55 name = "asn1crypto-0.24.0";
56 56 doCheck = false;
57 57 src = fetchurl {
58 58 url = "https://files.pythonhosted.org/packages/fc/f1/8db7daa71f414ddabfa056c4ef792e1461ff655c2ae2928a2b675bfed6b4/asn1crypto-0.24.0.tar.gz";
59 59 sha256 = "0jaf8rf9dx1lf23xfv2cdd5h52f1qr3w8k63985bc35g3d220p4x";
60 60 };
61 61 meta = {
62 62 license = [ pkgs.lib.licenses.mit ];
63 63 };
64 64 };
65 65 "atomicwrites" = super.buildPythonPackage {
66 66 name = "atomicwrites-1.3.0";
67 67 doCheck = false;
68 68 src = fetchurl {
69 69 url = "https://files.pythonhosted.org/packages/ec/0f/cd484ac8820fed363b374af30049adc8fd13065720fd4f4c6be8a2309da7/atomicwrites-1.3.0.tar.gz";
70 70 sha256 = "19ngcscdf3jsqmpcxn6zl5b6anmsajb6izp1smcd1n02midl9abm";
71 71 };
72 72 meta = {
73 73 license = [ pkgs.lib.licenses.mit ];
74 74 };
75 75 };
76 76 "attrs" = super.buildPythonPackage {
77 77 name = "attrs-19.3.0";
78 78 doCheck = false;
79 79 src = fetchurl {
80 80 url = "https://files.pythonhosted.org/packages/98/c3/2c227e66b5e896e15ccdae2e00bbc69aa46e9a8ce8869cc5fa96310bf612/attrs-19.3.0.tar.gz";
81 81 sha256 = "0wky4h28n7xnr6xv69p9z6kv8bzn50d10c3drmd9ds8gawbcxdzp";
82 82 };
83 83 meta = {
84 84 license = [ pkgs.lib.licenses.mit ];
85 85 };
86 86 };
87 87 "babel" = super.buildPythonPackage {
88 88 name = "babel-1.3";
89 89 doCheck = false;
90 90 propagatedBuildInputs = [
91 91 self."pytz"
92 92 ];
93 93 src = fetchurl {
94 94 url = "https://files.pythonhosted.org/packages/33/27/e3978243a03a76398c384c83f7ca879bc6e8f1511233a621fcada135606e/Babel-1.3.tar.gz";
95 95 sha256 = "0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz";
96 96 };
97 97 meta = {
98 98 license = [ pkgs.lib.licenses.bsdOriginal ];
99 99 };
100 100 };
101 101 "backports.shutil-get-terminal-size" = super.buildPythonPackage {
102 102 name = "backports.shutil-get-terminal-size-1.0.0";
103 103 doCheck = false;
104 104 src = fetchurl {
105 105 url = "https://files.pythonhosted.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b/backports.shutil_get_terminal_size-1.0.0.tar.gz";
106 106 sha256 = "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki";
107 107 };
108 108 meta = {
109 109 license = [ pkgs.lib.licenses.mit ];
110 110 };
111 111 };
112 112 "beaker" = super.buildPythonPackage {
113 113 name = "beaker-1.9.1";
114 114 doCheck = false;
115 115 propagatedBuildInputs = [
116 116 self."funcsigs"
117 117 ];
118 118 src = fetchurl {
119 119 url = "https://files.pythonhosted.org/packages/ca/14/a626188d0d0c7b55dd7cf1902046c2743bd392a7078bb53073e13280eb1e/Beaker-1.9.1.tar.gz";
120 120 sha256 = "08arsn61r255lhz6hcpn2lsiqpg30clla805ysx06wmbhvb6w9rj";
121 121 };
122 122 meta = {
123 123 license = [ pkgs.lib.licenses.bsdOriginal ];
124 124 };
125 125 };
126 126 "beautifulsoup4" = super.buildPythonPackage {
127 127 name = "beautifulsoup4-4.6.3";
128 128 doCheck = false;
129 129 src = fetchurl {
130 130 url = "https://files.pythonhosted.org/packages/88/df/86bffad6309f74f3ff85ea69344a078fc30003270c8df6894fca7a3c72ff/beautifulsoup4-4.6.3.tar.gz";
131 131 sha256 = "041dhalzjciw6qyzzq7a2k4h1yvyk76xigp35hv5ibnn448ydy4h";
132 132 };
133 133 meta = {
134 134 license = [ pkgs.lib.licenses.mit ];
135 135 };
136 136 };
137 137 "billiard" = super.buildPythonPackage {
138 138 name = "billiard-3.6.1.0";
139 139 doCheck = false;
140 140 src = fetchurl {
141 141 url = "https://files.pythonhosted.org/packages/68/1d/2aea8fbb0b1e1260a8a2e77352de2983d36d7ac01207cf14c2b9c6cc860e/billiard-3.6.1.0.tar.gz";
142 142 sha256 = "09hzy3aqi7visy4vmf4xiish61n0rq5nd3iwjydydps8yrs9r05q";
143 143 };
144 144 meta = {
145 145 license = [ pkgs.lib.licenses.bsdOriginal ];
146 146 };
147 147 };
148 148 "bleach" = super.buildPythonPackage {
149 149 name = "bleach-3.1.3";
150 150 doCheck = false;
151 151 propagatedBuildInputs = [
152 152 self."six"
153 153 self."webencodings"
154 154 ];
155 155 src = fetchurl {
156 156 url = "https://files.pythonhosted.org/packages/de/09/5267f8577a92487ed43bc694476c4629c6eca2e3c93fcf690a26bfe39e1d/bleach-3.1.3.tar.gz";
157 157 sha256 = "0al437aw4p2xp83az5hhlrp913nsf0cg6kg4qj3fjhv4wakxipzq";
158 158 };
159 159 meta = {
160 160 license = [ pkgs.lib.licenses.asl20 ];
161 161 };
162 162 };
163 163 "bumpversion" = super.buildPythonPackage {
164 164 name = "bumpversion-0.5.3";
165 165 doCheck = false;
166 166 src = fetchurl {
167 167 url = "https://files.pythonhosted.org/packages/14/41/8c9da3549f8e00c84f0432c3a8cf8ed6898374714676aab91501d48760db/bumpversion-0.5.3.tar.gz";
168 168 sha256 = "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37";
169 169 };
170 170 meta = {
171 171 license = [ pkgs.lib.licenses.mit ];
172 172 };
173 173 };
174 "cachetools" = super.buildPythonPackage {
175 name = "cachetools-3.1.1";
176 doCheck = false;
177 src = fetchurl {
178 url = "https://files.pythonhosted.org/packages/ae/37/7fd45996b19200e0cb2027a0b6bef4636951c4ea111bfad36c71287247f6/cachetools-3.1.1.tar.gz";
179 sha256 = "16m69l6n6y1r1y7cklm92rr7v69ldig2n3lbl3j323w5jz7d78lf";
180 };
181 meta = {
182 license = [ pkgs.lib.licenses.mit ];
183 };
184 };
174 185 "celery" = super.buildPythonPackage {
175 186 name = "celery-4.3.0";
176 187 doCheck = false;
177 188 propagatedBuildInputs = [
178 189 self."pytz"
179 190 self."billiard"
180 191 self."kombu"
181 192 self."vine"
182 193 ];
183 194 src = fetchurl {
184 195 url = "https://files.pythonhosted.org/packages/a2/4b/d020836f751617e907e84753a41c92231cd4b673ff991b8ee9da52361323/celery-4.3.0.tar.gz";
185 196 sha256 = "1y8y0gbgkwimpxqnxq2rm5qz2vy01fvjiybnpm00y5rzd2m34iac";
186 197 };
187 198 meta = {
188 199 license = [ pkgs.lib.licenses.bsdOriginal ];
189 200 };
190 201 };
191 202 "certifi" = super.buildPythonPackage {
192 203 name = "certifi-2019.11.28";
193 204 doCheck = false;
194 205 src = fetchurl {
195 206 url = "https://files.pythonhosted.org/packages/41/bf/9d214a5af07debc6acf7f3f257265618f1db242a3f8e49a9b516f24523a6/certifi-2019.11.28.tar.gz";
196 207 sha256 = "07qg6864bk4qxa8akr967amlmsq9v310hp039mcpjx6dliylrdi5";
197 208 };
198 209 meta = {
199 210 license = [ pkgs.lib.licenses.mpl20 { fullName = "Mozilla Public License 2.0 (MPL 2.0)"; } ];
200 211 };
201 212 };
202 213 "cffi" = super.buildPythonPackage {
203 214 name = "cffi-1.12.3";
204 215 doCheck = false;
205 216 propagatedBuildInputs = [
206 217 self."pycparser"
207 218 ];
208 219 src = fetchurl {
209 220 url = "https://files.pythonhosted.org/packages/93/1a/ab8c62b5838722f29f3daffcc8d4bd61844aa9b5f437341cc890ceee483b/cffi-1.12.3.tar.gz";
210 221 sha256 = "0x075521fxwv0mfp4cqzk7lvmw4n94bjw601qkcv314z5s182704";
211 222 };
212 223 meta = {
213 224 license = [ pkgs.lib.licenses.mit ];
214 225 };
215 226 };
216 227 "chameleon" = super.buildPythonPackage {
217 228 name = "chameleon-2.24";
218 229 doCheck = false;
219 230 src = fetchurl {
220 231 url = "https://files.pythonhosted.org/packages/5a/9e/637379ffa13c5172b5c0e704833ffea6bf51cec7567f93fd6e903d53ed74/Chameleon-2.24.tar.gz";
221 232 sha256 = "0ykqr7syxfa6h9adjfnsv1gdsca2xzm22vmic8859n0f0j09abj5";
222 233 };
223 234 meta = {
224 235 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
225 236 };
226 237 };
227 238 "channelstream" = super.buildPythonPackage {
228 239 name = "channelstream-0.5.2";
229 240 doCheck = false;
230 241 propagatedBuildInputs = [
231 242 self."gevent"
232 243 self."ws4py"
233 244 self."pyramid"
234 245 self."pyramid-jinja2"
235 246 self."itsdangerous"
236 247 self."requests"
237 248 self."six"
238 249 ];
239 250 src = fetchurl {
240 251 url = "https://files.pythonhosted.org/packages/2b/31/29a8e085cf5bf97fa88e7b947adabfc581a18a3463adf77fb6dada34a65f/channelstream-0.5.2.tar.gz";
241 252 sha256 = "1qbm4xdl5hfkja683x546bncg3rqq8qv79w1m1a1wd48cqqzb6rm";
242 253 };
243 254 meta = {
244 255 license = [ pkgs.lib.licenses.bsdOriginal ];
245 256 };
246 257 };
247 258 "chardet" = super.buildPythonPackage {
248 259 name = "chardet-3.0.4";
249 260 doCheck = false;
250 261 src = fetchurl {
251 262 url = "https://files.pythonhosted.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz";
252 263 sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
253 264 };
254 265 meta = {
255 266 license = [ { fullName = "LGPL"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
256 267 };
257 268 };
258 269 "click" = super.buildPythonPackage {
259 270 name = "click-7.0";
260 271 doCheck = false;
261 272 src = fetchurl {
262 273 url = "https://files.pythonhosted.org/packages/f8/5c/f60e9d8a1e77005f664b76ff8aeaee5bc05d0a91798afd7f53fc998dbc47/Click-7.0.tar.gz";
263 274 sha256 = "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v";
264 275 };
265 276 meta = {
266 277 license = [ pkgs.lib.licenses.bsdOriginal ];
267 278 };
268 279 };
269 280 "colander" = super.buildPythonPackage {
270 281 name = "colander-1.7.0";
271 282 doCheck = false;
272 283 propagatedBuildInputs = [
273 284 self."translationstring"
274 285 self."iso8601"
275 286 self."enum34"
276 287 ];
277 288 src = fetchurl {
278 289 url = "https://files.pythonhosted.org/packages/db/e4/74ab06f54211917b41865cafc987ce511e35503de48da9bfe9358a1bdc3e/colander-1.7.0.tar.gz";
279 290 sha256 = "1wl1bqab307lbbcjx81i28s3yl6dlm4rf15fxawkjb6j48x1cn6p";
280 291 };
281 292 meta = {
282 293 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
283 294 };
284 295 };
285 296 "configobj" = super.buildPythonPackage {
286 297 name = "configobj-5.0.6";
287 298 doCheck = false;
288 299 propagatedBuildInputs = [
289 300 self."six"
290 301 ];
291 302 src = fetchurl {
292 303 url = "https://code.rhodecode.com/upstream/configobj/artifacts/download/0-012de99a-b1e1-4f64-a5c0-07a98a41b324.tar.gz?md5=6a513f51fe04b2c18cf84c1395a7c626";
293 304 sha256 = "0kqfrdfr14mw8yd8qwq14dv2xghpkjmd3yjsy8dfcbvpcc17xnxp";
294 305 };
295 306 meta = {
296 307 license = [ pkgs.lib.licenses.bsdOriginal ];
297 308 };
298 309 };
299 310 "configparser" = super.buildPythonPackage {
300 311 name = "configparser-4.0.2";
301 312 doCheck = false;
302 313 src = fetchurl {
303 314 url = "https://files.pythonhosted.org/packages/16/4f/48975536bd488d3a272549eb795ac4a13a5f7fcdc8995def77fbef3532ee/configparser-4.0.2.tar.gz";
304 315 sha256 = "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7";
305 316 };
306 317 meta = {
307 318 license = [ pkgs.lib.licenses.mit ];
308 319 };
309 320 };
310 321 "contextlib2" = super.buildPythonPackage {
311 322 name = "contextlib2-0.6.0.post1";
312 323 doCheck = false;
313 324 src = fetchurl {
314 325 url = "https://files.pythonhosted.org/packages/02/54/669207eb72e3d8ae8b38aa1f0703ee87a0e9f88f30d3c0a47bebdb6de242/contextlib2-0.6.0.post1.tar.gz";
315 326 sha256 = "0bhnr2ac7wy5l85ji909gyljyk85n92w8pdvslmrvc8qih4r1x01";
316 327 };
317 328 meta = {
318 329 license = [ pkgs.lib.licenses.psfl ];
319 330 };
320 331 };
321 332 "cov-core" = super.buildPythonPackage {
322 333 name = "cov-core-1.15.0";
323 334 doCheck = false;
324 335 propagatedBuildInputs = [
325 336 self."coverage"
326 337 ];
327 338 src = fetchurl {
328 339 url = "https://files.pythonhosted.org/packages/4b/87/13e75a47b4ba1be06f29f6d807ca99638bedc6b57fa491cd3de891ca2923/cov-core-1.15.0.tar.gz";
329 340 sha256 = "0k3np9ymh06yv1ib96sb6wfsxjkqhmik8qfsn119vnhga9ywc52a";
330 341 };
331 342 meta = {
332 343 license = [ pkgs.lib.licenses.mit ];
333 344 };
334 345 };
335 346 "coverage" = super.buildPythonPackage {
336 347 name = "coverage-4.5.4";
337 348 doCheck = false;
338 349 src = fetchurl {
339 350 url = "https://files.pythonhosted.org/packages/85/d5/818d0e603685c4a613d56f065a721013e942088047ff1027a632948bdae6/coverage-4.5.4.tar.gz";
340 351 sha256 = "0p0j4di6h8k6ica7jwwj09azdcg4ycxq60i9qsskmsg94cd9yzg0";
341 352 };
342 353 meta = {
343 354 license = [ pkgs.lib.licenses.asl20 ];
344 355 };
345 356 };
346 357 "cryptography" = super.buildPythonPackage {
347 358 name = "cryptography-2.6.1";
348 359 doCheck = false;
349 360 propagatedBuildInputs = [
350 361 self."asn1crypto"
351 362 self."six"
352 363 self."cffi"
353 364 self."enum34"
354 365 self."ipaddress"
355 366 ];
356 367 src = fetchurl {
357 368 url = "https://files.pythonhosted.org/packages/07/ca/bc827c5e55918ad223d59d299fff92f3563476c3b00d0a9157d9c0217449/cryptography-2.6.1.tar.gz";
358 369 sha256 = "19iwz5avym5zl6jrrrkym1rdaa9h61j20ph4cswsqgv8xg5j3j16";
359 370 };
360 371 meta = {
361 372 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD or Apache License, Version 2.0"; } pkgs.lib.licenses.asl20 ];
362 373 };
363 374 };
364 375 "cssselect" = super.buildPythonPackage {
365 376 name = "cssselect-1.0.3";
366 377 doCheck = false;
367 378 src = fetchurl {
368 379 url = "https://files.pythonhosted.org/packages/52/ea/f31e1d2e9eb130fda2a631e22eac369dc644e8807345fbed5113f2d6f92b/cssselect-1.0.3.tar.gz";
369 380 sha256 = "011jqa2jhmydhi0iz4v1w3cr540z5zas8g2bw8brdw4s4b2qnv86";
370 381 };
371 382 meta = {
372 383 license = [ pkgs.lib.licenses.bsdOriginal ];
373 384 };
374 385 };
386 "cssutils" = super.buildPythonPackage {
387 name = "cssutils-1.0.2";
388 doCheck = false;
389 src = fetchurl {
390 url = "https://files.pythonhosted.org/packages/5c/0b/c5f29d29c037e97043770b5e7c740b6252993e4b57f029b3cd03c78ddfec/cssutils-1.0.2.tar.gz";
391 sha256 = "1bxchrbqzapwijap0yhlxdil1w9bmwvgx77aizlkhc2mcxjg1z52";
392 };
393 meta = {
394 license = [ { fullName = "GNU Library or Lesser General Public License (LGPL)"; } { fullName = "LGPL 2.1 or later, see also http://cthedot.de/cssutils/"; } ];
395 };
396 };
375 397 "decorator" = super.buildPythonPackage {
376 398 name = "decorator-4.1.2";
377 399 doCheck = false;
378 400 src = fetchurl {
379 401 url = "https://files.pythonhosted.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
380 402 sha256 = "1d8npb11kxyi36mrvjdpcjij76l5zfyrz2f820brf0l0rcw4vdkw";
381 403 };
382 404 meta = {
383 405 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
384 406 };
385 407 };
386 408 "deform" = super.buildPythonPackage {
387 409 name = "deform-2.0.8";
388 410 doCheck = false;
389 411 propagatedBuildInputs = [
390 412 self."chameleon"
391 413 self."colander"
392 414 self."iso8601"
393 415 self."peppercorn"
394 416 self."translationstring"
395 417 self."zope.deprecation"
396 418 ];
397 419 src = fetchurl {
398 420 url = "https://files.pythonhosted.org/packages/21/d0/45fdf891a82722c02fc2da319cf2d1ae6b5abf9e470ad3762135a895a868/deform-2.0.8.tar.gz";
399 421 sha256 = "0wbjv98sib96649aqaygzxnrkclyy50qij2rha6fn1i4c86bfdl9";
400 422 };
401 423 meta = {
402 424 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
403 425 };
404 426 };
405 427 "defusedxml" = super.buildPythonPackage {
406 428 name = "defusedxml-0.6.0";
407 429 doCheck = false;
408 430 src = fetchurl {
409 431 url = "https://files.pythonhosted.org/packages/a4/5f/f8aa58ca0cf01cbcee728abc9d88bfeb74e95e6cb4334cfd5bed5673ea77/defusedxml-0.6.0.tar.gz";
410 432 sha256 = "1xbp8fivl3wlbyg2jrvs4lalaqv1xp9a9f29p75wdx2s2d6h717n";
411 433 };
412 434 meta = {
413 435 license = [ pkgs.lib.licenses.psfl ];
414 436 };
415 437 };
416 438 "dm.xmlsec.binding" = super.buildPythonPackage {
417 439 name = "dm.xmlsec.binding-1.3.7";
418 440 doCheck = false;
419 441 propagatedBuildInputs = [
420 442 self."setuptools"
421 443 self."lxml"
422 444 ];
423 445 src = fetchurl {
424 446 url = "https://files.pythonhosted.org/packages/2c/9e/7651982d50252692991acdae614af821fd6c79bc8dcd598ad71d55be8fc7/dm.xmlsec.binding-1.3.7.tar.gz";
425 447 sha256 = "03jjjscx1pz2nc0dwiw9nia02qbz1c6f0f9zkyr8fmvys2n5jkb3";
426 448 };
427 449 meta = {
428 450 license = [ pkgs.lib.licenses.bsdOriginal ];
429 451 };
430 452 };
431 453 "docutils" = super.buildPythonPackage {
432 454 name = "docutils-0.16";
433 455 doCheck = false;
434 456 src = fetchurl {
435 457 url = "https://files.pythonhosted.org/packages/2f/e0/3d435b34abd2d62e8206171892f174b180cd37b09d57b924ca5c2ef2219d/docutils-0.16.tar.gz";
436 458 sha256 = "1z3qliszqca9m719q3qhdkh0ghh90g500avzdgi7pl77x5h3mpn2";
437 459 };
438 460 meta = {
439 461 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.publicDomain pkgs.lib.licenses.gpl1 { fullName = "public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)"; } pkgs.lib.licenses.psfl ];
440 462 };
441 463 };
442 464 "dogpile.cache" = super.buildPythonPackage {
443 465 name = "dogpile.cache-0.9.0";
444 466 doCheck = false;
445 467 propagatedBuildInputs = [
446 468 self."decorator"
447 469 ];
448 470 src = fetchurl {
449 471 url = "https://files.pythonhosted.org/packages/ac/6a/9ac405686a94b7f009a20a50070a5786b0e1aedc707b88d40d0c4b51a82e/dogpile.cache-0.9.0.tar.gz";
450 472 sha256 = "0sr1fn6b4k5bh0cscd9yi8csqxvj4ngzildav58x5p694mc86j5k";
451 473 };
452 474 meta = {
453 475 license = [ pkgs.lib.licenses.bsdOriginal ];
454 476 };
455 477 };
456 478 "dogpile.core" = super.buildPythonPackage {
457 479 name = "dogpile.core-0.4.1";
458 480 doCheck = false;
459 481 src = fetchurl {
460 482 url = "https://files.pythonhosted.org/packages/0e/77/e72abc04c22aedf874301861e5c1e761231c288b5de369c18be8f4b5c9bb/dogpile.core-0.4.1.tar.gz";
461 483 sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
462 484 };
463 485 meta = {
464 486 license = [ pkgs.lib.licenses.bsdOriginal ];
465 487 };
466 488 };
467 489 "ecdsa" = super.buildPythonPackage {
468 490 name = "ecdsa-0.13.2";
469 491 doCheck = false;
470 492 src = fetchurl {
471 493 url = "https://files.pythonhosted.org/packages/51/76/139bf6e9b7b6684d5891212cdbd9e0739f2bfc03f380a1a6ffa700f392ac/ecdsa-0.13.2.tar.gz";
472 494 sha256 = "116qaq7bh4lcynzi613960jhsnn19v0kmsqwahiwjfj14gx4y0sw";
473 495 };
474 496 meta = {
475 497 license = [ pkgs.lib.licenses.mit ];
476 498 };
477 499 };
478 500 "elasticsearch" = super.buildPythonPackage {
479 501 name = "elasticsearch-6.3.1";
480 502 doCheck = false;
481 503 propagatedBuildInputs = [
482 504 self."urllib3"
483 505 ];
484 506 src = fetchurl {
485 507 url = "https://files.pythonhosted.org/packages/9d/ce/c4664e8380e379a9402ecfbaf158e56396da90d520daba21cfa840e0eb71/elasticsearch-6.3.1.tar.gz";
486 508 sha256 = "12y93v0yn7a4xmf969239g8gb3l4cdkclfpbk1qc8hx5qkymrnma";
487 509 };
488 510 meta = {
489 511 license = [ pkgs.lib.licenses.asl20 ];
490 512 };
491 513 };
492 514 "elasticsearch-dsl" = super.buildPythonPackage {
493 515 name = "elasticsearch-dsl-6.3.1";
494 516 doCheck = false;
495 517 propagatedBuildInputs = [
496 518 self."six"
497 519 self."python-dateutil"
498 520 self."elasticsearch"
499 521 self."ipaddress"
500 522 ];
501 523 src = fetchurl {
502 524 url = "https://files.pythonhosted.org/packages/4c/0d/1549f50c591db6bb4e66cbcc8d34a6e537c3d89aa426b167c244fd46420a/elasticsearch-dsl-6.3.1.tar.gz";
503 525 sha256 = "1gh8a0shqi105k325hgwb9avrpdjh0mc6mxwfg9ba7g6lssb702z";
504 526 };
505 527 meta = {
506 528 license = [ pkgs.lib.licenses.asl20 ];
507 529 };
508 530 };
509 531 "elasticsearch1" = super.buildPythonPackage {
510 532 name = "elasticsearch1-1.10.0";
511 533 doCheck = false;
512 534 propagatedBuildInputs = [
513 535 self."urllib3"
514 536 ];
515 537 src = fetchurl {
516 538 url = "https://files.pythonhosted.org/packages/a6/eb/73e75f9681fa71e3157b8ee878534235d57f24ee64f0e77f8d995fb57076/elasticsearch1-1.10.0.tar.gz";
517 539 sha256 = "0g89444kd5zwql4vbvyrmi2m6l6dcj6ga98j4hqxyyyz6z20aki2";
518 540 };
519 541 meta = {
520 542 license = [ pkgs.lib.licenses.asl20 ];
521 543 };
522 544 };
523 545 "elasticsearch1-dsl" = super.buildPythonPackage {
524 546 name = "elasticsearch1-dsl-0.0.12";
525 547 doCheck = false;
526 548 propagatedBuildInputs = [
527 549 self."six"
528 550 self."python-dateutil"
529 551 self."elasticsearch1"
530 552 ];
531 553 src = fetchurl {
532 554 url = "https://files.pythonhosted.org/packages/eb/9d/785342775cb10eddc9b8d7457d618a423b4f0b89d8b2b2d1bc27190d71db/elasticsearch1-dsl-0.0.12.tar.gz";
533 555 sha256 = "0ig1ly39v93hba0z975wnhbmzwj28w6w1sqlr2g7cn5spp732bhk";
534 556 };
535 557 meta = {
536 558 license = [ pkgs.lib.licenses.asl20 ];
537 559 };
538 560 };
539 561 "elasticsearch2" = super.buildPythonPackage {
540 562 name = "elasticsearch2-2.5.1";
541 563 doCheck = false;
542 564 propagatedBuildInputs = [
543 565 self."urllib3"
544 566 ];
545 567 src = fetchurl {
546 568 url = "https://files.pythonhosted.org/packages/f6/09/f9b24aa6b1120bea371cd57ef6f57c7694cf16660469456a8be6c2bdbe22/elasticsearch2-2.5.1.tar.gz";
547 569 sha256 = "19k2znpjfyp0hrq73cz7pjyj289040xpsxsm0xhh4jfh6y551g7k";
548 570 };
549 571 meta = {
550 572 license = [ pkgs.lib.licenses.asl20 ];
551 573 };
552 574 };
553 575 "entrypoints" = super.buildPythonPackage {
554 576 name = "entrypoints-0.2.2";
555 577 doCheck = false;
556 578 propagatedBuildInputs = [
557 579 self."configparser"
558 580 ];
559 581 src = fetchurl {
560 582 url = "https://code.rhodecode.com/upstream/entrypoints/artifacts/download/0-8e9ee9e4-c4db-409c-b07e-81568fd1832d.tar.gz?md5=3a027b8ff1d257b91fe257de6c43357d";
561 583 sha256 = "0qih72n2myclanplqipqxpgpj9d2yhff1pz5d02zq1cfqyd173w5";
562 584 };
563 585 meta = {
564 586 license = [ pkgs.lib.licenses.mit ];
565 587 };
566 588 };
567 589 "enum34" = super.buildPythonPackage {
568 590 name = "enum34-1.1.10";
569 591 doCheck = false;
570 592 src = fetchurl {
571 593 url = "https://files.pythonhosted.org/packages/11/c4/2da1f4952ba476677a42f25cd32ab8aaf0e1c0d0e00b89822b835c7e654c/enum34-1.1.10.tar.gz";
572 594 sha256 = "0j7ji699fwswm4vg6w1v07fkbf8dkzdm6gfh88jvs5nqgr3sgrnc";
573 595 };
574 596 meta = {
575 597 license = [ pkgs.lib.licenses.bsdOriginal ];
576 598 };
577 599 };
578 600 "formencode" = super.buildPythonPackage {
579 601 name = "formencode-1.2.4";
580 602 doCheck = false;
581 603 src = fetchurl {
582 604 url = "https://files.pythonhosted.org/packages/8e/59/0174271a6f004512e0201188593e6d319db139d14cb7490e488bbb078015/FormEncode-1.2.4.tar.gz";
583 605 sha256 = "1fgy04sdy4yry5xcjls3x3xy30dqwj58ycnkndim819jx0788w42";
584 606 };
585 607 meta = {
586 608 license = [ pkgs.lib.licenses.psfl ];
587 609 };
588 610 };
589 611 "funcsigs" = super.buildPythonPackage {
590 612 name = "funcsigs-1.0.2";
591 613 doCheck = false;
592 614 src = fetchurl {
593 615 url = "https://files.pythonhosted.org/packages/94/4a/db842e7a0545de1cdb0439bb80e6e42dfe82aaeaadd4072f2263a4fbed23/funcsigs-1.0.2.tar.gz";
594 616 sha256 = "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7";
595 617 };
596 618 meta = {
597 619 license = [ { fullName = "ASL"; } pkgs.lib.licenses.asl20 ];
598 620 };
599 621 };
600 622 "functools32" = super.buildPythonPackage {
601 623 name = "functools32-3.2.3.post2";
602 624 doCheck = false;
603 625 src = fetchurl {
604 626 url = "https://files.pythonhosted.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db/functools32-3.2.3-2.tar.gz";
605 627 sha256 = "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn";
606 628 };
607 629 meta = {
608 630 license = [ pkgs.lib.licenses.psfl ];
609 631 };
610 632 };
611 633 "future" = super.buildPythonPackage {
612 634 name = "future-0.14.3";
613 635 doCheck = false;
614 636 src = fetchurl {
615 637 url = "https://files.pythonhosted.org/packages/83/80/8ef3a11a15f8eaafafa0937b20c1b3f73527e69ab6b3fa1cf94a5a96aabb/future-0.14.3.tar.gz";
616 638 sha256 = "1savk7jx7hal032f522c5ajhh8fra6gmnadrj9adv5qxi18pv1b2";
617 639 };
618 640 meta = {
619 641 license = [ { fullName = "OSI Approved"; } pkgs.lib.licenses.mit ];
620 642 };
621 643 };
622 644 "futures" = super.buildPythonPackage {
623 645 name = "futures-3.0.2";
624 646 doCheck = false;
625 647 src = fetchurl {
626 648 url = "https://files.pythonhosted.org/packages/f8/e7/fc0fcbeb9193ba2d4de00b065e7fd5aecd0679e93ce95a07322b2b1434f4/futures-3.0.2.tar.gz";
627 649 sha256 = "0mz2pbgxbc2nbib1szifi07whjbfs4r02pv2z390z7p410awjgyw";
628 650 };
629 651 meta = {
630 652 license = [ pkgs.lib.licenses.bsdOriginal ];
631 653 };
632 654 };
633 655 "gevent" = super.buildPythonPackage {
634 656 name = "gevent-1.4.0";
635 657 doCheck = false;
636 658 propagatedBuildInputs = [
637 659 self."greenlet"
638 660 ];
639 661 src = fetchurl {
640 662 url = "https://files.pythonhosted.org/packages/ed/27/6c49b70808f569b66ec7fac2e78f076e9b204db9cf5768740cff3d5a07ae/gevent-1.4.0.tar.gz";
641 663 sha256 = "1lchr4akw2jkm5v4kz7bdm4wv3knkfhbfn9vkkz4s5yrkcxzmdqy";
642 664 };
643 665 meta = {
644 666 license = [ pkgs.lib.licenses.mit ];
645 667 };
646 668 };
647 669 "gnureadline" = super.buildPythonPackage {
648 670 name = "gnureadline-6.3.8";
649 671 doCheck = false;
650 672 src = fetchurl {
651 673 url = "https://files.pythonhosted.org/packages/50/64/86085c823cd78f9df9d8e33dce0baa71618016f8860460b82cf6610e1eb3/gnureadline-6.3.8.tar.gz";
652 674 sha256 = "0ddhj98x2nv45iz4aadk4b9m0b1kpsn1xhcbypn5cd556knhiqjq";
653 675 };
654 676 meta = {
655 677 license = [ { fullName = "GNU General Public License v3 (GPLv3)"; } pkgs.lib.licenses.gpl1 ];
656 678 };
657 679 };
658 680 "gprof2dot" = super.buildPythonPackage {
659 681 name = "gprof2dot-2017.9.19";
660 682 doCheck = false;
661 683 src = fetchurl {
662 684 url = "https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
663 685 sha256 = "17ih23ld2nzgc3xwgbay911l6lh96jp1zshmskm17n1gg2i7mg6f";
664 686 };
665 687 meta = {
666 688 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
667 689 };
668 690 };
669 691 "greenlet" = super.buildPythonPackage {
670 692 name = "greenlet-0.4.15";
671 693 doCheck = false;
672 694 src = fetchurl {
673 695 url = "https://files.pythonhosted.org/packages/f8/e8/b30ae23b45f69aa3f024b46064c0ac8e5fcb4f22ace0dca8d6f9c8bbe5e7/greenlet-0.4.15.tar.gz";
674 696 sha256 = "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll";
675 697 };
676 698 meta = {
677 699 license = [ pkgs.lib.licenses.mit ];
678 700 };
679 701 };
680 702 "gunicorn" = super.buildPythonPackage {
681 703 name = "gunicorn-19.9.0";
682 704 doCheck = false;
683 705 src = fetchurl {
684 706 url = "https://files.pythonhosted.org/packages/47/52/68ba8e5e8ba251e54006a49441f7ccabca83b6bef5aedacb4890596c7911/gunicorn-19.9.0.tar.gz";
685 707 sha256 = "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps";
686 708 };
687 709 meta = {
688 710 license = [ pkgs.lib.licenses.mit ];
689 711 };
690 712 };
691 713 "hupper" = super.buildPythonPackage {
692 714 name = "hupper-1.10.2";
693 715 doCheck = false;
694 716 src = fetchurl {
695 717 url = "https://files.pythonhosted.org/packages/41/24/ea90fef04706e54bd1635c05c50dc9cf87cda543c59303a03e7aa7dda0ce/hupper-1.10.2.tar.gz";
696 718 sha256 = "0am0p6g5cz6xmcaf04xq8q6dzdd9qz0phj6gcmpsckf2mcyza61q";
697 719 };
698 720 meta = {
699 721 license = [ pkgs.lib.licenses.mit ];
700 722 };
701 723 };
702 724 "idna" = super.buildPythonPackage {
703 725 name = "idna-2.8";
704 726 doCheck = false;
705 727 src = fetchurl {
706 728 url = "https://files.pythonhosted.org/packages/ad/13/eb56951b6f7950cadb579ca166e448ba77f9d24efc03edd7e55fa57d04b7/idna-2.8.tar.gz";
707 729 sha256 = "01rlkigdxg17sf9yar1jl8n18ls59367wqh59hnawlyg53vb6my3";
708 730 };
709 731 meta = {
710 732 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD-like"; } ];
711 733 };
712 734 };
713 735 "importlib-metadata" = super.buildPythonPackage {
714 736 name = "importlib-metadata-1.5.0";
715 737 doCheck = false;
716 738 propagatedBuildInputs = [
717 739 self."zipp"
718 740 self."pathlib2"
719 741 self."contextlib2"
720 742 self."configparser"
721 743 ];
722 744 src = fetchurl {
723 745 url = "https://files.pythonhosted.org/packages/0d/e4/638f3bde506b86f62235c595073066e7b8472fc9ee2b8c6491347f31d726/importlib_metadata-1.5.0.tar.gz";
724 746 sha256 = "00ikdj4gjhankdljnz7g5ggak4k9lql2926x0x117ir9j2lv7x86";
725 747 };
726 748 meta = {
727 749 license = [ pkgs.lib.licenses.asl20 ];
728 750 };
729 751 };
730 752 "infrae.cache" = super.buildPythonPackage {
731 753 name = "infrae.cache-1.0.1";
732 754 doCheck = false;
733 755 propagatedBuildInputs = [
734 756 self."beaker"
735 757 self."repoze.lru"
736 758 ];
737 759 src = fetchurl {
738 760 url = "https://files.pythonhosted.org/packages/bb/f0/e7d5e984cf6592fd2807dc7bc44a93f9d18e04e6a61f87fdfb2622422d74/infrae.cache-1.0.1.tar.gz";
739 761 sha256 = "1dvqsjn8vw253wz9d1pz17j79mf4bs53dvp2qxck2qdp1am1njw4";
740 762 };
741 763 meta = {
742 764 license = [ pkgs.lib.licenses.zpl21 ];
743 765 };
744 766 };
745 767 "invoke" = super.buildPythonPackage {
746 768 name = "invoke-0.13.0";
747 769 doCheck = false;
748 770 src = fetchurl {
749 771 url = "https://files.pythonhosted.org/packages/47/bf/d07ef52fa1ac645468858bbac7cb95b246a972a045e821493d17d89c81be/invoke-0.13.0.tar.gz";
750 772 sha256 = "0794vhgxfmkh0vzkkg5cfv1w82g3jc3xr18wim29far9qpx9468s";
751 773 };
752 774 meta = {
753 775 license = [ pkgs.lib.licenses.bsdOriginal ];
754 776 };
755 777 };
756 778 "ipaddress" = super.buildPythonPackage {
757 779 name = "ipaddress-1.0.23";
758 780 doCheck = false;
759 781 src = fetchurl {
760 782 url = "https://files.pythonhosted.org/packages/b9/9a/3e9da40ea28b8210dd6504d3fe9fe7e013b62bf45902b458d1cdc3c34ed9/ipaddress-1.0.23.tar.gz";
761 783 sha256 = "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p";
762 784 };
763 785 meta = {
764 786 license = [ pkgs.lib.licenses.psfl ];
765 787 };
766 788 };
767 789 "ipdb" = super.buildPythonPackage {
768 790 name = "ipdb-0.12";
769 791 doCheck = false;
770 792 propagatedBuildInputs = [
771 793 self."setuptools"
772 794 self."ipython"
773 795 ];
774 796 src = fetchurl {
775 797 url = "https://files.pythonhosted.org/packages/6d/43/c3c2e866a8803e196d6209595020a4a6db1a3c5d07c01455669497ae23d0/ipdb-0.12.tar.gz";
776 798 sha256 = "1khr2n7xfy8hg65kj1bsrjq9g7656pp0ybfa8abpbzpdawji3qnw";
777 799 };
778 800 meta = {
779 801 license = [ pkgs.lib.licenses.bsdOriginal ];
780 802 };
781 803 };
782 804 "ipython" = super.buildPythonPackage {
783 805 name = "ipython-5.1.0";
784 806 doCheck = false;
785 807 propagatedBuildInputs = [
786 808 self."setuptools"
787 809 self."decorator"
788 810 self."pickleshare"
789 811 self."simplegeneric"
790 812 self."traitlets"
791 813 self."prompt-toolkit"
792 814 self."pygments"
793 815 self."pexpect"
794 816 self."backports.shutil-get-terminal-size"
795 817 self."pathlib2"
796 818 self."pexpect"
797 819 ];
798 820 src = fetchurl {
799 821 url = "https://files.pythonhosted.org/packages/89/63/a9292f7cd9d0090a0f995e1167f3f17d5889dcbc9a175261719c513b9848/ipython-5.1.0.tar.gz";
800 822 sha256 = "0qdrf6aj9kvjczd5chj1my8y2iq09am9l8bb2a1334a52d76kx3y";
801 823 };
802 824 meta = {
803 825 license = [ pkgs.lib.licenses.bsdOriginal ];
804 826 };
805 827 };
806 828 "ipython-genutils" = super.buildPythonPackage {
807 829 name = "ipython-genutils-0.2.0";
808 830 doCheck = false;
809 831 src = fetchurl {
810 832 url = "https://files.pythonhosted.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz";
811 833 sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb";
812 834 };
813 835 meta = {
814 836 license = [ pkgs.lib.licenses.bsdOriginal ];
815 837 };
816 838 };
817 839 "iso8601" = super.buildPythonPackage {
818 840 name = "iso8601-0.1.12";
819 841 doCheck = false;
820 842 src = fetchurl {
821 843 url = "https://files.pythonhosted.org/packages/45/13/3db24895497345fb44c4248c08b16da34a9eb02643cea2754b21b5ed08b0/iso8601-0.1.12.tar.gz";
822 844 sha256 = "10nyvvnrhw2w3p09v1ica4lgj6f4g9j3kkfx17qmraiq3w7b5i29";
823 845 };
824 846 meta = {
825 847 license = [ pkgs.lib.licenses.mit ];
826 848 };
827 849 };
828 850 "isodate" = super.buildPythonPackage {
829 851 name = "isodate-0.6.0";
830 852 doCheck = false;
831 853 propagatedBuildInputs = [
832 854 self."six"
833 855 ];
834 856 src = fetchurl {
835 857 url = "https://files.pythonhosted.org/packages/b1/80/fb8c13a4cd38eb5021dc3741a9e588e4d1de88d895c1910c6fc8a08b7a70/isodate-0.6.0.tar.gz";
836 858 sha256 = "1n7jkz68kk5pwni540pr5zdh99bf6ywydk1p5pdrqisrawylldif";
837 859 };
838 860 meta = {
839 861 license = [ pkgs.lib.licenses.bsdOriginal ];
840 862 };
841 863 };
842 864 "itsdangerous" = super.buildPythonPackage {
843 865 name = "itsdangerous-0.24";
844 866 doCheck = false;
845 867 src = fetchurl {
846 868 url = "https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz";
847 869 sha256 = "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb";
848 870 };
849 871 meta = {
850 872 license = [ pkgs.lib.licenses.bsdOriginal ];
851 873 };
852 874 };
853 875 "jinja2" = super.buildPythonPackage {
854 876 name = "jinja2-2.9.6";
855 877 doCheck = false;
856 878 propagatedBuildInputs = [
857 879 self."markupsafe"
858 880 ];
859 881 src = fetchurl {
860 882 url = "https://files.pythonhosted.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
861 883 sha256 = "1zzrkywhziqffrzks14kzixz7nd4yh2vc0fb04a68vfd2ai03anx";
862 884 };
863 885 meta = {
864 886 license = [ pkgs.lib.licenses.bsdOriginal ];
865 887 };
866 888 };
867 889 "jsonschema" = super.buildPythonPackage {
868 890 name = "jsonschema-2.6.0";
869 891 doCheck = false;
870 892 propagatedBuildInputs = [
871 893 self."functools32"
872 894 ];
873 895 src = fetchurl {
874 896 url = "https://files.pythonhosted.org/packages/58/b9/171dbb07e18c6346090a37f03c7e74410a1a56123f847efed59af260a298/jsonschema-2.6.0.tar.gz";
875 897 sha256 = "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg";
876 898 };
877 899 meta = {
878 900 license = [ pkgs.lib.licenses.mit ];
879 901 };
880 902 };
881 903 "jupyter-client" = super.buildPythonPackage {
882 904 name = "jupyter-client-5.0.0";
883 905 doCheck = false;
884 906 propagatedBuildInputs = [
885 907 self."traitlets"
886 908 self."jupyter-core"
887 909 self."pyzmq"
888 910 self."python-dateutil"
889 911 ];
890 912 src = fetchurl {
891 913 url = "https://files.pythonhosted.org/packages/e5/6f/65412ed462202b90134b7e761b0b7e7f949e07a549c1755475333727b3d0/jupyter_client-5.0.0.tar.gz";
892 914 sha256 = "0nxw4rqk4wsjhc87gjqd7pv89cb9dnimcfnmcmp85bmrvv1gjri7";
893 915 };
894 916 meta = {
895 917 license = [ pkgs.lib.licenses.bsdOriginal ];
896 918 };
897 919 };
898 920 "jupyter-core" = super.buildPythonPackage {
899 921 name = "jupyter-core-4.5.0";
900 922 doCheck = false;
901 923 propagatedBuildInputs = [
902 924 self."traitlets"
903 925 ];
904 926 src = fetchurl {
905 927 url = "https://files.pythonhosted.org/packages/4a/de/ff4ca734656d17ebe0450807b59d728f45277e2e7f4b82bc9aae6cb82961/jupyter_core-4.5.0.tar.gz";
906 928 sha256 = "1xr4pbghwk5hayn5wwnhb7z95380r45p79gf5if5pi1akwg7qvic";
907 929 };
908 930 meta = {
909 931 license = [ pkgs.lib.licenses.bsdOriginal ];
910 932 };
911 933 };
912 934 "kombu" = super.buildPythonPackage {
913 935 name = "kombu-4.6.6";
914 936 doCheck = false;
915 937 propagatedBuildInputs = [
916 938 self."amqp"
917 939 self."importlib-metadata"
918 940 ];
919 941 src = fetchurl {
920 942 url = "https://files.pythonhosted.org/packages/20/e6/bc2d9affba6138a1dc143f77fef253e9e08e238fa7c0688d917c09005e96/kombu-4.6.6.tar.gz";
921 943 sha256 = "11mxpcy8mg1l35bgbhba70v29bydr2hrhdbdlb4lg98m3m5vaq0p";
922 944 };
923 945 meta = {
924 946 license = [ pkgs.lib.licenses.bsdOriginal ];
925 947 };
926 948 };
927 949 "lxml" = super.buildPythonPackage {
928 950 name = "lxml-4.2.5";
929 951 doCheck = false;
930 952 src = fetchurl {
931 953 url = "https://files.pythonhosted.org/packages/4b/20/ddf5eb3bd5c57582d2b4652b4bbcf8da301bdfe5d805cb94e805f4d7464d/lxml-4.2.5.tar.gz";
932 954 sha256 = "0zw0y9hs0nflxhl9cs6ipwwh53szi3w2x06wl0k9cylyqac0cwin";
933 955 };
934 956 meta = {
935 957 license = [ pkgs.lib.licenses.bsdOriginal ];
936 958 };
937 959 };
938 960 "mako" = super.buildPythonPackage {
939 961 name = "mako-1.1.0";
940 962 doCheck = false;
941 963 propagatedBuildInputs = [
942 964 self."markupsafe"
943 965 ];
944 966 src = fetchurl {
945 967 url = "https://files.pythonhosted.org/packages/b0/3c/8dcd6883d009f7cae0f3157fb53e9afb05a0d3d33b3db1268ec2e6f4a56b/Mako-1.1.0.tar.gz";
946 968 sha256 = "0jqa3qfpykyn4fmkn0kh6043sfls7br8i2bsdbccazcvk9cijsd3";
947 969 };
948 970 meta = {
949 971 license = [ pkgs.lib.licenses.mit ];
950 972 };
951 973 };
952 974 "markdown" = super.buildPythonPackage {
953 975 name = "markdown-2.6.11";
954 976 doCheck = false;
955 977 src = fetchurl {
956 978 url = "https://files.pythonhosted.org/packages/b3/73/fc5c850f44af5889192dff783b7b0d8f3fe8d30b65c8e3f78f8f0265fecf/Markdown-2.6.11.tar.gz";
957 979 sha256 = "108g80ryzykh8bj0i7jfp71510wrcixdi771lf2asyghgyf8cmm8";
958 980 };
959 981 meta = {
960 982 license = [ pkgs.lib.licenses.bsdOriginal ];
961 983 };
962 984 };
963 985 "markupsafe" = super.buildPythonPackage {
964 986 name = "markupsafe-1.1.1";
965 987 doCheck = false;
966 988 src = fetchurl {
967 989 url = "https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz";
968 990 sha256 = "0sqipg4fk7xbixqd8kq6rlkxj664d157bdwbh93farcphf92x1r9";
969 991 };
970 992 meta = {
971 993 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd3 ];
972 994 };
973 995 };
974 996 "mistune" = super.buildPythonPackage {
975 997 name = "mistune-0.8.4";
976 998 doCheck = false;
977 999 src = fetchurl {
978 1000 url = "https://files.pythonhosted.org/packages/2d/a4/509f6e7783ddd35482feda27bc7f72e65b5e7dc910eca4ab2164daf9c577/mistune-0.8.4.tar.gz";
979 1001 sha256 = "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr";
980 1002 };
981 1003 meta = {
982 1004 license = [ pkgs.lib.licenses.bsdOriginal ];
983 1005 };
984 1006 };
985 1007 "mock" = super.buildPythonPackage {
986 1008 name = "mock-3.0.5";
987 1009 doCheck = false;
988 1010 propagatedBuildInputs = [
989 1011 self."six"
990 1012 self."funcsigs"
991 1013 ];
992 1014 src = fetchurl {
993 1015 url = "https://files.pythonhosted.org/packages/2e/ab/4fe657d78b270aa6a32f027849513b829b41b0f28d9d8d7f8c3d29ea559a/mock-3.0.5.tar.gz";
994 1016 sha256 = "1hrp6j0yrx2xzylfv02qa8kph661m6yq4p0mc8fnimch9j4psrc3";
995 1017 };
996 1018 meta = {
997 1019 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "OSI Approved :: BSD License"; } ];
998 1020 };
999 1021 };
1000 1022 "more-itertools" = super.buildPythonPackage {
1001 1023 name = "more-itertools-5.0.0";
1002 1024 doCheck = false;
1003 1025 propagatedBuildInputs = [
1004 1026 self."six"
1005 1027 ];
1006 1028 src = fetchurl {
1007 1029 url = "https://files.pythonhosted.org/packages/dd/26/30fc0d541d9fdf55faf5ba4b0fd68f81d5bd2447579224820ad525934178/more-itertools-5.0.0.tar.gz";
1008 1030 sha256 = "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q";
1009 1031 };
1010 1032 meta = {
1011 1033 license = [ pkgs.lib.licenses.mit ];
1012 1034 };
1013 1035 };
1014 1036 "msgpack-python" = super.buildPythonPackage {
1015 1037 name = "msgpack-python-0.5.6";
1016 1038 doCheck = false;
1017 1039 src = fetchurl {
1018 1040 url = "https://files.pythonhosted.org/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz";
1019 1041 sha256 = "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p";
1020 1042 };
1021 1043 meta = {
1022 1044 license = [ pkgs.lib.licenses.asl20 ];
1023 1045 };
1024 1046 };
1025 1047 "mysql-python" = super.buildPythonPackage {
1026 1048 name = "mysql-python-1.2.5";
1027 1049 doCheck = false;
1028 1050 src = fetchurl {
1029 1051 url = "https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip";
1030 1052 sha256 = "0x0c2jg0bb3pp84njaqiic050qkyd7ymwhfvhipnimg58yv40441";
1031 1053 };
1032 1054 meta = {
1033 1055 license = [ pkgs.lib.licenses.gpl1 ];
1034 1056 };
1035 1057 };
1036 1058 "nbconvert" = super.buildPythonPackage {
1037 1059 name = "nbconvert-5.3.1";
1038 1060 doCheck = false;
1039 1061 propagatedBuildInputs = [
1040 1062 self."mistune"
1041 1063 self."jinja2"
1042 1064 self."pygments"
1043 1065 self."traitlets"
1044 1066 self."jupyter-core"
1045 1067 self."nbformat"
1046 1068 self."entrypoints"
1047 1069 self."bleach"
1048 1070 self."pandocfilters"
1049 1071 self."testpath"
1050 1072 ];
1051 1073 src = fetchurl {
1052 1074 url = "https://files.pythonhosted.org/packages/b9/a4/d0a0938ad6f5eeb4dea4e73d255c617ef94b0b2849d51194c9bbdb838412/nbconvert-5.3.1.tar.gz";
1053 1075 sha256 = "1f9dkvpx186xjm4xab0qbph588mncp4vqk3fmxrsnqs43mks9c8j";
1054 1076 };
1055 1077 meta = {
1056 1078 license = [ pkgs.lib.licenses.bsdOriginal ];
1057 1079 };
1058 1080 };
1059 1081 "nbformat" = super.buildPythonPackage {
1060 1082 name = "nbformat-4.4.0";
1061 1083 doCheck = false;
1062 1084 propagatedBuildInputs = [
1063 1085 self."ipython-genutils"
1064 1086 self."traitlets"
1065 1087 self."jsonschema"
1066 1088 self."jupyter-core"
1067 1089 ];
1068 1090 src = fetchurl {
1069 1091 url = "https://files.pythonhosted.org/packages/6e/0e/160754f7ae3e984863f585a3743b0ed1702043a81245907c8fae2d537155/nbformat-4.4.0.tar.gz";
1070 1092 sha256 = "00nlf08h8yc4q73nphfvfhxrcnilaqanb8z0mdy6nxk0vzq4wjgp";
1071 1093 };
1072 1094 meta = {
1073 1095 license = [ pkgs.lib.licenses.bsdOriginal ];
1074 1096 };
1075 1097 };
1076 1098 "packaging" = super.buildPythonPackage {
1077 1099 name = "packaging-20.3";
1078 1100 doCheck = false;
1079 1101 propagatedBuildInputs = [
1080 1102 self."pyparsing"
1081 1103 self."six"
1082 1104 ];
1083 1105 src = fetchurl {
1084 1106 url = "https://files.pythonhosted.org/packages/65/37/83e3f492eb52d771e2820e88105f605335553fe10422cba9d256faeb1702/packaging-20.3.tar.gz";
1085 1107 sha256 = "18xpablq278janh03bai9xd4kz9b0yfp6vflazn725ns9x3jna9w";
1086 1108 };
1087 1109 meta = {
1088 1110 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "BSD or Apache License, Version 2.0"; } pkgs.lib.licenses.asl20 ];
1089 1111 };
1090 1112 };
1091 1113 "pandocfilters" = super.buildPythonPackage {
1092 1114 name = "pandocfilters-1.4.2";
1093 1115 doCheck = false;
1094 1116 src = fetchurl {
1095 1117 url = "https://files.pythonhosted.org/packages/4c/ea/236e2584af67bb6df960832731a6e5325fd4441de001767da328c33368ce/pandocfilters-1.4.2.tar.gz";
1096 1118 sha256 = "1a8d9b7s48gmq9zj0pmbyv2sivn5i7m6mybgpkk4jm5vd7hp1pdk";
1097 1119 };
1098 1120 meta = {
1099 1121 license = [ pkgs.lib.licenses.bsdOriginal ];
1100 1122 };
1101 1123 };
1102 1124 "paste" = super.buildPythonPackage {
1103 1125 name = "paste-3.4.0";
1104 1126 doCheck = false;
1105 1127 propagatedBuildInputs = [
1106 1128 self."six"
1107 1129 ];
1108 1130 src = fetchurl {
1109 1131 url = "https://files.pythonhosted.org/packages/79/4a/45821b71dd40000507549afd1491546afad8279c0a87527c88776a794158/Paste-3.4.0.tar.gz";
1110 1132 sha256 = "16sichvhyci1gaarkjs35mai8vphh7b244qm14hj1isw38nx4c03";
1111 1133 };
1112 1134 meta = {
1113 1135 license = [ pkgs.lib.licenses.mit ];
1114 1136 };
1115 1137 };
1116 1138 "pastedeploy" = super.buildPythonPackage {
1117 1139 name = "pastedeploy-2.1.0";
1118 1140 doCheck = false;
1119 1141 src = fetchurl {
1120 1142 url = "https://files.pythonhosted.org/packages/c4/e9/972a1c20318b3ae9edcab11a6cef64308fbae5d0d45ab52c6f8b2b8f35b8/PasteDeploy-2.1.0.tar.gz";
1121 1143 sha256 = "16qsq5y6mryslmbp5pn35x4z8z3ndp5rpgl42h226879nrw9hmg7";
1122 1144 };
1123 1145 meta = {
1124 1146 license = [ pkgs.lib.licenses.mit ];
1125 1147 };
1126 1148 };
1127 1149 "pastescript" = super.buildPythonPackage {
1128 1150 name = "pastescript-3.2.0";
1129 1151 doCheck = false;
1130 1152 propagatedBuildInputs = [
1131 1153 self."paste"
1132 1154 self."pastedeploy"
1133 1155 self."six"
1134 1156 ];
1135 1157 src = fetchurl {
1136 1158 url = "https://files.pythonhosted.org/packages/ff/47/45c6f5a3cb8f5abf786fea98dbb8d02400a55768a9b623afb7df12346c61/PasteScript-3.2.0.tar.gz";
1137 1159 sha256 = "1b3jq7xh383nvrrlblk05m37345bv97xrhx77wshllba3h7mq3wv";
1138 1160 };
1139 1161 meta = {
1140 1162 license = [ pkgs.lib.licenses.mit ];
1141 1163 };
1142 1164 };
1143 1165 "pathlib2" = super.buildPythonPackage {
1144 1166 name = "pathlib2-2.3.5";
1145 1167 doCheck = false;
1146 1168 propagatedBuildInputs = [
1147 1169 self."six"
1148 1170 self."scandir"
1149 1171 ];
1150 1172 src = fetchurl {
1151 1173 url = "https://files.pythonhosted.org/packages/94/d8/65c86584e7e97ef824a1845c72bbe95d79f5b306364fa778a3c3e401b309/pathlib2-2.3.5.tar.gz";
1152 1174 sha256 = "0s4qa8c082fdkb17izh4mfgwrjd1n5pya18wvrbwqdvvb5xs9nbc";
1153 1175 };
1154 1176 meta = {
1155 1177 license = [ pkgs.lib.licenses.mit ];
1156 1178 };
1157 1179 };
1158 1180 "peppercorn" = super.buildPythonPackage {
1159 1181 name = "peppercorn-0.6";
1160 1182 doCheck = false;
1161 1183 src = fetchurl {
1162 1184 url = "https://files.pythonhosted.org/packages/e4/77/93085de7108cdf1a0b092ff443872a8f9442c736d7ddebdf2f27627935f4/peppercorn-0.6.tar.gz";
1163 1185 sha256 = "1ip4bfwcpwkq9hz2dai14k2cyabvwrnvcvrcmzxmqm04g8fnimwn";
1164 1186 };
1165 1187 meta = {
1166 1188 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1167 1189 };
1168 1190 };
1169 1191 "pexpect" = super.buildPythonPackage {
1170 1192 name = "pexpect-4.8.0";
1171 1193 doCheck = false;
1172 1194 propagatedBuildInputs = [
1173 1195 self."ptyprocess"
1174 1196 ];
1175 1197 src = fetchurl {
1176 1198 url = "https://files.pythonhosted.org/packages/e5/9b/ff402e0e930e70467a7178abb7c128709a30dfb22d8777c043e501bc1b10/pexpect-4.8.0.tar.gz";
1177 1199 sha256 = "032cg337h8awydgypz6f4wx848lw8dyrj4zy988x0lyib4ws8rgw";
1178 1200 };
1179 1201 meta = {
1180 1202 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
1181 1203 };
1182 1204 };
1183 1205 "pickleshare" = super.buildPythonPackage {
1184 1206 name = "pickleshare-0.7.5";
1185 1207 doCheck = false;
1186 1208 propagatedBuildInputs = [
1187 1209 self."pathlib2"
1188 1210 ];
1189 1211 src = fetchurl {
1190 1212 url = "https://files.pythonhosted.org/packages/d8/b6/df3c1c9b616e9c0edbc4fbab6ddd09df9535849c64ba51fcb6531c32d4d8/pickleshare-0.7.5.tar.gz";
1191 1213 sha256 = "1jmghg3c53yp1i8cm6pcrm280ayi8621rwyav9fac7awjr3kss47";
1192 1214 };
1193 1215 meta = {
1194 1216 license = [ pkgs.lib.licenses.mit ];
1195 1217 };
1196 1218 };
1197 1219 "plaster" = super.buildPythonPackage {
1198 1220 name = "plaster-1.0";
1199 1221 doCheck = false;
1200 1222 propagatedBuildInputs = [
1201 1223 self."setuptools"
1202 1224 ];
1203 1225 src = fetchurl {
1204 1226 url = "https://files.pythonhosted.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
1205 1227 sha256 = "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3";
1206 1228 };
1207 1229 meta = {
1208 1230 license = [ pkgs.lib.licenses.mit ];
1209 1231 };
1210 1232 };
1211 1233 "plaster-pastedeploy" = super.buildPythonPackage {
1212 1234 name = "plaster-pastedeploy-0.7";
1213 1235 doCheck = false;
1214 1236 propagatedBuildInputs = [
1215 1237 self."pastedeploy"
1216 1238 self."plaster"
1217 1239 ];
1218 1240 src = fetchurl {
1219 1241 url = "https://files.pythonhosted.org/packages/99/69/2d3bc33091249266a1bd3cf24499e40ab31d54dffb4a7d76fe647950b98c/plaster_pastedeploy-0.7.tar.gz";
1220 1242 sha256 = "1zg7gcsvc1kzay1ry5p699rg2qavfsxqwl17mqxzr0gzw6j9679r";
1221 1243 };
1222 1244 meta = {
1223 1245 license = [ pkgs.lib.licenses.mit ];
1224 1246 };
1225 1247 };
1226 1248 "pluggy" = super.buildPythonPackage {
1227 1249 name = "pluggy-0.13.1";
1228 1250 doCheck = false;
1229 1251 propagatedBuildInputs = [
1230 1252 self."importlib-metadata"
1231 1253 ];
1232 1254 src = fetchurl {
1233 1255 url = "https://files.pythonhosted.org/packages/f8/04/7a8542bed4b16a65c2714bf76cf5a0b026157da7f75e87cc88774aa10b14/pluggy-0.13.1.tar.gz";
1234 1256 sha256 = "1c35qyhvy27q9ih9n899f3h4sdnpgq027dbiilly2qb5cvgarchm";
1235 1257 };
1236 1258 meta = {
1237 1259 license = [ pkgs.lib.licenses.mit ];
1238 1260 };
1239 1261 };
1262 "premailer" = super.buildPythonPackage {
1263 name = "premailer-3.6.1";
1264 doCheck = false;
1265 propagatedBuildInputs = [
1266 self."lxml"
1267 self."cssselect"
1268 self."cssutils"
1269 self."requests"
1270 self."cachetools"
1271 ];
1272 src = fetchurl {
1273 url = "https://files.pythonhosted.org/packages/62/da/2f43cdf9d3d79c80c4856a12389a1f257d65fe9ccc44bc6b4383c8a18e33/premailer-3.6.1.tar.gz";
1274 sha256 = "08pshx7a110k4ll20x0xhpvyn3kkipkrbgxjjn7ncdxs54ihdhgw";
1275 };
1276 meta = {
1277 license = [ pkgs.lib.licenses.psfl { fullName = "Python"; } ];
1278 };
1279 };
1240 1280 "prompt-toolkit" = super.buildPythonPackage {
1241 1281 name = "prompt-toolkit-1.0.18";
1242 1282 doCheck = false;
1243 1283 propagatedBuildInputs = [
1244 1284 self."six"
1245 1285 self."wcwidth"
1246 1286 ];
1247 1287 src = fetchurl {
1248 1288 url = "https://files.pythonhosted.org/packages/c5/64/c170e5b1913b540bf0c8ab7676b21fdd1d25b65ddeb10025c6ca43cccd4c/prompt_toolkit-1.0.18.tar.gz";
1249 1289 sha256 = "09h1153wgr5x2ny7ds0w2m81n3bb9j8hjb8sjfnrg506r01clkyx";
1250 1290 };
1251 1291 meta = {
1252 1292 license = [ pkgs.lib.licenses.bsdOriginal ];
1253 1293 };
1254 1294 };
1255 1295 "psutil" = super.buildPythonPackage {
1256 1296 name = "psutil-5.7.0";
1257 1297 doCheck = false;
1258 1298 src = fetchurl {
1259 1299 url = "https://files.pythonhosted.org/packages/c4/b8/3512f0e93e0db23a71d82485ba256071ebef99b227351f0f5540f744af41/psutil-5.7.0.tar.gz";
1260 1300 sha256 = "03jykdi3dgf1cdal9bv4fq9zjvzj9l9bs99gi5ar81sdl5nc2pk8";
1261 1301 };
1262 1302 meta = {
1263 1303 license = [ pkgs.lib.licenses.bsdOriginal ];
1264 1304 };
1265 1305 };
1266 1306 "psycopg2" = super.buildPythonPackage {
1267 1307 name = "psycopg2-2.8.4";
1268 1308 doCheck = false;
1269 1309 src = fetchurl {
1270 1310 url = "https://files.pythonhosted.org/packages/84/d7/6a93c99b5ba4d4d22daa3928b983cec66df4536ca50b22ce5dcac65e4e71/psycopg2-2.8.4.tar.gz";
1271 1311 sha256 = "1djvh98pi4hjd8rxbq8qzc63bg8v78k33yg6pl99wak61b6fb67q";
1272 1312 };
1273 1313 meta = {
1274 1314 license = [ pkgs.lib.licenses.zpl21 { fullName = "GNU Library or Lesser General Public License (LGPL)"; } { fullName = "LGPL with exceptions or ZPL"; } ];
1275 1315 };
1276 1316 };
1277 1317 "ptyprocess" = super.buildPythonPackage {
1278 1318 name = "ptyprocess-0.6.0";
1279 1319 doCheck = false;
1280 1320 src = fetchurl {
1281 1321 url = "https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-0.6.0.tar.gz";
1282 1322 sha256 = "1h4lcd3w5nrxnsk436ar7fwkiy5rfn5wj2xwy9l0r4mdqnf2jgwj";
1283 1323 };
1284 1324 meta = {
1285 1325 license = [ ];
1286 1326 };
1287 1327 };
1288 1328 "py" = super.buildPythonPackage {
1289 1329 name = "py-1.8.0";
1290 1330 doCheck = false;
1291 1331 src = fetchurl {
1292 1332 url = "https://files.pythonhosted.org/packages/f1/5a/87ca5909f400a2de1561f1648883af74345fe96349f34f737cdfc94eba8c/py-1.8.0.tar.gz";
1293 1333 sha256 = "0lsy1gajva083pzc7csj1cvbmminb7b4l6a0prdzyb3fd829nqyw";
1294 1334 };
1295 1335 meta = {
1296 1336 license = [ pkgs.lib.licenses.mit ];
1297 1337 };
1298 1338 };
1299 1339 "py-bcrypt" = super.buildPythonPackage {
1300 1340 name = "py-bcrypt-0.4";
1301 1341 doCheck = false;
1302 1342 src = fetchurl {
1303 1343 url = "https://files.pythonhosted.org/packages/68/b1/1c3068c5c4d2e35c48b38dcc865301ebfdf45f54507086ac65ced1fd3b3d/py-bcrypt-0.4.tar.gz";
1304 1344 sha256 = "0y6smdggwi5s72v6p1nn53dg6w05hna3d264cq6kas0lap73p8az";
1305 1345 };
1306 1346 meta = {
1307 1347 license = [ pkgs.lib.licenses.bsdOriginal ];
1308 1348 };
1309 1349 };
1310 1350 "py-gfm" = super.buildPythonPackage {
1311 1351 name = "py-gfm-0.1.4";
1312 1352 doCheck = false;
1313 1353 propagatedBuildInputs = [
1314 1354 self."setuptools"
1315 1355 self."markdown"
1316 1356 ];
1317 1357 src = fetchurl {
1318 1358 url = "https://files.pythonhosted.org/packages/06/ee/004a03a1d92bb386dae44f6dd087db541bc5093374f1637d4d4ae5596cc2/py-gfm-0.1.4.tar.gz";
1319 1359 sha256 = "0zip06g2isivx8fzgqd4n9qzsa22c25jas1rsb7m2rnjg72m0rzg";
1320 1360 };
1321 1361 meta = {
1322 1362 license = [ pkgs.lib.licenses.bsdOriginal ];
1323 1363 };
1324 1364 };
1325 1365 "pyasn1" = super.buildPythonPackage {
1326 1366 name = "pyasn1-0.4.8";
1327 1367 doCheck = false;
1328 1368 src = fetchurl {
1329 1369 url = "https://files.pythonhosted.org/packages/a4/db/fffec68299e6d7bad3d504147f9094830b704527a7fc098b721d38cc7fa7/pyasn1-0.4.8.tar.gz";
1330 1370 sha256 = "1fnhbi3rmk47l9851gbik0flfr64vs5j0hbqx24cafjap6gprxxf";
1331 1371 };
1332 1372 meta = {
1333 1373 license = [ pkgs.lib.licenses.bsdOriginal ];
1334 1374 };
1335 1375 };
1336 1376 "pyasn1-modules" = super.buildPythonPackage {
1337 1377 name = "pyasn1-modules-0.2.6";
1338 1378 doCheck = false;
1339 1379 propagatedBuildInputs = [
1340 1380 self."pyasn1"
1341 1381 ];
1342 1382 src = fetchurl {
1343 1383 url = "https://files.pythonhosted.org/packages/f1/a9/a1ef72a0e43feff643cf0130a08123dea76205e7a0dda37e3efb5f054a31/pyasn1-modules-0.2.6.tar.gz";
1344 1384 sha256 = "08hph9j1r018drnrny29l7dl2q0cin78csswrhwrh8jmq61pmha3";
1345 1385 };
1346 1386 meta = {
1347 1387 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd2 ];
1348 1388 };
1349 1389 };
1350 1390 "pycparser" = super.buildPythonPackage {
1351 1391 name = "pycparser-2.20";
1352 1392 doCheck = false;
1353 1393 src = fetchurl {
1354 1394 url = "https://files.pythonhosted.org/packages/0f/86/e19659527668d70be91d0369aeaa055b4eb396b0f387a4f92293a20035bd/pycparser-2.20.tar.gz";
1355 1395 sha256 = "1w0m3xvlrzq4lkbvd1ngfm8mdw64r1yxy6n7djlw6qj5d0km6ird";
1356 1396 };
1357 1397 meta = {
1358 1398 license = [ pkgs.lib.licenses.bsdOriginal ];
1359 1399 };
1360 1400 };
1361 1401 "pycrypto" = super.buildPythonPackage {
1362 1402 name = "pycrypto-2.6.1";
1363 1403 doCheck = false;
1364 1404 src = fetchurl {
1365 1405 url = "https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz";
1366 1406 sha256 = "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj";
1367 1407 };
1368 1408 meta = {
1369 1409 license = [ pkgs.lib.licenses.publicDomain ];
1370 1410 };
1371 1411 };
1372 1412 "pycurl" = super.buildPythonPackage {
1373 1413 name = "pycurl-7.43.0.3";
1374 1414 doCheck = false;
1375 1415 src = fetchurl {
1376 1416 url = "https://files.pythonhosted.org/packages/ac/b3/0f3979633b7890bab6098d84c84467030b807a1e2b31f5d30103af5a71ca/pycurl-7.43.0.3.tar.gz";
1377 1417 sha256 = "13nsvqhvnmnvfk75s8iynqsgszyv06cjp4drd3psi7zpbh63623g";
1378 1418 };
1379 1419 meta = {
1380 1420 license = [ pkgs.lib.licenses.mit { fullName = "LGPL/MIT"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1381 1421 };
1382 1422 };
1383 1423 "pygments" = super.buildPythonPackage {
1384 1424 name = "pygments-2.4.2";
1385 1425 doCheck = false;
1386 1426 src = fetchurl {
1387 1427 url = "https://files.pythonhosted.org/packages/7e/ae/26808275fc76bf2832deb10d3a3ed3107bc4de01b85dcccbe525f2cd6d1e/Pygments-2.4.2.tar.gz";
1388 1428 sha256 = "15v2sqm5g12bqa0c7wikfh9ck2nl97ayizy1hpqhmws5gqalq748";
1389 1429 };
1390 1430 meta = {
1391 1431 license = [ pkgs.lib.licenses.bsdOriginal ];
1392 1432 };
1393 1433 };
1394 1434 "pymysql" = super.buildPythonPackage {
1395 1435 name = "pymysql-0.8.1";
1396 1436 doCheck = false;
1397 1437 src = fetchurl {
1398 1438 url = "https://files.pythonhosted.org/packages/44/39/6bcb83cae0095a31b6be4511707fdf2009d3e29903a55a0494d3a9a2fac0/PyMySQL-0.8.1.tar.gz";
1399 1439 sha256 = "0a96crz55bw4h6myh833skrli7b0ck89m3x673y2z2ryy7zrpq9l";
1400 1440 };
1401 1441 meta = {
1402 1442 license = [ pkgs.lib.licenses.mit ];
1403 1443 };
1404 1444 };
1405 1445 "pyotp" = super.buildPythonPackage {
1406 1446 name = "pyotp-2.3.0";
1407 1447 doCheck = false;
1408 1448 src = fetchurl {
1409 1449 url = "https://files.pythonhosted.org/packages/f7/15/395c4945ea6bc37e8811280bb675615cb4c2b2c1cd70bdc43329da91a386/pyotp-2.3.0.tar.gz";
1410 1450 sha256 = "18d13ikra1iq0xyfqfm72zhgwxi2qi9ps6z1a6zmqp4qrn57wlzw";
1411 1451 };
1412 1452 meta = {
1413 1453 license = [ pkgs.lib.licenses.mit ];
1414 1454 };
1415 1455 };
1416 1456 "pyparsing" = super.buildPythonPackage {
1417 1457 name = "pyparsing-2.4.6";
1418 1458 doCheck = false;
1419 1459 src = fetchurl {
1420 1460 url = "https://files.pythonhosted.org/packages/a2/56/0404c03c83cfcca229071d3c921d7d79ed385060bbe969fde3fd8f774ebd/pyparsing-2.4.6.tar.gz";
1421 1461 sha256 = "17wn5zlijc9m9zj26gy3f541y7smpj8rfhl51d025c2gm210b0sc";
1422 1462 };
1423 1463 meta = {
1424 1464 license = [ pkgs.lib.licenses.mit ];
1425 1465 };
1426 1466 };
1427 1467 "pyramid" = super.buildPythonPackage {
1428 1468 name = "pyramid-1.10.4";
1429 1469 doCheck = false;
1430 1470 propagatedBuildInputs = [
1431 1471 self."hupper"
1432 1472 self."plaster"
1433 1473 self."plaster-pastedeploy"
1434 1474 self."setuptools"
1435 1475 self."translationstring"
1436 1476 self."venusian"
1437 1477 self."webob"
1438 1478 self."zope.deprecation"
1439 1479 self."zope.interface"
1440 1480 self."repoze.lru"
1441 1481 ];
1442 1482 src = fetchurl {
1443 1483 url = "https://files.pythonhosted.org/packages/c2/43/1ae701c9c6bb3a434358e678a5e72c96e8aa55cf4cb1d2fa2041b5dd38b7/pyramid-1.10.4.tar.gz";
1444 1484 sha256 = "0rkxs1ajycg2zh1c94xlmls56mx5m161sn8112skj0amza6cn36q";
1445 1485 };
1446 1486 meta = {
1447 1487 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1448 1488 };
1449 1489 };
1450 1490 "pyramid-debugtoolbar" = super.buildPythonPackage {
1451 1491 name = "pyramid-debugtoolbar-4.6.1";
1452 1492 doCheck = false;
1453 1493 propagatedBuildInputs = [
1454 1494 self."pyramid"
1455 1495 self."pyramid-mako"
1456 1496 self."repoze.lru"
1457 1497 self."pygments"
1458 1498 self."ipaddress"
1459 1499 ];
1460 1500 src = fetchurl {
1461 1501 url = "https://files.pythonhosted.org/packages/99/f6/b8603f82c18275be293921bc3a2184205056ca505747bf64ab8a0c08e124/pyramid_debugtoolbar-4.6.1.tar.gz";
1462 1502 sha256 = "185z7q8n959ga5331iczwra2iljwkidfx4qn6bbd7vm3rm4w6llv";
1463 1503 };
1464 1504 meta = {
1465 1505 license = [ { fullName = "Repoze Public License"; } pkgs.lib.licenses.bsdOriginal ];
1466 1506 };
1467 1507 };
1468 1508 "pyramid-jinja2" = super.buildPythonPackage {
1469 1509 name = "pyramid-jinja2-2.7";
1470 1510 doCheck = false;
1471 1511 propagatedBuildInputs = [
1472 1512 self."pyramid"
1473 1513 self."zope.deprecation"
1474 1514 self."jinja2"
1475 1515 self."markupsafe"
1476 1516 ];
1477 1517 src = fetchurl {
1478 1518 url = "https://files.pythonhosted.org/packages/d8/80/d60a7233823de22ce77bd864a8a83736a1fe8b49884b08303a2e68b2c853/pyramid_jinja2-2.7.tar.gz";
1479 1519 sha256 = "1sz5s0pp5jqhf4w22w9527yz8hgdi4mhr6apd6vw1gm5clghh8aw";
1480 1520 };
1481 1521 meta = {
1482 1522 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1483 1523 };
1484 1524 };
1485 1525 "pyramid-mailer" = super.buildPythonPackage {
1486 1526 name = "pyramid-mailer-0.15.1";
1487 1527 doCheck = false;
1488 1528 propagatedBuildInputs = [
1489 1529 self."pyramid"
1490 1530 self."repoze.sendmail"
1491 1531 self."transaction"
1492 1532 ];
1493 1533 src = fetchurl {
1494 1534 url = "https://files.pythonhosted.org/packages/a0/f2/6febf5459dff4d7e653314d575469ad2e11b9d2af2c3606360e1c67202f2/pyramid_mailer-0.15.1.tar.gz";
1495 1535 sha256 = "16vg8jb203jgb7b0hd6wllfqvp542qh2ry1gjai2m6qpv5agy2pc";
1496 1536 };
1497 1537 meta = {
1498 1538 license = [ pkgs.lib.licenses.bsdOriginal ];
1499 1539 };
1500 1540 };
1501 1541 "pyramid-mako" = super.buildPythonPackage {
1502 1542 name = "pyramid-mako-1.1.0";
1503 1543 doCheck = false;
1504 1544 propagatedBuildInputs = [
1505 1545 self."pyramid"
1506 1546 self."mako"
1507 1547 ];
1508 1548 src = fetchurl {
1509 1549 url = "https://files.pythonhosted.org/packages/63/7b/5e2af68f675071a6bad148c1c393928f0ef5fcd94e95cbf53b89d6471a83/pyramid_mako-1.1.0.tar.gz";
1510 1550 sha256 = "1qj0m091mnii86j2q1d82yir22nha361rvhclvg3s70z8iiwhrh0";
1511 1551 };
1512 1552 meta = {
1513 1553 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1514 1554 };
1515 1555 };
1516 1556 "pysqlite" = super.buildPythonPackage {
1517 1557 name = "pysqlite-2.8.3";
1518 1558 doCheck = false;
1519 1559 src = fetchurl {
1520 1560 url = "https://files.pythonhosted.org/packages/42/02/981b6703e3c83c5b25a829c6e77aad059f9481b0bbacb47e6e8ca12bd731/pysqlite-2.8.3.tar.gz";
1521 1561 sha256 = "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp";
1522 1562 };
1523 1563 meta = {
1524 1564 license = [ { fullName = "zlib/libpng License"; } { fullName = "zlib/libpng license"; } ];
1525 1565 };
1526 1566 };
1527 1567 "pytest" = super.buildPythonPackage {
1528 1568 name = "pytest-4.6.5";
1529 1569 doCheck = false;
1530 1570 propagatedBuildInputs = [
1531 1571 self."py"
1532 1572 self."six"
1533 1573 self."packaging"
1534 1574 self."attrs"
1535 1575 self."atomicwrites"
1536 1576 self."pluggy"
1537 1577 self."importlib-metadata"
1538 1578 self."wcwidth"
1539 1579 self."funcsigs"
1540 1580 self."pathlib2"
1541 1581 self."more-itertools"
1542 1582 ];
1543 1583 src = fetchurl {
1544 1584 url = "https://files.pythonhosted.org/packages/2a/c6/1d1f32f6a5009900521b12e6560fb6b7245b0d4bc3fb771acd63d10e30e1/pytest-4.6.5.tar.gz";
1545 1585 sha256 = "0iykwwfp4h181nd7rsihh2120b0rkawlw7rvbl19sgfspncr3hwg";
1546 1586 };
1547 1587 meta = {
1548 1588 license = [ pkgs.lib.licenses.mit ];
1549 1589 };
1550 1590 };
1551 1591 "pytest-cov" = super.buildPythonPackage {
1552 1592 name = "pytest-cov-2.7.1";
1553 1593 doCheck = false;
1554 1594 propagatedBuildInputs = [
1555 1595 self."pytest"
1556 1596 self."coverage"
1557 1597 ];
1558 1598 src = fetchurl {
1559 1599 url = "https://files.pythonhosted.org/packages/bb/0f/3db7ff86801883b21d5353b258c994b1b8e2abbc804e2273b8d0fd19004b/pytest-cov-2.7.1.tar.gz";
1560 1600 sha256 = "0filvmmyqm715azsl09ql8hy2x7h286n6d8z5x42a1wpvvys83p0";
1561 1601 };
1562 1602 meta = {
1563 1603 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.mit ];
1564 1604 };
1565 1605 };
1566 1606 "pytest-profiling" = super.buildPythonPackage {
1567 1607 name = "pytest-profiling-1.7.0";
1568 1608 doCheck = false;
1569 1609 propagatedBuildInputs = [
1570 1610 self."six"
1571 1611 self."pytest"
1572 1612 self."gprof2dot"
1573 1613 ];
1574 1614 src = fetchurl {
1575 1615 url = "https://files.pythonhosted.org/packages/39/70/22a4b33739f07f1732a63e33bbfbf68e0fa58cfba9d200e76d01921eddbf/pytest-profiling-1.7.0.tar.gz";
1576 1616 sha256 = "0abz9gi26jpcfdzgsvwad91555lpgdc8kbymicmms8k2fqa8z4wk";
1577 1617 };
1578 1618 meta = {
1579 1619 license = [ pkgs.lib.licenses.mit ];
1580 1620 };
1581 1621 };
1582 1622 "pytest-runner" = super.buildPythonPackage {
1583 1623 name = "pytest-runner-5.1";
1584 1624 doCheck = false;
1585 1625 src = fetchurl {
1586 1626 url = "https://files.pythonhosted.org/packages/d9/6d/4b41a74b31720e25abd4799be72d54811da4b4d0233e38b75864dcc1f7ad/pytest-runner-5.1.tar.gz";
1587 1627 sha256 = "0ykfcnpp8c22winj63qzc07l5axwlc9ikl8vn05sc32gv3417815";
1588 1628 };
1589 1629 meta = {
1590 1630 license = [ pkgs.lib.licenses.mit ];
1591 1631 };
1592 1632 };
1593 1633 "pytest-sugar" = super.buildPythonPackage {
1594 1634 name = "pytest-sugar-0.9.2";
1595 1635 doCheck = false;
1596 1636 propagatedBuildInputs = [
1597 1637 self."pytest"
1598 1638 self."termcolor"
1599 1639 self."packaging"
1600 1640 ];
1601 1641 src = fetchurl {
1602 1642 url = "https://files.pythonhosted.org/packages/55/59/f02f78d1c80f7e03e23177f60624c8106d4f23d124c921df103f65692464/pytest-sugar-0.9.2.tar.gz";
1603 1643 sha256 = "1asq7yc4g8bx2sn7yy974mhc9ywvaihasjab4inkirdwn9s7mn7w";
1604 1644 };
1605 1645 meta = {
1606 1646 license = [ pkgs.lib.licenses.bsdOriginal ];
1607 1647 };
1608 1648 };
1609 1649 "pytest-timeout" = super.buildPythonPackage {
1610 1650 name = "pytest-timeout-1.3.3";
1611 1651 doCheck = false;
1612 1652 propagatedBuildInputs = [
1613 1653 self."pytest"
1614 1654 ];
1615 1655 src = fetchurl {
1616 1656 url = "https://files.pythonhosted.org/packages/13/48/7a166eaa29c1dca6cc253e3ba5773ff2e4aa4f567c1ea3905808e95ac5c1/pytest-timeout-1.3.3.tar.gz";
1617 1657 sha256 = "1cczcjhw4xx5sjkhxlhc5c1bkr7x6fcyx12wrnvwfckshdvblc2a";
1618 1658 };
1619 1659 meta = {
1620 1660 license = [ pkgs.lib.licenses.mit { fullName = "DFSG approved"; } ];
1621 1661 };
1622 1662 };
1623 1663 "python-dateutil" = super.buildPythonPackage {
1624 1664 name = "python-dateutil-2.8.1";
1625 1665 doCheck = false;
1626 1666 propagatedBuildInputs = [
1627 1667 self."six"
1628 1668 ];
1629 1669 src = fetchurl {
1630 1670 url = "https://files.pythonhosted.org/packages/be/ed/5bbc91f03fa4c839c4c7360375da77f9659af5f7086b7a7bdda65771c8e0/python-dateutil-2.8.1.tar.gz";
1631 1671 sha256 = "0g42w7k5007iv9dam6gnja2ry8ydwirh99mgdll35s12pyfzxsvk";
1632 1672 };
1633 1673 meta = {
1634 1674 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.asl20 { fullName = "Dual License"; } ];
1635 1675 };
1636 1676 };
1637 1677 "python-editor" = super.buildPythonPackage {
1638 1678 name = "python-editor-1.0.4";
1639 1679 doCheck = false;
1640 1680 src = fetchurl {
1641 1681 url = "https://files.pythonhosted.org/packages/0a/85/78f4a216d28343a67b7397c99825cff336330893f00601443f7c7b2f2234/python-editor-1.0.4.tar.gz";
1642 1682 sha256 = "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai";
1643 1683 };
1644 1684 meta = {
1645 1685 license = [ pkgs.lib.licenses.asl20 { fullName = "Apache"; } ];
1646 1686 };
1647 1687 };
1648 1688 "python-ldap" = super.buildPythonPackage {
1649 1689 name = "python-ldap-3.2.0";
1650 1690 doCheck = false;
1651 1691 propagatedBuildInputs = [
1652 1692 self."pyasn1"
1653 1693 self."pyasn1-modules"
1654 1694 ];
1655 1695 src = fetchurl {
1656 1696 url = "https://files.pythonhosted.org/packages/ea/93/596f875e003c770447f4b99267820a0c769dd2dc3ae3ed19afe460fcbad0/python-ldap-3.2.0.tar.gz";
1657 1697 sha256 = "13nvrhp85yr0jyxixcjj012iw8l9wynxxlykm9j3alss6waln73x";
1658 1698 };
1659 1699 meta = {
1660 1700 license = [ pkgs.lib.licenses.psfl ];
1661 1701 };
1662 1702 };
1663 1703 "python-memcached" = super.buildPythonPackage {
1664 1704 name = "python-memcached-1.59";
1665 1705 doCheck = false;
1666 1706 propagatedBuildInputs = [
1667 1707 self."six"
1668 1708 ];
1669 1709 src = fetchurl {
1670 1710 url = "https://files.pythonhosted.org/packages/90/59/5faf6e3cd8a568dd4f737ddae4f2e54204fd8c51f90bf8df99aca6c22318/python-memcached-1.59.tar.gz";
1671 1711 sha256 = "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2";
1672 1712 };
1673 1713 meta = {
1674 1714 license = [ pkgs.lib.licenses.psfl ];
1675 1715 };
1676 1716 };
1677 1717 "python-pam" = super.buildPythonPackage {
1678 1718 name = "python-pam-1.8.4";
1679 1719 doCheck = false;
1680 1720 src = fetchurl {
1681 1721 url = "https://files.pythonhosted.org/packages/01/16/544d01cae9f28e0292dbd092b6b8b0bf222b528f362ee768a5bed2140111/python-pam-1.8.4.tar.gz";
1682 1722 sha256 = "16whhc0vr7gxsbzvsnq65nq8fs3wwmx755cavm8kkczdkz4djmn8";
1683 1723 };
1684 1724 meta = {
1685 1725 license = [ { fullName = "License :: OSI Approved :: MIT License"; } pkgs.lib.licenses.mit ];
1686 1726 };
1687 1727 };
1688 1728 "python-saml" = super.buildPythonPackage {
1689 1729 name = "python-saml-2.4.2";
1690 1730 doCheck = false;
1691 1731 propagatedBuildInputs = [
1692 1732 self."dm.xmlsec.binding"
1693 1733 self."isodate"
1694 1734 self."defusedxml"
1695 1735 ];
1696 1736 src = fetchurl {
1697 1737 url = "https://files.pythonhosted.org/packages/79/a8/a6611017e0883102fd5e2b73c9d90691b8134e38247c04ee1531d3dc647c/python-saml-2.4.2.tar.gz";
1698 1738 sha256 = "0dls4hwvf13yg7x5yfjrghbywg8g38vn5vr0rsf70hli3ydbfm43";
1699 1739 };
1700 1740 meta = {
1701 1741 license = [ pkgs.lib.licenses.mit ];
1702 1742 };
1703 1743 };
1704 1744 "pytz" = super.buildPythonPackage {
1705 1745 name = "pytz-2019.3";
1706 1746 doCheck = false;
1707 1747 src = fetchurl {
1708 1748 url = "https://files.pythonhosted.org/packages/82/c3/534ddba230bd4fbbd3b7a3d35f3341d014cca213f369a9940925e7e5f691/pytz-2019.3.tar.gz";
1709 1749 sha256 = "1ghrk1wg45d3nymj7bf4zj03n3bh64xmczhk4pfi577hdkdhcb5h";
1710 1750 };
1711 1751 meta = {
1712 1752 license = [ pkgs.lib.licenses.mit ];
1713 1753 };
1714 1754 };
1715 1755 "pyzmq" = super.buildPythonPackage {
1716 1756 name = "pyzmq-14.6.0";
1717 1757 doCheck = false;
1718 1758 src = fetchurl {
1719 1759 url = "https://files.pythonhosted.org/packages/8a/3b/5463d5a9d712cd8bbdac335daece0d69f6a6792da4e3dd89956c0db4e4e6/pyzmq-14.6.0.tar.gz";
1720 1760 sha256 = "1frmbjykvhmdg64g7sn20c9fpamrsfxwci1nhhg8q7jgz5pq0ikp";
1721 1761 };
1722 1762 meta = {
1723 1763 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "LGPL+BSD"; } { fullName = "GNU Library or Lesser General Public License (LGPL)"; } ];
1724 1764 };
1725 1765 };
1726 1766 "redis" = super.buildPythonPackage {
1727 1767 name = "redis-3.4.1";
1728 1768 doCheck = false;
1729 1769 src = fetchurl {
1730 1770 url = "https://files.pythonhosted.org/packages/ef/2e/2c0f59891db7db087a7eeaa79bc7c7f2c039e71a2b5b0a41391e9d462926/redis-3.4.1.tar.gz";
1731 1771 sha256 = "07yaj0j9fs7xdkg5bg926fa990khyigjbp31si8ai20vj8sv7kqd";
1732 1772 };
1733 1773 meta = {
1734 1774 license = [ pkgs.lib.licenses.mit ];
1735 1775 };
1736 1776 };
1737 1777 "repoze.lru" = super.buildPythonPackage {
1738 1778 name = "repoze.lru-0.7";
1739 1779 doCheck = false;
1740 1780 src = fetchurl {
1741 1781 url = "https://files.pythonhosted.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
1742 1782 sha256 = "0xzz1aw2smy8hdszrq8yhnklx6w1r1mf55061kalw3iq35gafa84";
1743 1783 };
1744 1784 meta = {
1745 1785 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
1746 1786 };
1747 1787 };
1748 1788 "repoze.sendmail" = super.buildPythonPackage {
1749 1789 name = "repoze.sendmail-4.4.1";
1750 1790 doCheck = false;
1751 1791 propagatedBuildInputs = [
1752 1792 self."setuptools"
1753 1793 self."zope.interface"
1754 1794 self."transaction"
1755 1795 ];
1756 1796 src = fetchurl {
1757 1797 url = "https://files.pythonhosted.org/packages/12/4e/8ef1fd5c42765d712427b9c391419a77bd48877886d2cbc5e9f23c8cad9b/repoze.sendmail-4.4.1.tar.gz";
1758 1798 sha256 = "096ln02jr2afk7ab9j2czxqv2ryqq7m86ah572nqplx52iws73ks";
1759 1799 };
1760 1800 meta = {
1761 1801 license = [ pkgs.lib.licenses.zpl21 ];
1762 1802 };
1763 1803 };
1764 1804 "requests" = super.buildPythonPackage {
1765 1805 name = "requests-2.22.0";
1766 1806 doCheck = false;
1767 1807 propagatedBuildInputs = [
1768 1808 self."chardet"
1769 1809 self."idna"
1770 1810 self."urllib3"
1771 1811 self."certifi"
1772 1812 ];
1773 1813 src = fetchurl {
1774 1814 url = "https://files.pythonhosted.org/packages/01/62/ddcf76d1d19885e8579acb1b1df26a852b03472c0e46d2b959a714c90608/requests-2.22.0.tar.gz";
1775 1815 sha256 = "1d5ybh11jr5sm7xp6mz8fyc7vrp4syifds91m7sj60xalal0gq0i";
1776 1816 };
1777 1817 meta = {
1778 1818 license = [ pkgs.lib.licenses.asl20 ];
1779 1819 };
1780 1820 };
1781 1821 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1782 1822 name = "rhodecode-enterprise-ce-4.19.0";
1783 1823 buildInputs = [
1784 1824 self."pytest"
1785 1825 self."py"
1786 1826 self."pytest-cov"
1787 1827 self."pytest-sugar"
1788 1828 self."pytest-runner"
1789 1829 self."pytest-profiling"
1790 1830 self."pytest-timeout"
1791 1831 self."gprof2dot"
1792 1832 self."mock"
1793 1833 self."cov-core"
1794 1834 self."coverage"
1795 1835 self."webtest"
1796 1836 self."beautifulsoup4"
1797 1837 self."configobj"
1798 1838 ];
1799 1839 doCheck = true;
1800 1840 propagatedBuildInputs = [
1801 1841 self."amqp"
1802 1842 self."babel"
1803 1843 self."beaker"
1804 1844 self."bleach"
1805 1845 self."celery"
1806 1846 self."channelstream"
1807 1847 self."click"
1808 1848 self."colander"
1809 1849 self."configobj"
1810 1850 self."cssselect"
1811 1851 self."cryptography"
1812 1852 self."decorator"
1813 1853 self."deform"
1814 1854 self."docutils"
1815 1855 self."dogpile.cache"
1816 1856 self."dogpile.core"
1817 1857 self."formencode"
1818 1858 self."future"
1819 1859 self."futures"
1820 1860 self."infrae.cache"
1821 1861 self."iso8601"
1822 1862 self."itsdangerous"
1823 1863 self."kombu"
1824 1864 self."lxml"
1825 1865 self."mako"
1826 1866 self."markdown"
1827 1867 self."markupsafe"
1828 1868 self."msgpack-python"
1829 1869 self."pyotp"
1830 1870 self."packaging"
1831 1871 self."pathlib2"
1832 1872 self."paste"
1833 1873 self."pastedeploy"
1834 1874 self."pastescript"
1835 1875 self."peppercorn"
1876 self."premailer"
1836 1877 self."psutil"
1837 1878 self."py-bcrypt"
1838 1879 self."pycurl"
1839 1880 self."pycrypto"
1840 1881 self."pygments"
1841 1882 self."pyparsing"
1842 1883 self."pyramid-debugtoolbar"
1843 1884 self."pyramid-mako"
1844 1885 self."pyramid"
1845 1886 self."pyramid-mailer"
1846 1887 self."python-dateutil"
1847 1888 self."python-ldap"
1848 1889 self."python-memcached"
1849 1890 self."python-pam"
1850 1891 self."python-saml"
1851 1892 self."pytz"
1852 1893 self."tzlocal"
1853 1894 self."pyzmq"
1854 1895 self."py-gfm"
1855 1896 self."redis"
1856 1897 self."repoze.lru"
1857 1898 self."requests"
1858 1899 self."routes"
1859 1900 self."simplejson"
1860 1901 self."six"
1861 1902 self."sqlalchemy"
1862 1903 self."sshpubkeys"
1863 1904 self."subprocess32"
1864 1905 self."supervisor"
1865 1906 self."translationstring"
1866 1907 self."urllib3"
1867 1908 self."urlobject"
1868 1909 self."venusian"
1869 1910 self."weberror"
1870 1911 self."webhelpers2"
1871 1912 self."webob"
1872 1913 self."whoosh"
1873 1914 self."wsgiref"
1874 1915 self."zope.cachedescriptors"
1875 1916 self."zope.deprecation"
1876 1917 self."zope.event"
1877 1918 self."zope.interface"
1878 1919 self."mysql-python"
1879 1920 self."pymysql"
1880 1921 self."pysqlite"
1881 1922 self."psycopg2"
1882 1923 self."nbconvert"
1883 1924 self."nbformat"
1884 1925 self."jupyter-client"
1885 1926 self."jupyter-core"
1886 1927 self."alembic"
1887 1928 self."invoke"
1888 1929 self."bumpversion"
1889 1930 self."gevent"
1890 1931 self."greenlet"
1891 1932 self."gunicorn"
1892 1933 self."waitress"
1893 1934 self."ipdb"
1894 1935 self."ipython"
1895 1936 self."rhodecode-tools"
1896 1937 self."appenlight-client"
1897 1938 self."pytest"
1898 1939 self."py"
1899 1940 self."pytest-cov"
1900 1941 self."pytest-sugar"
1901 1942 self."pytest-runner"
1902 1943 self."pytest-profiling"
1903 1944 self."pytest-timeout"
1904 1945 self."gprof2dot"
1905 1946 self."mock"
1906 1947 self."cov-core"
1907 1948 self."coverage"
1908 1949 self."webtest"
1909 1950 self."beautifulsoup4"
1910 1951 ];
1911 1952 src = ./.;
1912 1953 meta = {
1913 1954 license = [ { fullName = "Affero GNU General Public License v3 or later (AGPLv3+)"; } { fullName = "AGPLv3, and Commercial License"; } ];
1914 1955 };
1915 1956 };
1916 1957 "rhodecode-tools" = super.buildPythonPackage {
1917 1958 name = "rhodecode-tools-1.4.0";
1918 1959 doCheck = false;
1919 1960 propagatedBuildInputs = [
1920 1961 self."click"
1921 1962 self."future"
1922 1963 self."six"
1923 1964 self."mako"
1924 1965 self."markupsafe"
1925 1966 self."requests"
1926 1967 self."urllib3"
1927 1968 self."whoosh"
1928 1969 self."elasticsearch"
1929 1970 self."elasticsearch-dsl"
1930 1971 self."elasticsearch2"
1931 1972 self."elasticsearch1-dsl"
1932 1973 ];
1933 1974 src = fetchurl {
1934 1975 url = "https://code.rhodecode.com/rhodecode-tools-ce/artifacts/download/0-ed54e749-2ef5-4bc7-ae7f-7900e3c2aa15.tar.gz?sha256=76f024bad3a1e55fdb3d64f13f5b77ff21a12fee699918de2110fe21effd5a3a";
1935 1976 sha256 = "0fjszppj3zhh47g1i6b9xqps28gzfxdkzwb47pdmzrd1sfx29w3n";
1936 1977 };
1937 1978 meta = {
1938 1979 license = [ { fullName = "Apache 2.0 and Proprietary"; } ];
1939 1980 };
1940 1981 };
1941 1982 "routes" = super.buildPythonPackage {
1942 1983 name = "routes-2.4.1";
1943 1984 doCheck = false;
1944 1985 propagatedBuildInputs = [
1945 1986 self."six"
1946 1987 self."repoze.lru"
1947 1988 ];
1948 1989 src = fetchurl {
1949 1990 url = "https://files.pythonhosted.org/packages/33/38/ea827837e68d9c7dde4cff7ec122a93c319f0effc08ce92a17095576603f/Routes-2.4.1.tar.gz";
1950 1991 sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
1951 1992 };
1952 1993 meta = {
1953 1994 license = [ pkgs.lib.licenses.mit ];
1954 1995 };
1955 1996 };
1956 1997 "scandir" = super.buildPythonPackage {
1957 1998 name = "scandir-1.10.0";
1958 1999 doCheck = false;
1959 2000 src = fetchurl {
1960 2001 url = "https://files.pythonhosted.org/packages/df/f5/9c052db7bd54d0cbf1bc0bb6554362bba1012d03e5888950a4f5c5dadc4e/scandir-1.10.0.tar.gz";
1961 2002 sha256 = "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd";
1962 2003 };
1963 2004 meta = {
1964 2005 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
1965 2006 };
1966 2007 };
1967 2008 "setproctitle" = super.buildPythonPackage {
1968 2009 name = "setproctitle-1.1.10";
1969 2010 doCheck = false;
1970 2011 src = fetchurl {
1971 2012 url = "https://files.pythonhosted.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3/setproctitle-1.1.10.tar.gz";
1972 2013 sha256 = "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2";
1973 2014 };
1974 2015 meta = {
1975 2016 license = [ pkgs.lib.licenses.bsdOriginal ];
1976 2017 };
1977 2018 };
1978 2019 "setuptools" = super.buildPythonPackage {
1979 2020 name = "setuptools-44.1.0";
1980 2021 doCheck = false;
1981 2022 src = fetchurl {
1982 2023 url = "https://files.pythonhosted.org/packages/ed/7b/bbf89ca71e722b7f9464ebffe4b5ee20a9e5c9a555a56e2d3914bb9119a6/setuptools-44.1.0.zip";
1983 2024 sha256 = "1jja896zvd1ppccnjbhkgagxbwchgq6vfamp6qn1hvywq6q9cjkr";
1984 2025 };
1985 2026 meta = {
1986 2027 license = [ pkgs.lib.licenses.mit ];
1987 2028 };
1988 2029 };
1989 2030 "simplegeneric" = super.buildPythonPackage {
1990 2031 name = "simplegeneric-0.8.1";
1991 2032 doCheck = false;
1992 2033 src = fetchurl {
1993 2034 url = "https://files.pythonhosted.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip";
1994 2035 sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw";
1995 2036 };
1996 2037 meta = {
1997 2038 license = [ pkgs.lib.licenses.zpl21 ];
1998 2039 };
1999 2040 };
2000 2041 "simplejson" = super.buildPythonPackage {
2001 2042 name = "simplejson-3.16.0";
2002 2043 doCheck = false;
2003 2044 src = fetchurl {
2004 2045 url = "https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz";
2005 2046 sha256 = "19cws1syk8jzq2pw43878dv6fjkb0ifvjpx0i9aajix6kc9jkwxi";
2006 2047 };
2007 2048 meta = {
2008 2049 license = [ { fullName = "Academic Free License (AFL)"; } pkgs.lib.licenses.mit ];
2009 2050 };
2010 2051 };
2011 2052 "six" = super.buildPythonPackage {
2012 2053 name = "six-1.11.0";
2013 2054 doCheck = false;
2014 2055 src = fetchurl {
2015 2056 url = "https://files.pythonhosted.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
2016 2057 sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h";
2017 2058 };
2018 2059 meta = {
2019 2060 license = [ pkgs.lib.licenses.mit ];
2020 2061 };
2021 2062 };
2022 2063 "sqlalchemy" = super.buildPythonPackage {
2023 2064 name = "sqlalchemy-1.3.15";
2024 2065 doCheck = false;
2025 2066 src = fetchurl {
2026 2067 url = "https://files.pythonhosted.org/packages/8c/30/4134e726dd5ed13728ff814fa91fc01c447ad8700504653fe99d91fdd34b/SQLAlchemy-1.3.15.tar.gz";
2027 2068 sha256 = "0iglkvymfp35zm5pxy5kzqvcv96kkas0chqdx7xpla86sspa9k64";
2028 2069 };
2029 2070 meta = {
2030 2071 license = [ pkgs.lib.licenses.mit ];
2031 2072 };
2032 2073 };
2033 2074 "sshpubkeys" = super.buildPythonPackage {
2034 2075 name = "sshpubkeys-3.1.0";
2035 2076 doCheck = false;
2036 2077 propagatedBuildInputs = [
2037 2078 self."cryptography"
2038 2079 self."ecdsa"
2039 2080 ];
2040 2081 src = fetchurl {
2041 2082 url = "https://files.pythonhosted.org/packages/00/23/f7508a12007c96861c3da811992f14283d79c819d71a217b3e12d5196649/sshpubkeys-3.1.0.tar.gz";
2042 2083 sha256 = "105g2li04nm1hb15a2y6hm9m9k7fbrkd5l3gy12w3kgcmsf3k25k";
2043 2084 };
2044 2085 meta = {
2045 2086 license = [ pkgs.lib.licenses.bsdOriginal ];
2046 2087 };
2047 2088 };
2048 2089 "subprocess32" = super.buildPythonPackage {
2049 2090 name = "subprocess32-3.5.4";
2050 2091 doCheck = false;
2051 2092 src = fetchurl {
2052 2093 url = "https://files.pythonhosted.org/packages/32/c8/564be4d12629b912ea431f1a50eb8b3b9d00f1a0b1ceff17f266be190007/subprocess32-3.5.4.tar.gz";
2053 2094 sha256 = "17f7mvwx2271s1wrl0qac3wjqqnrqag866zs3qc8v5wp0k43fagb";
2054 2095 };
2055 2096 meta = {
2056 2097 license = [ pkgs.lib.licenses.psfl ];
2057 2098 };
2058 2099 };
2059 2100 "supervisor" = super.buildPythonPackage {
2060 2101 name = "supervisor-4.1.0";
2061 2102 doCheck = false;
2062 2103 src = fetchurl {
2063 2104 url = "https://files.pythonhosted.org/packages/de/87/ee1ad8fa533a4b5f2c7623f4a2b585d3c1947af7bed8e65bc7772274320e/supervisor-4.1.0.tar.gz";
2064 2105 sha256 = "10q36sa1jqljyyyl7cif52akpygl5kmlqq9x91hmx53f8zh6zj1d";
2065 2106 };
2066 2107 meta = {
2067 2108 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2068 2109 };
2069 2110 };
2070 2111 "tempita" = super.buildPythonPackage {
2071 2112 name = "tempita-0.5.2";
2072 2113 doCheck = false;
2073 2114 src = fetchurl {
2074 2115 url = "https://files.pythonhosted.org/packages/56/c8/8ed6eee83dbddf7b0fc64dd5d4454bc05e6ccaafff47991f73f2894d9ff4/Tempita-0.5.2.tar.gz";
2075 2116 sha256 = "177wwq45slfyajd8csy477bmdmzipyw0dm7i85k3akb7m85wzkna";
2076 2117 };
2077 2118 meta = {
2078 2119 license = [ pkgs.lib.licenses.mit ];
2079 2120 };
2080 2121 };
2081 2122 "termcolor" = super.buildPythonPackage {
2082 2123 name = "termcolor-1.1.0";
2083 2124 doCheck = false;
2084 2125 src = fetchurl {
2085 2126 url = "https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz";
2086 2127 sha256 = "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x";
2087 2128 };
2088 2129 meta = {
2089 2130 license = [ pkgs.lib.licenses.mit ];
2090 2131 };
2091 2132 };
2092 2133 "testpath" = super.buildPythonPackage {
2093 2134 name = "testpath-0.4.4";
2094 2135 doCheck = false;
2095 2136 src = fetchurl {
2096 2137 url = "https://files.pythonhosted.org/packages/2c/b3/5d57205e896d8998d77ad12aa42ebce75cd97d8b9a97d00ba078c4c9ffeb/testpath-0.4.4.tar.gz";
2097 2138 sha256 = "0zpcmq22dz79ipvvsfnw1ykpjcaj6xyzy7ws77s5b5ql3hka7q30";
2098 2139 };
2099 2140 meta = {
2100 2141 license = [ ];
2101 2142 };
2102 2143 };
2103 2144 "traitlets" = super.buildPythonPackage {
2104 2145 name = "traitlets-4.3.3";
2105 2146 doCheck = false;
2106 2147 propagatedBuildInputs = [
2107 2148 self."ipython-genutils"
2108 2149 self."six"
2109 2150 self."decorator"
2110 2151 self."enum34"
2111 2152 ];
2112 2153 src = fetchurl {
2113 2154 url = "https://files.pythonhosted.org/packages/75/b0/43deb021bc943f18f07cbe3dac1d681626a48997b7ffa1e7fb14ef922b21/traitlets-4.3.3.tar.gz";
2114 2155 sha256 = "1xsrwgivpkxlbr4dfndfsi098s29yqgswgjc1qqn69yxklvfw8yh";
2115 2156 };
2116 2157 meta = {
2117 2158 license = [ pkgs.lib.licenses.bsdOriginal ];
2118 2159 };
2119 2160 };
2120 2161 "transaction" = super.buildPythonPackage {
2121 2162 name = "transaction-2.4.0";
2122 2163 doCheck = false;
2123 2164 propagatedBuildInputs = [
2124 2165 self."zope.interface"
2125 2166 ];
2126 2167 src = fetchurl {
2127 2168 url = "https://files.pythonhosted.org/packages/9d/7d/0e8af0d059e052b9dcf2bb5a08aad20ae3e238746bdd3f8701a60969b363/transaction-2.4.0.tar.gz";
2128 2169 sha256 = "17wz1y524ca07vr03yddy8dv0gbscs06dbdywmllxv5rc725jq3j";
2129 2170 };
2130 2171 meta = {
2131 2172 license = [ pkgs.lib.licenses.zpl21 ];
2132 2173 };
2133 2174 };
2134 2175 "translationstring" = super.buildPythonPackage {
2135 2176 name = "translationstring-1.3";
2136 2177 doCheck = false;
2137 2178 src = fetchurl {
2138 2179 url = "https://files.pythonhosted.org/packages/5e/eb/bee578cc150b44c653b63f5ebe258b5d0d812ddac12497e5f80fcad5d0b4/translationstring-1.3.tar.gz";
2139 2180 sha256 = "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f";
2140 2181 };
2141 2182 meta = {
2142 2183 license = [ { fullName = "BSD-like (http://repoze.org/license.html)"; } ];
2143 2184 };
2144 2185 };
2145 2186 "tzlocal" = super.buildPythonPackage {
2146 2187 name = "tzlocal-1.5.1";
2147 2188 doCheck = false;
2148 2189 propagatedBuildInputs = [
2149 2190 self."pytz"
2150 2191 ];
2151 2192 src = fetchurl {
2152 2193 url = "https://files.pythonhosted.org/packages/cb/89/e3687d3ed99bc882793f82634e9824e62499fdfdc4b1ae39e211c5b05017/tzlocal-1.5.1.tar.gz";
2153 2194 sha256 = "0kiciwiqx0bv0fbc913idxibc4ygg4cb7f8rcpd9ij2shi4bigjf";
2154 2195 };
2155 2196 meta = {
2156 2197 license = [ pkgs.lib.licenses.mit ];
2157 2198 };
2158 2199 };
2159 2200 "urllib3" = super.buildPythonPackage {
2160 2201 name = "urllib3-1.25.2";
2161 2202 doCheck = false;
2162 2203 src = fetchurl {
2163 2204 url = "https://files.pythonhosted.org/packages/9a/8b/ea6d2beb2da6e331e9857d0a60b79ed4f72dcbc4e2c7f2d2521b0480fda2/urllib3-1.25.2.tar.gz";
2164 2205 sha256 = "1nq2k4pss1ihsjh02r41sqpjpm5rfqkjfysyq7g7n2i1p7c66c55";
2165 2206 };
2166 2207 meta = {
2167 2208 license = [ pkgs.lib.licenses.mit ];
2168 2209 };
2169 2210 };
2170 2211 "urlobject" = super.buildPythonPackage {
2171 2212 name = "urlobject-2.4.3";
2172 2213 doCheck = false;
2173 2214 src = fetchurl {
2174 2215 url = "https://files.pythonhosted.org/packages/e2/b8/1d0a916f4b34c4618846e6da0e4eeaa8fcb4a2f39e006434fe38acb74b34/URLObject-2.4.3.tar.gz";
2175 2216 sha256 = "1ahc8ficzfvr2avln71immfh4ls0zyv6cdaa5xmkdj5rd87f5cj7";
2176 2217 };
2177 2218 meta = {
2178 2219 license = [ pkgs.lib.licenses.publicDomain ];
2179 2220 };
2180 2221 };
2181 2222 "venusian" = super.buildPythonPackage {
2182 2223 name = "venusian-1.2.0";
2183 2224 doCheck = false;
2184 2225 src = fetchurl {
2185 2226 url = "https://files.pythonhosted.org/packages/7e/6f/40a9d43ac77cb51cb62be5b5662d170f43f8037bdc4eab56336c4ca92bb7/venusian-1.2.0.tar.gz";
2186 2227 sha256 = "0ghyx66g8ikx9nx1mnwqvdcqm11i1vlq0hnvwl50s48bp22q5v34";
2187 2228 };
2188 2229 meta = {
2189 2230 license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
2190 2231 };
2191 2232 };
2192 2233 "vine" = super.buildPythonPackage {
2193 2234 name = "vine-1.3.0";
2194 2235 doCheck = false;
2195 2236 src = fetchurl {
2196 2237 url = "https://files.pythonhosted.org/packages/1c/e1/79fb8046e607dd6c2ad05c9b8ebac9d0bd31d086a08f02699e96fc5b3046/vine-1.3.0.tar.gz";
2197 2238 sha256 = "11ydsbhl1vabndc2r979dv61s6j2b0giq6dgvryifvq1m7bycghk";
2198 2239 };
2199 2240 meta = {
2200 2241 license = [ pkgs.lib.licenses.bsdOriginal ];
2201 2242 };
2202 2243 };
2203 2244 "waitress" = super.buildPythonPackage {
2204 2245 name = "waitress-1.3.1";
2205 2246 doCheck = false;
2206 2247 src = fetchurl {
2207 2248 url = "https://files.pythonhosted.org/packages/a6/e6/708da7bba65898e5d759ade8391b1077e49d07be0b0223c39f5be04def56/waitress-1.3.1.tar.gz";
2208 2249 sha256 = "1iysl8ka3l4cdrr0r19fh1cv28q41mwpvgsb81ji7k4shkb0k3i7";
2209 2250 };
2210 2251 meta = {
2211 2252 license = [ pkgs.lib.licenses.zpl21 ];
2212 2253 };
2213 2254 };
2214 2255 "wcwidth" = super.buildPythonPackage {
2215 2256 name = "wcwidth-0.1.9";
2216 2257 doCheck = false;
2217 2258 src = fetchurl {
2218 2259 url = "https://files.pythonhosted.org/packages/25/9d/0acbed6e4a4be4fc99148f275488580968f44ddb5e69b8ceb53fc9df55a0/wcwidth-0.1.9.tar.gz";
2219 2260 sha256 = "1wf5ycjx8s066rdvr0fgz4xds9a8zhs91c4jzxvvymm1c8l8cwzf";
2220 2261 };
2221 2262 meta = {
2222 2263 license = [ pkgs.lib.licenses.mit ];
2223 2264 };
2224 2265 };
2225 2266 "webencodings" = super.buildPythonPackage {
2226 2267 name = "webencodings-0.5.1";
2227 2268 doCheck = false;
2228 2269 src = fetchurl {
2229 2270 url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz";
2230 2271 sha256 = "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk";
2231 2272 };
2232 2273 meta = {
2233 2274 license = [ pkgs.lib.licenses.bsdOriginal ];
2234 2275 };
2235 2276 };
2236 2277 "weberror" = super.buildPythonPackage {
2237 2278 name = "weberror-0.13.1";
2238 2279 doCheck = false;
2239 2280 propagatedBuildInputs = [
2240 2281 self."webob"
2241 2282 self."tempita"
2242 2283 self."pygments"
2243 2284 self."paste"
2244 2285 ];
2245 2286 src = fetchurl {
2246 2287 url = "https://files.pythonhosted.org/packages/07/0a/09ca5eb0fab5c0d17b380026babe81c96ecebb13f2b06c3203432dd7be72/WebError-0.13.1.tar.gz";
2247 2288 sha256 = "0r4qvnf2r92gfnpa1kwygh4j2x6j3axg2i4an6hyxwg2gpaqp7y1";
2248 2289 };
2249 2290 meta = {
2250 2291 license = [ pkgs.lib.licenses.mit ];
2251 2292 };
2252 2293 };
2253 2294 "webhelpers2" = super.buildPythonPackage {
2254 2295 name = "webhelpers2-2.0";
2255 2296 doCheck = false;
2256 2297 propagatedBuildInputs = [
2257 2298 self."markupsafe"
2258 2299 self."six"
2259 2300 ];
2260 2301 src = fetchurl {
2261 2302 url = "https://files.pythonhosted.org/packages/ff/30/56342c6ea522439e3662427c8d7b5e5b390dff4ff2dc92d8afcb8ab68b75/WebHelpers2-2.0.tar.gz";
2262 2303 sha256 = "0aphva1qmxh83n01p53f5fd43m4srzbnfbz5ajvbx9aj2aipwmcs";
2263 2304 };
2264 2305 meta = {
2265 2306 license = [ pkgs.lib.licenses.mit ];
2266 2307 };
2267 2308 };
2268 2309 "webob" = super.buildPythonPackage {
2269 2310 name = "webob-1.8.5";
2270 2311 doCheck = false;
2271 2312 src = fetchurl {
2272 2313 url = "https://files.pythonhosted.org/packages/9d/1a/0c89c070ee2829c934cb6c7082287c822e28236a4fcf90063e6be7c35532/WebOb-1.8.5.tar.gz";
2273 2314 sha256 = "11khpzaxc88q31v25ic330gsf56fwmbdc9b30br8mvp0fmwspah5";
2274 2315 };
2275 2316 meta = {
2276 2317 license = [ pkgs.lib.licenses.mit ];
2277 2318 };
2278 2319 };
2279 2320 "webtest" = super.buildPythonPackage {
2280 2321 name = "webtest-2.0.34";
2281 2322 doCheck = false;
2282 2323 propagatedBuildInputs = [
2283 2324 self."six"
2284 2325 self."webob"
2285 2326 self."waitress"
2286 2327 self."beautifulsoup4"
2287 2328 ];
2288 2329 src = fetchurl {
2289 2330 url = "https://files.pythonhosted.org/packages/2c/74/a0e63feee438735d628631e2b70d82280276a930637ac535479e5fad9427/WebTest-2.0.34.tar.gz";
2290 2331 sha256 = "0x1y2c8z4fmpsny4hbp6ka37si2g10r5r2jwxhvv5mx7g3blq4bi";
2291 2332 };
2292 2333 meta = {
2293 2334 license = [ pkgs.lib.licenses.mit ];
2294 2335 };
2295 2336 };
2296 2337 "whoosh" = super.buildPythonPackage {
2297 2338 name = "whoosh-2.7.4";
2298 2339 doCheck = false;
2299 2340 src = fetchurl {
2300 2341 url = "https://files.pythonhosted.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684/Whoosh-2.7.4.tar.gz";
2301 2342 sha256 = "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw";
2302 2343 };
2303 2344 meta = {
2304 2345 license = [ pkgs.lib.licenses.bsdOriginal pkgs.lib.licenses.bsd2 ];
2305 2346 };
2306 2347 };
2307 2348 "ws4py" = super.buildPythonPackage {
2308 2349 name = "ws4py-0.5.1";
2309 2350 doCheck = false;
2310 2351 src = fetchurl {
2311 2352 url = "https://files.pythonhosted.org/packages/53/20/4019a739b2eefe9282d3822ef6a225250af964b117356971bd55e274193c/ws4py-0.5.1.tar.gz";
2312 2353 sha256 = "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19";
2313 2354 };
2314 2355 meta = {
2315 2356 license = [ pkgs.lib.licenses.bsdOriginal ];
2316 2357 };
2317 2358 };
2318 2359 "wsgiref" = super.buildPythonPackage {
2319 2360 name = "wsgiref-0.1.2";
2320 2361 doCheck = false;
2321 2362 src = fetchurl {
2322 2363 url = "https://files.pythonhosted.org/packages/41/9e/309259ce8dff8c596e8c26df86dbc4e848b9249fd36797fd60be456f03fc/wsgiref-0.1.2.zip";
2323 2364 sha256 = "0y8fyjmpq7vwwm4x732w97qbkw78rjwal5409k04cw4m03411rn7";
2324 2365 };
2325 2366 meta = {
2326 2367 license = [ { fullName = "PSF or ZPL"; } ];
2327 2368 };
2328 2369 };
2329 2370 "zipp" = super.buildPythonPackage {
2330 2371 name = "zipp-1.2.0";
2331 2372 doCheck = false;
2332 2373 propagatedBuildInputs = [
2333 2374 self."contextlib2"
2334 2375 ];
2335 2376 src = fetchurl {
2336 2377 url = "https://files.pythonhosted.org/packages/78/08/d52f0ea643bc1068d6dc98b412f4966a9b63255d20911a23ac3220c033c4/zipp-1.2.0.tar.gz";
2337 2378 sha256 = "1c91lnv1bxjimh8as27hz7bghsjkkbxn1d37xq7in9c82iai0167";
2338 2379 };
2339 2380 meta = {
2340 2381 license = [ pkgs.lib.licenses.mit ];
2341 2382 };
2342 2383 };
2343 2384 "zope.cachedescriptors" = super.buildPythonPackage {
2344 2385 name = "zope.cachedescriptors-4.3.1";
2345 2386 doCheck = false;
2346 2387 propagatedBuildInputs = [
2347 2388 self."setuptools"
2348 2389 ];
2349 2390 src = fetchurl {
2350 2391 url = "https://files.pythonhosted.org/packages/2f/89/ebe1890cc6d3291ebc935558fa764d5fffe571018dbbee200e9db78762cb/zope.cachedescriptors-4.3.1.tar.gz";
2351 2392 sha256 = "0jhr3m5p74c6r7k8iv0005b8bfsialih9d7zl5vx38rf5xq1lk8z";
2352 2393 };
2353 2394 meta = {
2354 2395 license = [ pkgs.lib.licenses.zpl21 ];
2355 2396 };
2356 2397 };
2357 2398 "zope.deprecation" = super.buildPythonPackage {
2358 2399 name = "zope.deprecation-4.4.0";
2359 2400 doCheck = false;
2360 2401 propagatedBuildInputs = [
2361 2402 self."setuptools"
2362 2403 ];
2363 2404 src = fetchurl {
2364 2405 url = "https://files.pythonhosted.org/packages/34/da/46e92d32d545dd067b9436279d84c339e8b16de2ca393d7b892bc1e1e9fd/zope.deprecation-4.4.0.tar.gz";
2365 2406 sha256 = "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d";
2366 2407 };
2367 2408 meta = {
2368 2409 license = [ pkgs.lib.licenses.zpl21 ];
2369 2410 };
2370 2411 };
2371 2412 "zope.event" = super.buildPythonPackage {
2372 2413 name = "zope.event-4.4";
2373 2414 doCheck = false;
2374 2415 propagatedBuildInputs = [
2375 2416 self."setuptools"
2376 2417 ];
2377 2418 src = fetchurl {
2378 2419 url = "https://files.pythonhosted.org/packages/4c/b2/51c0369adcf5be2334280eed230192ab3b03f81f8efda9ddea6f65cc7b32/zope.event-4.4.tar.gz";
2379 2420 sha256 = "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9";
2380 2421 };
2381 2422 meta = {
2382 2423 license = [ pkgs.lib.licenses.zpl21 ];
2383 2424 };
2384 2425 };
2385 2426 "zope.interface" = super.buildPythonPackage {
2386 2427 name = "zope.interface-4.6.0";
2387 2428 doCheck = false;
2388 2429 propagatedBuildInputs = [
2389 2430 self."setuptools"
2390 2431 ];
2391 2432 src = fetchurl {
2392 2433 url = "https://files.pythonhosted.org/packages/4e/d0/c9d16bd5b38de44a20c6dc5d5ed80a49626fafcb3db9f9efdc2a19026db6/zope.interface-4.6.0.tar.gz";
2393 2434 sha256 = "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v";
2394 2435 };
2395 2436 meta = {
2396 2437 license = [ pkgs.lib.licenses.zpl21 ];
2397 2438 };
2398 2439 };
2399 2440
2400 2441 ### Test requirements
2401 2442
2402 2443
2403 2444 }
@@ -1,122 +1,123 b''
1 1 ## dependencies
2 2
3 3 amqp==2.5.2
4 4 babel==1.3
5 5 beaker==1.9.1
6 6 bleach==3.1.3
7 7 celery==4.3.0
8 8 channelstream==0.5.2
9 9 click==7.0
10 10 colander==1.7.0
11 11 # our custom configobj
12 12 https://code.rhodecode.com/upstream/configobj/artifacts/download/0-012de99a-b1e1-4f64-a5c0-07a98a41b324.tar.gz?md5=6a513f51fe04b2c18cf84c1395a7c626#egg=configobj==5.0.6
13 13 cssselect==1.0.3
14 14 cryptography==2.6.1
15 15 decorator==4.1.2
16 16 deform==2.0.8
17 17 docutils==0.16.0
18 18 dogpile.cache==0.9.0
19 19 dogpile.core==0.4.1
20 20 formencode==1.2.4
21 21 future==0.14.3
22 22 futures==3.0.2
23 23 infrae.cache==1.0.1
24 24 iso8601==0.1.12
25 25 itsdangerous==0.24
26 26 kombu==4.6.6
27 27 lxml==4.2.5
28 28 mako==1.1.0
29 29 markdown==2.6.11
30 30 markupsafe==1.1.1
31 31 msgpack-python==0.5.6
32 32 pyotp==2.3.0
33 33 packaging==20.3
34 34 pathlib2==2.3.5
35 35 paste==3.4.0
36 36 pastedeploy==2.1.0
37 37 pastescript==3.2.0
38 38 peppercorn==0.6
39 premailer==3.6.1
39 40 psutil==5.7.0
40 41 py-bcrypt==0.4
41 42 pycurl==7.43.0.3
42 43 pycrypto==2.6.1
43 44 pygments==2.4.2
44 45 pyparsing==2.4.6
45 46 pyramid-debugtoolbar==4.6.1
46 47 pyramid-mako==1.1.0
47 48 pyramid==1.10.4
48 49 pyramid_mailer==0.15.1
49 50 python-dateutil==2.8.1
50 51 python-ldap==3.2.0
51 52 python-memcached==1.59
52 53 python-pam==1.8.4
53 54 python-saml==2.4.2
54 55 pytz==2019.3
55 56 tzlocal==1.5.1
56 57 pyzmq==14.6.0
57 58 py-gfm==0.1.4
58 59 redis==3.4.1
59 60 repoze.lru==0.7
60 61 requests==2.22.0
61 62 routes==2.4.1
62 63 simplejson==3.16.0
63 64 six==1.11.0
64 65 sqlalchemy==1.3.15
65 66 sshpubkeys==3.1.0
66 67 subprocess32==3.5.4
67 68 supervisor==4.1.0
68 69 translationstring==1.3
69 70 urllib3==1.25.2
70 71 urlobject==2.4.3
71 72 venusian==1.2.0
72 73 weberror==0.13.1
73 74 webhelpers2==2.0
74 75 webob==1.8.5
75 76 whoosh==2.7.4
76 77 wsgiref==0.1.2
77 78 zope.cachedescriptors==4.3.1
78 79 zope.deprecation==4.4.0
79 80 zope.event==4.4.0
80 81 zope.interface==4.6.0
81 82
82 83 # DB drivers
83 84 mysql-python==1.2.5
84 85 pymysql==0.8.1
85 86 pysqlite==2.8.3
86 87 psycopg2==2.8.4
87 88
88 89 # IPYTHON RENDERING
89 90 # entrypoints backport, pypi version doesn't support egg installs
90 91 https://code.rhodecode.com/upstream/entrypoints/artifacts/download/0-8e9ee9e4-c4db-409c-b07e-81568fd1832d.tar.gz?md5=3a027b8ff1d257b91fe257de6c43357d#egg=entrypoints==0.2.2.rhodecode-upstream1
91 92 nbconvert==5.3.1
92 93 nbformat==4.4.0
93 94 jupyter-client==5.0.0
94 95 jupyter-core==4.5.0
95 96
96 97 ## cli tools
97 98 alembic==1.4.2
98 99 invoke==0.13.0
99 100 bumpversion==0.5.3
100 101
101 102 ## http servers
102 103 gevent==1.4.0
103 104 greenlet==0.4.15
104 105 gunicorn==19.9.0
105 106 waitress==1.3.1
106 107
107 108 ## debug
108 109 ipdb==0.12.0
109 110 ipython==5.1.0
110 111
111 112 ## rhodecode-tools, special case, use file://PATH.tar.gz#egg=rhodecode-tools==X.Y.Z, to test local version
112 113 https://code.rhodecode.com/rhodecode-tools-ce/artifacts/download/0-ed54e749-2ef5-4bc7-ae7f-7900e3c2aa15.tar.gz?sha256=76f024bad3a1e55fdb3d64f13f5b77ff21a12fee699918de2110fe21effd5a3a#egg=rhodecode-tools==1.4.0
113 114
114 115
115 116 ## appenlight
116 117 appenlight-client==0.6.26
117 118
118 119 ## test related requirements
119 120 -r requirements_test.txt
120 121
121 122 ## uncomment to add the debug libraries
122 123 #-r requirements_debug.txt
@@ -1,365 +1,366 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2012-2019 RhodeCode GmbH
4 4 #
5 5 # This program is free software: you can redistribute it and/or modify
6 6 # it under the terms of the GNU Affero General Public License, version 3
7 7 # (only), as published by the Free Software Foundation.
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 Affero General Public License
15 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16 #
17 17 # This program is dual-licensed. If you wish to learn more about the
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 """
22 22 RhodeCode task modules, containing all task that suppose to be run
23 23 by celery daemon
24 24 """
25 25
26 26 import os
27 27 import time
28 28
29 29 from pyramid import compat
30 30 from pyramid_mailer.mailer import Mailer
31 31 from pyramid_mailer.message import Message
32 32
33 33 import rhodecode
34 34 from rhodecode.lib import audit_logger
35 35 from rhodecode.lib.celerylib import get_logger, async_task, RequestContextTask
36 36 from rhodecode.lib.hooks_base import log_create_repository
37 37 from rhodecode.lib.utils2 import safe_int, str2bool
38 38 from rhodecode.model.db import (
39 39 Session, IntegrityError, true, Repository, RepoGroup, User)
40 40
41 41
42 42 @async_task(ignore_result=True, base=RequestContextTask)
43 43 def send_email(recipients, subject, body='', html_body='', email_config=None):
44 44 """
45 45 Sends an email with defined parameters from the .ini files.
46 46
47 47 :param recipients: list of recipients, it this is empty the defined email
48 48 address from field 'email_to' is used instead
49 49 :param subject: subject of the mail
50 50 :param body: body of the mail
51 51 :param html_body: html version of body
52 :param email_config: specify custom configuration for mailer
52 53 """
53 54 log = get_logger(send_email)
54 55
55 56 email_config = email_config or rhodecode.CONFIG
56 57
57 58 mail_server = email_config.get('smtp_server') or None
58 59 if mail_server is None:
59 60 log.error("SMTP server information missing. Sending email failed. "
60 61 "Make sure that `smtp_server` variable is configured "
61 62 "inside the .ini file")
62 63 return False
63 64
64 65 subject = "%s %s" % (email_config.get('email_prefix', ''), subject)
65 66
66 67 if recipients:
67 68 if isinstance(recipients, compat.string_types):
68 69 recipients = recipients.split(',')
69 70 else:
70 71 # if recipients are not defined we send to email_config + all admins
71 72 admins = []
72 73 for u in User.query().filter(User.admin == true()).all():
73 74 if u.email:
74 75 admins.append(u.email)
75 76 recipients = []
76 77 config_email = email_config.get('email_to')
77 78 if config_email:
78 79 recipients += [config_email]
79 80 recipients += admins
80 81
81 82 # translate our LEGACY config into the one that pyramid_mailer supports
82 83 email_conf = dict(
83 84 host=mail_server,
84 85 port=email_config.get('smtp_port', 25),
85 86 username=email_config.get('smtp_username'),
86 87 password=email_config.get('smtp_password'),
87 88
88 89 tls=str2bool(email_config.get('smtp_use_tls')),
89 90 ssl=str2bool(email_config.get('smtp_use_ssl')),
90 91
91 92 # SSL key file
92 93 # keyfile='',
93 94
94 95 # SSL certificate file
95 96 # certfile='',
96 97
97 98 # Location of maildir
98 99 # queue_path='',
99 100
100 101 default_sender=email_config.get('app_email_from', 'RhodeCode'),
101 102
102 103 debug=str2bool(email_config.get('smtp_debug')),
103 104 # /usr/sbin/sendmail Sendmail executable
104 105 # sendmail_app='',
105 106
106 107 # {sendmail_app} -t -i -f {sender} Template for sendmail execution
107 108 # sendmail_template='',
108 109 )
109 110
110 111 try:
111 112 mailer = Mailer(**email_conf)
112 113
113 114 message = Message(subject=subject,
114 115 sender=email_conf['default_sender'],
115 116 recipients=recipients,
116 117 body=body, html=html_body)
117 118 mailer.send_immediately(message)
118 119
119 120 except Exception:
120 121 log.exception('Mail sending failed')
121 122 return False
122 123 return True
123 124
124 125
125 126 @async_task(ignore_result=True, base=RequestContextTask)
126 127 def create_repo(form_data, cur_user):
127 128 from rhodecode.model.repo import RepoModel
128 129 from rhodecode.model.user import UserModel
129 130 from rhodecode.model.scm import ScmModel
130 131 from rhodecode.model.settings import SettingsModel
131 132
132 133 log = get_logger(create_repo)
133 134
134 135 cur_user = UserModel()._get_user(cur_user)
135 136 owner = cur_user
136 137
137 138 repo_name = form_data['repo_name']
138 139 repo_name_full = form_data['repo_name_full']
139 140 repo_type = form_data['repo_type']
140 141 description = form_data['repo_description']
141 142 private = form_data['repo_private']
142 143 clone_uri = form_data.get('clone_uri')
143 144 repo_group = safe_int(form_data['repo_group'])
144 145 copy_fork_permissions = form_data.get('copy_permissions')
145 146 copy_group_permissions = form_data.get('repo_copy_permissions')
146 147 fork_of = form_data.get('fork_parent_id')
147 148 state = form_data.get('repo_state', Repository.STATE_PENDING)
148 149
149 150 # repo creation defaults, private and repo_type are filled in form
150 151 defs = SettingsModel().get_default_repo_settings(strip_prefix=True)
151 152 enable_statistics = form_data.get(
152 153 'enable_statistics', defs.get('repo_enable_statistics'))
153 154 enable_locking = form_data.get(
154 155 'enable_locking', defs.get('repo_enable_locking'))
155 156 enable_downloads = form_data.get(
156 157 'enable_downloads', defs.get('repo_enable_downloads'))
157 158
158 159 # set landing rev based on default branches for SCM
159 160 landing_ref, _label = ScmModel.backend_landing_ref(repo_type)
160 161
161 162 try:
162 163 RepoModel()._create_repo(
163 164 repo_name=repo_name_full,
164 165 repo_type=repo_type,
165 166 description=description,
166 167 owner=owner,
167 168 private=private,
168 169 clone_uri=clone_uri,
169 170 repo_group=repo_group,
170 171 landing_rev=landing_ref,
171 172 fork_of=fork_of,
172 173 copy_fork_permissions=copy_fork_permissions,
173 174 copy_group_permissions=copy_group_permissions,
174 175 enable_statistics=enable_statistics,
175 176 enable_locking=enable_locking,
176 177 enable_downloads=enable_downloads,
177 178 state=state
178 179 )
179 180 Session().commit()
180 181
181 182 # now create this repo on Filesystem
182 183 RepoModel()._create_filesystem_repo(
183 184 repo_name=repo_name,
184 185 repo_type=repo_type,
185 186 repo_group=RepoModel()._get_repo_group(repo_group),
186 187 clone_uri=clone_uri,
187 188 )
188 189 repo = Repository.get_by_repo_name(repo_name_full)
189 190 log_create_repository(created_by=owner.username, **repo.get_dict())
190 191
191 192 # update repo commit caches initially
192 193 repo.update_commit_cache()
193 194
194 195 # set new created state
195 196 repo.set_state(Repository.STATE_CREATED)
196 197 repo_id = repo.repo_id
197 198 repo_data = repo.get_api_data()
198 199
199 200 audit_logger.store(
200 201 'repo.create', action_data={'data': repo_data},
201 202 user=cur_user,
202 203 repo=audit_logger.RepoWrap(repo_name=repo_name, repo_id=repo_id))
203 204
204 205 Session().commit()
205 206 except Exception as e:
206 207 log.warning('Exception occurred when creating repository, '
207 208 'doing cleanup...', exc_info=True)
208 209 if isinstance(e, IntegrityError):
209 210 Session().rollback()
210 211
211 212 # rollback things manually !
212 213 repo = Repository.get_by_repo_name(repo_name_full)
213 214 if repo:
214 215 Repository.delete(repo.repo_id)
215 216 Session().commit()
216 217 RepoModel()._delete_filesystem_repo(repo)
217 218 log.info('Cleanup of repo %s finished', repo_name_full)
218 219 raise
219 220
220 221 return True
221 222
222 223
223 224 @async_task(ignore_result=True, base=RequestContextTask)
224 225 def create_repo_fork(form_data, cur_user):
225 226 """
226 227 Creates a fork of repository using internal VCS methods
227 228 """
228 229 from rhodecode.model.repo import RepoModel
229 230 from rhodecode.model.user import UserModel
230 231
231 232 log = get_logger(create_repo_fork)
232 233
233 234 cur_user = UserModel()._get_user(cur_user)
234 235 owner = cur_user
235 236
236 237 repo_name = form_data['repo_name'] # fork in this case
237 238 repo_name_full = form_data['repo_name_full']
238 239 repo_type = form_data['repo_type']
239 240 description = form_data['description']
240 241 private = form_data['private']
241 242 clone_uri = form_data.get('clone_uri')
242 243 repo_group = safe_int(form_data['repo_group'])
243 244 landing_ref = form_data['landing_rev']
244 245 copy_fork_permissions = form_data.get('copy_permissions')
245 246 fork_id = safe_int(form_data.get('fork_parent_id'))
246 247
247 248 try:
248 249 fork_of = RepoModel()._get_repo(fork_id)
249 250 RepoModel()._create_repo(
250 251 repo_name=repo_name_full,
251 252 repo_type=repo_type,
252 253 description=description,
253 254 owner=owner,
254 255 private=private,
255 256 clone_uri=clone_uri,
256 257 repo_group=repo_group,
257 258 landing_rev=landing_ref,
258 259 fork_of=fork_of,
259 260 copy_fork_permissions=copy_fork_permissions
260 261 )
261 262
262 263 Session().commit()
263 264
264 265 base_path = Repository.base_path()
265 266 source_repo_path = os.path.join(base_path, fork_of.repo_name)
266 267
267 268 # now create this repo on Filesystem
268 269 RepoModel()._create_filesystem_repo(
269 270 repo_name=repo_name,
270 271 repo_type=repo_type,
271 272 repo_group=RepoModel()._get_repo_group(repo_group),
272 273 clone_uri=source_repo_path,
273 274 )
274 275 repo = Repository.get_by_repo_name(repo_name_full)
275 276 log_create_repository(created_by=owner.username, **repo.get_dict())
276 277
277 278 # update repo commit caches initially
278 279 config = repo._config
279 280 config.set('extensions', 'largefiles', '')
280 281 repo.update_commit_cache(config=config)
281 282
282 283 # set new created state
283 284 repo.set_state(Repository.STATE_CREATED)
284 285
285 286 repo_id = repo.repo_id
286 287 repo_data = repo.get_api_data()
287 288 audit_logger.store(
288 289 'repo.fork', action_data={'data': repo_data},
289 290 user=cur_user,
290 291 repo=audit_logger.RepoWrap(repo_name=repo_name, repo_id=repo_id))
291 292
292 293 Session().commit()
293 294 except Exception as e:
294 295 log.warning('Exception occurred when forking repository, '
295 296 'doing cleanup...', exc_info=True)
296 297 if isinstance(e, IntegrityError):
297 298 Session().rollback()
298 299
299 300 # rollback things manually !
300 301 repo = Repository.get_by_repo_name(repo_name_full)
301 302 if repo:
302 303 Repository.delete(repo.repo_id)
303 304 Session().commit()
304 305 RepoModel()._delete_filesystem_repo(repo)
305 306 log.info('Cleanup of repo %s finished', repo_name_full)
306 307 raise
307 308
308 309 return True
309 310
310 311
311 312 @async_task(ignore_result=True)
312 313 def repo_maintenance(repoid):
313 314 from rhodecode.lib import repo_maintenance as repo_maintenance_lib
314 315 log = get_logger(repo_maintenance)
315 316 repo = Repository.get_by_id_or_repo_name(repoid)
316 317 if repo:
317 318 maintenance = repo_maintenance_lib.RepoMaintenance()
318 319 tasks = maintenance.get_tasks_for_repo(repo)
319 320 log.debug('Executing %s tasks on repo `%s`', tasks, repoid)
320 321 executed_types = maintenance.execute(repo)
321 322 log.debug('Got execution results %s', executed_types)
322 323 else:
323 324 log.debug('Repo `%s` not found or without a clone_url', repoid)
324 325
325 326
326 327 @async_task(ignore_result=True)
327 328 def check_for_update():
328 329 from rhodecode.model.update import UpdateModel
329 330 update_url = UpdateModel().get_update_url()
330 331 cur_ver = rhodecode.__version__
331 332
332 333 try:
333 334 data = UpdateModel().get_update_data(update_url)
334 335 latest = data['versions'][0]
335 336 UpdateModel().store_version(latest['version'])
336 337 except Exception:
337 338 pass
338 339
339 340
340 341 @async_task(ignore_result=False)
341 342 def beat_check(*args, **kwargs):
342 343 log = get_logger(beat_check)
343 344 log.info('Got args: %r and kwargs %r', args, kwargs)
344 345 return time.time()
345 346
346 347
347 348 @async_task(ignore_result=True)
348 349 def sync_last_update(*args, **kwargs):
349 350
350 351 skip_repos = kwargs.get('skip_repos')
351 352 if not skip_repos:
352 353 repos = Repository.query() \
353 354 .order_by(Repository.group_id.asc())
354 355
355 356 for repo in repos:
356 357 repo.update_commit_cache()
357 358
358 359 skip_groups = kwargs.get('skip_groups')
359 360 if not skip_groups:
360 361 repo_groups = RepoGroup.query() \
361 362 .filter(RepoGroup.group_parent_id == None)
362 363
363 364 for root_gr in repo_groups:
364 365 for repo_gr in reversed(root_gr.recursive_groups()):
365 366 repo_gr.update_commit_cache()
@@ -1,394 +1,408 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2011-2019 RhodeCode GmbH
4 4 #
5 5 # This program is free software: you can redistribute it and/or modify
6 6 # it under the terms of the GNU Affero General Public License, version 3
7 7 # (only), as published by the Free Software Foundation.
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 Affero General Public License
15 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16 #
17 17 # This program is dual-licensed. If you wish to learn more about the
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21
22 22 """
23 23 Model for notifications
24 24 """
25 25
26 26 import logging
27 27 import traceback
28 28
29 import premailer
29 30 from pyramid.threadlocal import get_current_request
30 31 from sqlalchemy.sql.expression import false, true
31 32
32 33 import rhodecode
33 34 from rhodecode.lib import helpers as h
34 35 from rhodecode.model import BaseModel
35 36 from rhodecode.model.db import Notification, User, UserNotification
36 37 from rhodecode.model.meta import Session
37 38 from rhodecode.translation import TranslationString
38 39
39 40 log = logging.getLogger(__name__)
40 41
41 42
42 43 class NotificationModel(BaseModel):
43 44
44 45 cls = Notification
45 46
46 47 def __get_notification(self, notification):
47 48 if isinstance(notification, Notification):
48 49 return notification
49 50 elif isinstance(notification, (int, long)):
50 51 return Notification.get(notification)
51 52 else:
52 53 if notification:
53 54 raise Exception('notification must be int, long or Instance'
54 55 ' of Notification got %s' % type(notification))
55 56
56 57 def create(
57 58 self, created_by, notification_subject, notification_body,
58 59 notification_type=Notification.TYPE_MESSAGE, recipients=None,
59 60 mention_recipients=None, with_email=True, email_kwargs=None):
60 61 """
61 62
62 63 Creates notification of given type
63 64
64 65 :param created_by: int, str or User instance. User who created this
65 66 notification
66 67 :param notification_subject: subject of notification itself
67 68 :param notification_body: body of notification text
68 69 :param notification_type: type of notification, based on that we
69 70 pick templates
70 71
71 72 :param recipients: list of int, str or User objects, when None
72 73 is given send to all admins
73 74 :param mention_recipients: list of int, str or User objects,
74 75 that were mentioned
75 76 :param with_email: send email with this notification
76 77 :param email_kwargs: dict with arguments to generate email
77 78 """
78 79
79 80 from rhodecode.lib.celerylib import tasks, run_task
80 81
81 82 if recipients and not getattr(recipients, '__iter__', False):
82 83 raise Exception('recipients must be an iterable object')
83 84
84 85 created_by_obj = self._get_user(created_by)
85 86 # default MAIN body if not given
86 87 email_kwargs = email_kwargs or {'body': notification_body}
87 88 mention_recipients = mention_recipients or set()
88 89
89 90 if not created_by_obj:
90 91 raise Exception('unknown user %s' % created_by)
91 92
92 93 if recipients is None:
93 94 # recipients is None means to all admins
94 95 recipients_objs = User.query().filter(User.admin == true()).all()
95 96 log.debug('sending notifications %s to admins: %s',
96 97 notification_type, recipients_objs)
97 98 else:
98 99 recipients_objs = set()
99 100 for u in recipients:
100 101 obj = self._get_user(u)
101 102 if obj:
102 103 recipients_objs.add(obj)
103 104 else: # we didn't find this user, log the error and carry on
104 105 log.error('cannot notify unknown user %r', u)
105 106
106 107 if not recipients_objs:
107 108 raise Exception('no valid recipients specified')
108 109
109 110 log.debug('sending notifications %s to %s',
110 111 notification_type, recipients_objs)
111 112
112 113 # add mentioned users into recipients
113 114 final_recipients = set(recipients_objs).union(mention_recipients)
114 115
115 116 notification = Notification.create(
116 117 created_by=created_by_obj, subject=notification_subject,
117 118 body=notification_body, recipients=final_recipients,
118 119 type_=notification_type
119 120 )
120 121
121 122 if not with_email: # skip sending email, and just create notification
122 123 return notification
123 124
124 125 # don't send email to person who created this comment
125 126 rec_objs = set(recipients_objs).difference({created_by_obj})
126 127
127 128 # now notify all recipients in question
128 129
129 130 for recipient in rec_objs.union(mention_recipients):
130 131 # inject current recipient
131 132 email_kwargs['recipient'] = recipient
132 133 email_kwargs['mention'] = recipient in mention_recipients
133 134 (subject, headers, email_body,
134 135 email_body_plaintext) = EmailNotificationModel().render_email(
135 136 notification_type, **email_kwargs)
136 137
137 138 log.debug(
138 139 'Creating notification email task for user:`%s`', recipient)
139 140 task = run_task(
140 141 tasks.send_email, recipient.email, subject,
141 142 email_body_plaintext, email_body)
142 143 log.debug('Created email task: %s', task)
143 144
144 145 return notification
145 146
146 147 def delete(self, user, notification):
147 148 # we don't want to remove actual notification just the assignment
148 149 try:
149 150 notification = self.__get_notification(notification)
150 151 user = self._get_user(user)
151 152 if notification and user:
152 153 obj = UserNotification.query()\
153 154 .filter(UserNotification.user == user)\
154 155 .filter(UserNotification.notification == notification)\
155 156 .one()
156 157 Session().delete(obj)
157 158 return True
158 159 except Exception:
159 160 log.error(traceback.format_exc())
160 161 raise
161 162
162 163 def get_for_user(self, user, filter_=None):
163 164 """
164 165 Get mentions for given user, filter them if filter dict is given
165 166 """
166 167 user = self._get_user(user)
167 168
168 169 q = UserNotification.query()\
169 170 .filter(UserNotification.user == user)\
170 171 .join((
171 172 Notification, UserNotification.notification_id ==
172 173 Notification.notification_id))
173 174 if filter_ == ['all']:
174 175 q = q # no filter
175 176 elif filter_ == ['unread']:
176 177 q = q.filter(UserNotification.read == false())
177 178 elif filter_:
178 179 q = q.filter(Notification.type_.in_(filter_))
179 180
180 181 return q
181 182
182 183 def mark_read(self, user, notification):
183 184 try:
184 185 notification = self.__get_notification(notification)
185 186 user = self._get_user(user)
186 187 if notification and user:
187 188 obj = UserNotification.query()\
188 189 .filter(UserNotification.user == user)\
189 190 .filter(UserNotification.notification == notification)\
190 191 .one()
191 192 obj.read = True
192 193 Session().add(obj)
193 194 return True
194 195 except Exception:
195 196 log.error(traceback.format_exc())
196 197 raise
197 198
198 199 def mark_all_read_for_user(self, user, filter_=None):
199 200 user = self._get_user(user)
200 201 q = UserNotification.query()\
201 202 .filter(UserNotification.user == user)\
202 203 .filter(UserNotification.read == false())\
203 204 .join((
204 205 Notification, UserNotification.notification_id ==
205 206 Notification.notification_id))
206 207 if filter_ == ['unread']:
207 208 q = q.filter(UserNotification.read == false())
208 209 elif filter_:
209 210 q = q.filter(Notification.type_.in_(filter_))
210 211
211 212 # this is a little inefficient but sqlalchemy doesn't support
212 213 # update on joined tables :(
213 214 for obj in q.all():
214 215 obj.read = True
215 216 Session().add(obj)
216 217
217 218 def get_unread_cnt_for_user(self, user):
218 219 user = self._get_user(user)
219 220 return UserNotification.query()\
220 221 .filter(UserNotification.read == false())\
221 222 .filter(UserNotification.user == user).count()
222 223
223 224 def get_unread_for_user(self, user):
224 225 user = self._get_user(user)
225 226 return [x.notification for x in UserNotification.query()
226 227 .filter(UserNotification.read == false())
227 228 .filter(UserNotification.user == user).all()]
228 229
229 230 def get_user_notification(self, user, notification):
230 231 user = self._get_user(user)
231 232 notification = self.__get_notification(notification)
232 233
233 234 return UserNotification.query()\
234 235 .filter(UserNotification.notification == notification)\
235 236 .filter(UserNotification.user == user).scalar()
236 237
237 238 def make_description(self, notification, translate, show_age=True):
238 239 """
239 240 Creates a human readable description based on properties
240 241 of notification object
241 242 """
242 243 _ = translate
243 244 _map = {
244 245 notification.TYPE_CHANGESET_COMMENT: [
245 246 _('%(user)s commented on commit %(date_or_age)s'),
246 247 _('%(user)s commented on commit at %(date_or_age)s'),
247 248 ],
248 249 notification.TYPE_MESSAGE: [
249 250 _('%(user)s sent message %(date_or_age)s'),
250 251 _('%(user)s sent message at %(date_or_age)s'),
251 252 ],
252 253 notification.TYPE_MENTION: [
253 254 _('%(user)s mentioned you %(date_or_age)s'),
254 255 _('%(user)s mentioned you at %(date_or_age)s'),
255 256 ],
256 257 notification.TYPE_REGISTRATION: [
257 258 _('%(user)s registered in RhodeCode %(date_or_age)s'),
258 259 _('%(user)s registered in RhodeCode at %(date_or_age)s'),
259 260 ],
260 261 notification.TYPE_PULL_REQUEST: [
261 262 _('%(user)s opened new pull request %(date_or_age)s'),
262 263 _('%(user)s opened new pull request at %(date_or_age)s'),
263 264 ],
264 265 notification.TYPE_PULL_REQUEST_UPDATE: [
265 266 _('%(user)s updated pull request %(date_or_age)s'),
266 267 _('%(user)s updated pull request at %(date_or_age)s'),
267 268 ],
268 269 notification.TYPE_PULL_REQUEST_COMMENT: [
269 270 _('%(user)s commented on pull request %(date_or_age)s'),
270 271 _('%(user)s commented on pull request at %(date_or_age)s'),
271 272 ],
272 273 }
273 274
274 275 templates = _map[notification.type_]
275 276
276 277 if show_age:
277 278 template = templates[0]
278 279 date_or_age = h.age(notification.created_on)
279 280 if translate:
280 281 date_or_age = translate(date_or_age)
281 282
282 283 if isinstance(date_or_age, TranslationString):
283 284 date_or_age = date_or_age.interpolate()
284 285
285 286 else:
286 287 template = templates[1]
287 288 date_or_age = h.format_date(notification.created_on)
288 289
289 290 return template % {
290 291 'user': notification.created_by_user.username,
291 292 'date_or_age': date_or_age,
292 293 }
293 294
294 295
295 296 class EmailNotificationModel(BaseModel):
296 297 TYPE_COMMIT_COMMENT = Notification.TYPE_CHANGESET_COMMENT
297 298 TYPE_REGISTRATION = Notification.TYPE_REGISTRATION
298 299 TYPE_PULL_REQUEST = Notification.TYPE_PULL_REQUEST
299 300 TYPE_PULL_REQUEST_COMMENT = Notification.TYPE_PULL_REQUEST_COMMENT
300 301 TYPE_PULL_REQUEST_UPDATE = Notification.TYPE_PULL_REQUEST_UPDATE
301 302 TYPE_MAIN = Notification.TYPE_MESSAGE
302 303
303 304 TYPE_PASSWORD_RESET = 'password_reset'
304 305 TYPE_PASSWORD_RESET_CONFIRMATION = 'password_reset_confirmation'
305 306 TYPE_EMAIL_TEST = 'email_test'
306 307 TYPE_TEST = 'test'
307 308
308 309 email_types = {
309 310 TYPE_MAIN:
310 311 'rhodecode:templates/email_templates/main.mako',
311 312 TYPE_TEST:
312 313 'rhodecode:templates/email_templates/test.mako',
313 314 TYPE_EMAIL_TEST:
314 315 'rhodecode:templates/email_templates/email_test.mako',
315 316 TYPE_REGISTRATION:
316 317 'rhodecode:templates/email_templates/user_registration.mako',
317 318 TYPE_PASSWORD_RESET:
318 319 'rhodecode:templates/email_templates/password_reset.mako',
319 320 TYPE_PASSWORD_RESET_CONFIRMATION:
320 321 'rhodecode:templates/email_templates/password_reset_confirmation.mako',
321 322 TYPE_COMMIT_COMMENT:
322 323 'rhodecode:templates/email_templates/commit_comment.mako',
323 324 TYPE_PULL_REQUEST:
324 325 'rhodecode:templates/email_templates/pull_request_review.mako',
325 326 TYPE_PULL_REQUEST_COMMENT:
326 327 'rhodecode:templates/email_templates/pull_request_comment.mako',
327 328 TYPE_PULL_REQUEST_UPDATE:
328 329 'rhodecode:templates/email_templates/pull_request_update.mako',
329 330 }
330 331
332 premailer_instance = premailer.Premailer(
333 cssutils_logging_level=logging.DEBUG,
334 cssutils_logging_handler=logging.getLogger().handlers[0]
335 if logging.getLogger().handlers else None,
336 )
337
331 338 def __init__(self):
332 339 """
333 340 Example usage::
334 341
335 342 (subject, headers, email_body,
336 343 email_body_plaintext) = EmailNotificationModel().render_email(
337 344 EmailNotificationModel.TYPE_TEST, **email_kwargs)
338 345
339 346 """
340 347 super(EmailNotificationModel, self).__init__()
341 348 self.rhodecode_instance_name = rhodecode.CONFIG.get('rhodecode_title')
342 349
343 350 def _update_kwargs_for_render(self, kwargs):
344 351 """
345 352 Inject params required for Mako rendering
346 353
347 354 :param kwargs:
348 355 """
349 356
350 357 kwargs['rhodecode_instance_name'] = self.rhodecode_instance_name
351 358 kwargs['rhodecode_version'] = rhodecode.__version__
352 359 instance_url = h.route_url('home')
353 360 _kwargs = {
354 361 'instance_url': instance_url,
355 362 'whitespace_filter': self.whitespace_filter
356 363 }
357 364 _kwargs.update(kwargs)
358 365 return _kwargs
359 366
360 367 def whitespace_filter(self, text):
361 368 return text.replace('\n', '').replace('\t', '')
362 369
363 370 def get_renderer(self, type_, request):
364 371 template_name = self.email_types[type_]
365 372 return request.get_partial_renderer(template_name)
366 373
367 374 def render_email(self, type_, **kwargs):
368 375 """
369 376 renders template for email, and returns a tuple of
370 377 (subject, email_headers, email_html_body, email_plaintext_body)
371 378 """
372 379 # translator and helpers inject
373 380 _kwargs = self._update_kwargs_for_render(kwargs)
374 381 request = get_current_request()
375 382 email_template = self.get_renderer(type_, request=request)
376 383
377 384 subject = email_template.render('subject', **_kwargs)
378 385
379 386 try:
380 387 headers = email_template.render('headers', **_kwargs)
381 388 except AttributeError:
382 389 # it's not defined in template, ok we can skip it
383 390 headers = ''
384 391
385 392 try:
386 393 body_plaintext = email_template.render('body_plaintext', **_kwargs)
387 394 except AttributeError:
388 395 # it's not defined in template, ok we can skip it
389 396 body_plaintext = ''
390 397
391 398 # render WHOLE template
392 399 body = email_template.render(None, **_kwargs)
393 400
401 try:
402 # Inline CSS styles and conversion
403 body = self.premailer_instance.transform(body)
404 except Exception:
405 log.exception('Failed to parse body with premailer')
406 pass
407
394 408 return subject, headers, body, body_plaintext
@@ -1,1302 +1,1314 b''
1 1 // Default styles
2 2
3 3 .diff-collapse {
4 4 margin: @padding 0;
5 5 text-align: right;
6 6 }
7 7
8 8 .diff-container {
9 9 margin-bottom: @space;
10 10
11 11 .diffblock {
12 12 margin-bottom: @space;
13 13 }
14 14
15 15 &.hidden {
16 16 display: none;
17 17 overflow: hidden;
18 18 }
19 19 }
20 20
21 21
22 22 div.diffblock .sidebyside {
23 23 background: #ffffff;
24 24 }
25 25
26 26 div.diffblock {
27 27 overflow-x: auto;
28 28 overflow-y: hidden;
29 29 clear: both;
30 30 padding: 0px;
31 31 background: @grey6;
32 32 border: @border-thickness solid @grey5;
33 33 -webkit-border-radius: @border-radius @border-radius 0px 0px;
34 34 border-radius: @border-radius @border-radius 0px 0px;
35 35
36 36
37 37 .comments-number {
38 38 float: right;
39 39 }
40 40
41 41 // BEGIN CODE-HEADER STYLES
42 42
43 43 .code-header {
44 44 background: @grey6;
45 45 padding: 10px 0 10px 0;
46 46 height: auto;
47 47 width: 100%;
48 48
49 49 .hash {
50 50 float: left;
51 51 padding: 2px 0 0 2px;
52 52 }
53 53
54 54 .date {
55 55 float: left;
56 56 text-transform: uppercase;
57 57 padding: 4px 0px 0px 2px;
58 58 }
59 59
60 60 div {
61 61 margin-left: 4px;
62 62 }
63 63
64 64 div.compare_header {
65 65 min-height: 40px;
66 66 margin: 0;
67 67 padding: 0 @padding;
68 68
69 69 .drop-menu {
70 70 float:left;
71 71 display: block;
72 72 margin:0 0 @padding 0;
73 73 }
74 74
75 75 .compare-label {
76 76 float: left;
77 77 clear: both;
78 78 display: inline-block;
79 79 min-width: 5em;
80 80 margin: 0;
81 81 padding: @button-padding @button-padding @button-padding 0;
82 82 font-weight: @text-semibold-weight;
83 83 font-family: @text-semibold;
84 84 }
85 85
86 86 .compare-buttons {
87 87 float: left;
88 88 margin: 0;
89 89 padding: 0 0 @padding;
90 90
91 91 .btn {
92 92 margin: 0 @padding 0 0;
93 93 }
94 94 }
95 95 }
96 96
97 97 }
98 98
99 99 .parents {
100 100 float: left;
101 101 width: 100px;
102 102 font-weight: 400;
103 103 vertical-align: middle;
104 104 padding: 0px 2px 0px 2px;
105 105 background-color: @grey6;
106 106
107 107 #parent_link {
108 108 margin: 00px 2px;
109 109
110 110 &.double {
111 111 margin: 0px 2px;
112 112 }
113 113
114 114 &.disabled{
115 115 margin-right: @padding;
116 116 }
117 117 }
118 118 }
119 119
120 120 .children {
121 121 float: right;
122 122 width: 100px;
123 123 font-weight: 400;
124 124 vertical-align: middle;
125 125 text-align: right;
126 126 padding: 0px 2px 0px 2px;
127 127 background-color: @grey6;
128 128
129 129 #child_link {
130 130 margin: 0px 2px;
131 131
132 132 &.double {
133 133 margin: 0px 2px;
134 134 }
135 135
136 136 &.disabled{
137 137 margin-right: @padding;
138 138 }
139 139 }
140 140 }
141 141
142 142 .changeset_header {
143 143 height: 16px;
144 144
145 145 & > div{
146 146 margin-right: @padding;
147 147 }
148 148 }
149 149
150 150 .changeset_file {
151 151 text-align: left;
152 152 float: left;
153 153 padding: 0;
154 154
155 155 a{
156 156 display: inline-block;
157 157 margin-right: 0.5em;
158 158 }
159 159
160 160 #selected_mode{
161 161 margin-left: 0;
162 162 }
163 163 }
164 164
165 165 .diff-menu-wrapper {
166 166 float: left;
167 167 }
168 168
169 169 .diff-menu {
170 170 position: absolute;
171 171 background: none repeat scroll 0 0 #FFFFFF;
172 172 border-color: #003367 @grey3 @grey3;
173 173 border-right: 1px solid @grey3;
174 174 border-style: solid solid solid;
175 175 border-width: @border-thickness;
176 176 box-shadow: 2px 8px 4px rgba(0, 0, 0, 0.2);
177 177 margin-top: 5px;
178 178 margin-left: 1px;
179 179 }
180 180
181 181 .diff-actions, .editor-actions {
182 182 float: left;
183 183
184 184 input{
185 185 margin: 0 0.5em 0 0;
186 186 }
187 187 }
188 188
189 189 // END CODE-HEADER STYLES
190 190
191 191 // BEGIN CODE-BODY STYLES
192 192
193 193 .code-body {
194 194 padding: 0;
195 195 background-color: #ffffff;
196 196 position: relative;
197 197 max-width: none;
198 198 box-sizing: border-box;
199 199 // TODO: johbo: Parent has overflow: auto, this forces the child here
200 200 // to have the intended size and to scroll. Should be simplified.
201 201 width: 100%;
202 202 overflow-x: auto;
203 203 }
204 204
205 205 pre.raw {
206 206 background: white;
207 207 color: @grey1;
208 208 }
209 209 // END CODE-BODY STYLES
210 210
211 211 }
212 212
213 213
214 214 table.code-difftable {
215 215 border-collapse: collapse;
216 216 width: 99%;
217 217 border-radius: 0px !important;
218 218
219 219 td {
220 220 padding: 0 !important;
221 221 background: none !important;
222 222 border: 0 !important;
223 223 }
224 224
225 225 .context {
226 226 background: none repeat scroll 0 0 #DDE7EF;
227 227 }
228 228
229 229 .add {
230 230 background: none repeat scroll 0 0 #DDFFDD;
231 231
232 232 ins {
233 233 background: none repeat scroll 0 0 #AAFFAA;
234 234 text-decoration: none;
235 235 }
236 236 }
237 237
238 238 .del {
239 239 background: none repeat scroll 0 0 #FFDDDD;
240 240
241 241 del {
242 242 background: none repeat scroll 0 0 #FFAAAA;
243 243 text-decoration: none;
244 244 }
245 245 }
246 246
247 247 /** LINE NUMBERS **/
248 248 .lineno {
249 249 padding-left: 2px !important;
250 250 padding-right: 2px;
251 251 text-align: right;
252 252 width: 32px;
253 253 -moz-user-select: none;
254 254 -webkit-user-select: none;
255 255 border-right: @border-thickness solid @grey5 !important;
256 256 border-left: 0px solid #CCC !important;
257 257 border-top: 0px solid #CCC !important;
258 258 border-bottom: none !important;
259 259
260 260 a {
261 261 &:extend(pre);
262 262 text-align: right;
263 263 padding-right: 2px;
264 264 cursor: pointer;
265 265 display: block;
266 266 width: 32px;
267 267 }
268 268 }
269 269
270 270 .context {
271 271 cursor: auto;
272 272 &:extend(pre);
273 273 }
274 274
275 275 .lineno-inline {
276 276 background: none repeat scroll 0 0 #FFF !important;
277 277 padding-left: 2px;
278 278 padding-right: 2px;
279 279 text-align: right;
280 280 width: 30px;
281 281 -moz-user-select: none;
282 282 -webkit-user-select: none;
283 283 }
284 284
285 285 /** CODE **/
286 286 .code {
287 287 display: block;
288 288 width: 100%;
289 289
290 290 td {
291 291 margin: 0;
292 292 padding: 0;
293 293 }
294 294
295 295 pre {
296 296 margin: 0;
297 297 padding: 0;
298 298 margin-left: .5em;
299 299 }
300 300 }
301 301 }
302 302
303 303
304 304 // Comments
305 305 .comment-selected-hl {
306 306 border-left: 6px solid @comment-highlight-color !important;
307 307 padding-left: 3px !important;
308 308 margin-left: -7px !important;
309 309 }
310 310
311 311 div.comment:target,
312 312 div.comment-outdated:target {
313 313 .comment-selected-hl;
314 314 }
315 315
316 316 //TODO: anderson: can't get an absolute number out of anything, so had to put the
317 317 //current values that might change. But to make it clear I put as a calculation
318 318 @comment-max-width: 1065px;
319 319 @pr-extra-margin: 34px;
320 320 @pr-border-spacing: 4px;
321 321 @pr-comment-width: @comment-max-width - @pr-extra-margin - @pr-border-spacing;
322 322
323 323 // Pull Request
324 324 .cs_files .code-difftable {
325 325 border: @border-thickness solid @grey5; //borders only on PRs
326 326
327 327 .comment-inline-form,
328 328 div.comment {
329 329 width: @pr-comment-width;
330 330 }
331 331 }
332 332
333 333 // Changeset
334 334 .code-difftable {
335 335 .comment-inline-form,
336 336 div.comment {
337 337 width: @comment-max-width;
338 338 }
339 339 }
340 340
341 341 //Style page
342 342 @style-extra-margin: @sidebar-width + (@sidebarpadding * 3) + @padding;
343 343 #style-page .code-difftable{
344 344 .comment-inline-form,
345 345 div.comment {
346 346 width: @comment-max-width - @style-extra-margin;
347 347 }
348 348 }
349 349
350 350 #context-bar > h2 {
351 351 font-size: 20px;
352 352 }
353 353
354 354 #context-bar > h2> a {
355 355 font-size: 20px;
356 356 }
357 357 // end of defaults
358 358
359 359 .file_diff_buttons {
360 360 padding: 0 0 @padding;
361 361
362 362 .drop-menu {
363 363 float: left;
364 364 margin: 0 @padding 0 0;
365 365 }
366 366 .btn {
367 367 margin: 0 @padding 0 0;
368 368 }
369 369 }
370 370
371 371 .code-body.textarea.editor {
372 372 max-width: none;
373 373 padding: 15px;
374 374 }
375 375
376 376 td.injected_diff{
377 377 max-width: 1178px;
378 378 overflow-x: auto;
379 379 overflow-y: hidden;
380 380
381 381 div.diff-container,
382 382 div.diffblock{
383 383 max-width: 100%;
384 384 }
385 385
386 386 div.code-body {
387 387 max-width: 1124px;
388 388 overflow-x: auto;
389 389 overflow-y: hidden;
390 390 padding: 0;
391 391 }
392 392 div.diffblock {
393 393 border: none;
394 394 }
395 395
396 396 &.inline-form {
397 397 width: 99%
398 398 }
399 399 }
400 400
401 401
402 402 table.code-difftable {
403 403 width: 100%;
404 404 }
405 405
406 406 /** PYGMENTS COLORING **/
407 407 div.codeblock {
408 408
409 409 // TODO: johbo: Added interim to get rid of the margin around
410 410 // Select2 widgets. This needs further cleanup.
411 411 overflow: auto;
412 412 padding: 0px;
413 413 border: @border-thickness solid @grey6;
414 414 .border-radius(@border-radius);
415 415
416 416 #remove_gist {
417 417 float: right;
418 418 }
419 419
420 420 .gist_url {
421 421 padding: 0px 0px 35px 0px;
422 422 }
423 423
424 424 .gist-desc {
425 425 clear: both;
426 426 margin: 0 0 10px 0;
427 427 code {
428 428 white-space: pre-line;
429 429 line-height: inherit
430 430 }
431 431 }
432 432
433 433 .author {
434 434 clear: both;
435 435 vertical-align: middle;
436 436 font-weight: @text-bold-weight;
437 437 font-family: @text-bold;
438 438 }
439 439
440 440 .btn-mini {
441 441 float: left;
442 442 margin: 0 5px 0 0;
443 443 }
444 444
445 445 .code-header {
446 446 padding: @padding;
447 447 border-bottom: @border-thickness solid @grey5;
448 448
449 449 .rc-user {
450 450 min-width: 0;
451 451 margin-right: .5em;
452 452 }
453 453
454 454 .stats {
455 455 clear: both;
456 456 margin: 0 0 @padding 0;
457 457 padding: 0;
458 458 .left {
459 459 float: left;
460 460 clear: left;
461 461 max-width: 75%;
462 462 margin: 0 0 @padding 0;
463 463
464 464 &.item {
465 465 margin-right: @padding;
466 466 &.last { border-right: none; }
467 467 }
468 468 }
469 469 .buttons { float: right; }
470 470 .author {
471 471 height: 25px; margin-left: 15px; font-weight: bold;
472 472 }
473 473 }
474 474
475 475 .commit {
476 476 margin: 5px 0 0 26px;
477 477 font-weight: normal;
478 478 white-space: pre-wrap;
479 479 }
480 480 }
481 481
482 482 .message {
483 483 position: relative;
484 484 margin: @padding;
485 485
486 486 .codeblock-label {
487 487 margin: 0 0 1em 0;
488 488 }
489 489 }
490 490
491 491 .code-body {
492 492 padding: 0.8em 1em;
493 493 background-color: #ffffff;
494 494 min-width: 100%;
495 495 box-sizing: border-box;
496 496 // TODO: johbo: Parent has overflow: auto, this forces the child here
497 497 // to have the intended size and to scroll. Should be simplified.
498 498 width: 100%;
499 499 overflow-x: auto;
500 500
501 501 img.rendered-binary {
502 502 height: auto;
503 503 width: 100%;
504 504 }
505 505
506 506 .markdown-block {
507 507 padding: 1em 0;
508 508 }
509 509 }
510 510
511 511 .codeblock-header {
512 512 background: @grey7;
513 513 height: 36px;
514 514 }
515 515
516 516 .path {
517 517 border-bottom: 1px solid @grey6;
518 518 padding: .65em 1em;
519 519 height: 18px;
520 520 }
521 521 }
522 522
523 523 .code-highlighttable,
524 524 div.codeblock {
525 525
526 526 &.readme {
527 527 background-color: white;
528 528 }
529 529
530 530 .markdown-block table {
531 531 border-collapse: collapse;
532 532
533 533 th,
534 534 td {
535 535 padding: .5em;
536 536 border: @border-thickness solid @border-default-color;
537 537 }
538 538 }
539 539
540 540 table {
541 541 border: 0px;
542 542 margin: 0;
543 543 letter-spacing: normal;
544 544
545 545
546 546 td {
547 547 border: 0px;
548 548 vertical-align: top;
549 549 }
550 550 }
551 551 }
552 552
553 553 div.codeblock .code-header .search-path { padding: 0 0 0 10px; }
554 554 div.search-code-body {
555 555 background-color: #ffffff; padding: 5px 0 5px 10px;
556 556 pre {
557 557 .match { background-color: #faffa6;}
558 558 .break { display: block; width: 100%; background-color: #DDE7EF; color: #747474; }
559 559 }
560 560 .code-highlighttable {
561 561 border-collapse: collapse;
562 562
563 563 tr:hover {
564 564 background: #fafafa;
565 565 }
566 566 td.code {
567 567 padding-left: 10px;
568 568 }
569 569 td.line {
570 570 border-right: 1px solid #ccc !important;
571 571 padding-right: 10px;
572 572 text-align: right;
573 573 font-family: @text-monospace;
574 574 span {
575 575 white-space: pre-wrap;
576 576 color: #666666;
577 577 }
578 578 }
579 579 }
580 580 }
581 581
582 582 div.annotatediv { margin-left: 2px; margin-right: 4px; }
583 583 .code-highlight {
584 584 margin: 0; padding: 0; border-left: @border-thickness solid @grey5;
585 585 pre, .linenodiv pre { padding: 0 5px; margin: 0; }
586 586 pre div:target {background-color: @comment-highlight-color !important;}
587 587 }
588 588
589 589 .linenos a { text-decoration: none; }
590 590
591 591 .CodeMirror-selected { background: @rchighlightblue; }
592 592 .CodeMirror-focused .CodeMirror-selected { background: @rchighlightblue; }
593 593 .CodeMirror ::selection { background: @rchighlightblue; }
594 594 .CodeMirror ::-moz-selection { background: @rchighlightblue; }
595 595
596 596 .code { display: block; border:0px !important; }
597
597 598 .code-highlight, /* TODO: dan: merge codehilite into code-highlight */
599 .codehilite {
600 /*ElasticMatch is custom RhodeCode TAG*/
601
602 .c-ElasticMatch {
603 background-color: #faffa6;
604 padding: 0.2em;
605 }
606 }
607
598 608 /* This can be generated with `pygmentize -S default -f html` */
609 .code-highlight,
599 610 .codehilite {
611 /*ElasticMatch is custom RhodeCode TAG*/
600 612 .c-ElasticMatch { background-color: #faffa6; padding: 0.2em;}
601 613 .hll { background-color: #ffffcc }
602 614 .c { color: #408080; font-style: italic } /* Comment */
603 615 .err, .codehilite .err { border: none } /* Error */
604 616 .k { color: #008000; font-weight: bold } /* Keyword */
605 617 .o { color: #666666 } /* Operator */
606 618 .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
607 619 .cm { color: #408080; font-style: italic } /* Comment.Multiline */
608 620 .cp { color: #BC7A00 } /* Comment.Preproc */
609 621 .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
610 622 .c1 { color: #408080; font-style: italic } /* Comment.Single */
611 623 .cs { color: #408080; font-style: italic } /* Comment.Special */
612 624 .gd { color: #A00000 } /* Generic.Deleted */
613 625 .ge { font-style: italic } /* Generic.Emph */
614 626 .gr { color: #FF0000 } /* Generic.Error */
615 627 .gh { color: #000080; font-weight: bold } /* Generic.Heading */
616 628 .gi { color: #00A000 } /* Generic.Inserted */
617 629 .go { color: #888888 } /* Generic.Output */
618 630 .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
619 631 .gs { font-weight: bold } /* Generic.Strong */
620 632 .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
621 633 .gt { color: #0044DD } /* Generic.Traceback */
622 634 .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
623 635 .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
624 636 .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
625 637 .kp { color: #008000 } /* Keyword.Pseudo */
626 638 .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
627 639 .kt { color: #B00040 } /* Keyword.Type */
628 640 .m { color: #666666 } /* Literal.Number */
629 641 .s { color: #BA2121 } /* Literal.String */
630 642 .na { color: #7D9029 } /* Name.Attribute */
631 643 .nb { color: #008000 } /* Name.Builtin */
632 644 .nc { color: #0000FF; font-weight: bold } /* Name.Class */
633 645 .no { color: #880000 } /* Name.Constant */
634 646 .nd { color: #AA22FF } /* Name.Decorator */
635 647 .ni { color: #999999; font-weight: bold } /* Name.Entity */
636 648 .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
637 649 .nf { color: #0000FF } /* Name.Function */
638 650 .nl { color: #A0A000 } /* Name.Label */
639 651 .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
640 652 .nt { color: #008000; font-weight: bold } /* Name.Tag */
641 653 .nv { color: #19177C } /* Name.Variable */
642 654 .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
643 655 .w { color: #bbbbbb } /* Text.Whitespace */
644 656 .mb { color: #666666 } /* Literal.Number.Bin */
645 657 .mf { color: #666666 } /* Literal.Number.Float */
646 658 .mh { color: #666666 } /* Literal.Number.Hex */
647 659 .mi { color: #666666 } /* Literal.Number.Integer */
648 660 .mo { color: #666666 } /* Literal.Number.Oct */
649 661 .sa { color: #BA2121 } /* Literal.String.Affix */
650 662 .sb { color: #BA2121 } /* Literal.String.Backtick */
651 663 .sc { color: #BA2121 } /* Literal.String.Char */
652 664 .dl { color: #BA2121 } /* Literal.String.Delimiter */
653 665 .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
654 666 .s2 { color: #BA2121 } /* Literal.String.Double */
655 667 .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
656 668 .sh { color: #BA2121 } /* Literal.String.Heredoc */
657 669 .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
658 670 .sx { color: #008000 } /* Literal.String.Other */
659 671 .sr { color: #BB6688 } /* Literal.String.Regex */
660 672 .s1 { color: #BA2121 } /* Literal.String.Single */
661 673 .ss { color: #19177C } /* Literal.String.Symbol */
662 674 .bp { color: #008000 } /* Name.Builtin.Pseudo */
663 675 .fm { color: #0000FF } /* Name.Function.Magic */
664 676 .vc { color: #19177C } /* Name.Variable.Class */
665 677 .vg { color: #19177C } /* Name.Variable.Global */
666 678 .vi { color: #19177C } /* Name.Variable.Instance */
667 679 .vm { color: #19177C } /* Name.Variable.Magic */
668 680 .il { color: #666666 } /* Literal.Number.Integer.Long */
669 681
670 682 }
671 683
672 684 /* customized pre blocks for markdown/rst */
673 685 pre.literal-block, .codehilite pre{
674 686 padding: @padding;
675 687 border: 1px solid @grey6;
676 688 .border-radius(@border-radius);
677 689 background-color: @grey7;
678 690 }
679 691
680 692
681 693 /* START NEW CODE BLOCK CSS */
682 694
683 695 @cb-line-height: 18px;
684 696 @cb-line-code-padding: 10px;
685 697 @cb-text-padding: 5px;
686 698
687 699 @pill-padding: 2px 7px;
688 700 @pill-padding-small: 2px 2px 1px 2px;
689 701
690 702 input.filediff-collapse-state {
691 703 display: none;
692 704
693 705 &:checked + .filediff { /* file diff is collapsed */
694 706 .cb {
695 707 display: none
696 708 }
697 709 .filediff-collapse-indicator {
698 710 float: left;
699 711 cursor: pointer;
700 712 margin: 1px -5px;
701 713 }
702 714 .filediff-collapse-indicator:before {
703 715 content: '\f105';
704 716 }
705 717
706 718 .filediff-menu {
707 719 display: none;
708 720 }
709 721
710 722 }
711 723
712 724 &+ .filediff { /* file diff is expanded */
713 725
714 726 .filediff-collapse-indicator {
715 727 float: left;
716 728 cursor: pointer;
717 729 margin: 1px -5px;
718 730 }
719 731 .filediff-collapse-indicator:before {
720 732 content: '\f107';
721 733 }
722 734
723 735 .filediff-menu {
724 736 display: block;
725 737 }
726 738
727 739 margin: 10px 0;
728 740 &:nth-child(2) {
729 741 margin: 0;
730 742 }
731 743 }
732 744 }
733 745
734 746 .filediffs .anchor {
735 747 display: block;
736 748 height: 40px;
737 749 margin-top: -40px;
738 750 visibility: hidden;
739 751 }
740 752
741 753 .filediffs .anchor:nth-of-type(1) {
742 754 display: block;
743 755 height: 80px;
744 756 margin-top: -80px;
745 757 visibility: hidden;
746 758 }
747 759
748 760 .cs_files {
749 761 clear: both;
750 762 }
751 763
752 764 #diff-file-sticky{
753 765 will-change: min-height;
754 766 height: 80px;
755 767 }
756 768
757 769 .sidebar__inner{
758 770 transform: translate(0, 0); /* For browsers don't support translate3d. */
759 771 transform: translate3d(0, 0, 0);
760 772 will-change: position, transform;
761 773 height: 65px;
762 774 background-color: #fff;
763 775 padding: 5px 0px;
764 776 }
765 777
766 778 .sidebar__bar {
767 779 padding: 5px 0px 0px 0px
768 780 }
769 781
770 782 .fpath-placeholder {
771 783 clear: both;
772 784 visibility: hidden
773 785 }
774 786
775 787 .is-affixed {
776 788
777 789 .sidebar__inner {
778 790 z-index: 30;
779 791 }
780 792
781 793 .sidebar_inner_shadow {
782 794 position: fixed;
783 795 top: 75px;
784 796 right: -100%;
785 797 left: -100%;
786 798 z-index: 30;
787 799 display: block;
788 800 height: 5px;
789 801 content: "";
790 802 background: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.001)) repeat-x 0 0;
791 803 border-top: 1px solid rgba(0, 0, 0, 0.15);
792 804 }
793 805
794 806 .fpath-placeholder {
795 807 visibility: visible !important;
796 808 }
797 809 }
798 810
799 811 .diffset-menu {
800 812
801 813 }
802 814
803 815 #todo-box {
804 816 clear:both;
805 817 display: none;
806 818 text-align: right
807 819 }
808 820
809 821 .diffset {
810 822 margin: 0px auto;
811 823 .diffset-heading {
812 824 border: 1px solid @grey5;
813 825 margin-bottom: -1px;
814 826 // margin-top: 20px;
815 827 h2 {
816 828 margin: 0;
817 829 line-height: 38px;
818 830 padding-left: 10px;
819 831 }
820 832 .btn {
821 833 margin: 0;
822 834 }
823 835 background: @grey6;
824 836 display: block;
825 837 padding: 5px;
826 838 }
827 839 .diffset-heading-warning {
828 840 background: @alert3-inner;
829 841 border: 1px solid @alert3;
830 842 }
831 843 &.diffset-comments-disabled {
832 844 .cb-comment-box-opener, .comment-inline-form, .cb-comment-add-button {
833 845 display: none !important;
834 846 }
835 847 }
836 848 }
837 849
838 850 .filelist {
839 851 .pill {
840 852 display: block;
841 853 float: left;
842 854 padding: @pill-padding-small;
843 855 }
844 856 }
845 857
846 858 .pill {
847 859 display: block;
848 860 float: left;
849 861 padding: @pill-padding;
850 862 }
851 863
852 864 .pill-group {
853 865 .pill {
854 866 opacity: .8;
855 867 margin-right: 3px;
856 868 font-size: 12px;
857 869 font-weight: normal;
858 870 min-width: 30px;
859 871 text-align: center;
860 872
861 873 &:first-child {
862 874 border-radius: @border-radius 0 0 @border-radius;
863 875 }
864 876 &:last-child {
865 877 border-radius: 0 @border-radius @border-radius 0;
866 878 }
867 879 &:only-child {
868 880 border-radius: @border-radius;
869 881 margin-right: 0;
870 882 }
871 883 }
872 884 }
873 885
874 886 /* Main comments*/
875 887 #comments {
876 888 .comment-selected {
877 889 border-left: 6px solid @comment-highlight-color;
878 890 padding-left: 3px;
879 891 margin-left: -9px;
880 892 }
881 893 }
882 894
883 895 .filediff {
884 896 border: 1px solid @grey5;
885 897
886 898 /* START OVERRIDES */
887 899 .code-highlight {
888 900 border: none; // TODO: remove this border from the global
889 901 // .code-highlight, it doesn't belong there
890 902 }
891 903 label {
892 904 margin: 0; // TODO: remove this margin definition from global label
893 905 // it doesn't belong there - if margin on labels
894 906 // are needed for a form they should be defined
895 907 // in the form's class
896 908 }
897 909 /* END OVERRIDES */
898 910
899 911 * {
900 912 box-sizing: border-box;
901 913 }
902 914 .filediff-anchor {
903 915 visibility: hidden;
904 916 }
905 917 &:hover {
906 918 .filediff-anchor {
907 919 visibility: visible;
908 920 }
909 921 }
910 922
911 923 .filediff-heading {
912 924 cursor: pointer;
913 925 display: block;
914 926 padding: 10px 10px;
915 927 }
916 928 .filediff-heading:after {
917 929 content: "";
918 930 display: table;
919 931 clear: both;
920 932 }
921 933 .filediff-heading:hover {
922 934 background: #e1e9f4 !important;
923 935 }
924 936
925 937 .filediff-menu {
926 938 text-align: right;
927 939 padding: 5px 5px 5px 0px;
928 940 background: @grey7;
929 941
930 942 &> a,
931 943 &> span {
932 944 padding: 1px;
933 945 }
934 946 }
935 947
936 948 .filediff-collapse-button, .filediff-expand-button {
937 949 cursor: pointer;
938 950 }
939 951 .filediff-collapse-button {
940 952 display: inline;
941 953 }
942 954 .filediff-expand-button {
943 955 display: none;
944 956 }
945 957 .filediff-collapsed .filediff-collapse-button {
946 958 display: none;
947 959 }
948 960 .filediff-collapsed .filediff-expand-button {
949 961 display: inline;
950 962 }
951 963
952 964 /**** COMMENTS ****/
953 965
954 966 .filediff-menu {
955 967 .show-comment-button {
956 968 display: none;
957 969 }
958 970 }
959 971 &.hide-comments {
960 972 .inline-comments {
961 973 display: none;
962 974 }
963 975 .filediff-menu {
964 976 .show-comment-button {
965 977 display: inline;
966 978 }
967 979 .hide-comment-button {
968 980 display: none;
969 981 }
970 982 }
971 983 }
972 984
973 985 .hide-line-comments {
974 986 .inline-comments {
975 987 display: none;
976 988 }
977 989 }
978 990
979 991 /**** END COMMENTS ****/
980 992
981 993 }
982 994
983 995
984 996 .op-added {
985 997 color: @alert1;
986 998 }
987 999
988 1000 .op-deleted {
989 1001 color: @alert2;
990 1002 }
991 1003
992 1004 .filediff, .filelist {
993 1005
994 1006 .pill {
995 1007 &[op="name"] {
996 1008 background: none;
997 1009 opacity: 1;
998 1010 color: white;
999 1011 }
1000 1012 &[op="limited"] {
1001 1013 background: @grey2;
1002 1014 color: white;
1003 1015 }
1004 1016 &[op="binary"] {
1005 1017 background: @color7;
1006 1018 color: white;
1007 1019 }
1008 1020 &[op="modified"] {
1009 1021 background: @alert1;
1010 1022 color: white;
1011 1023 }
1012 1024 &[op="renamed"] {
1013 1025 background: @color4;
1014 1026 color: white;
1015 1027 }
1016 1028 &[op="copied"] {
1017 1029 background: @color4;
1018 1030 color: white;
1019 1031 }
1020 1032 &[op="mode"] {
1021 1033 background: @grey3;
1022 1034 color: white;
1023 1035 }
1024 1036 &[op="symlink"] {
1025 1037 background: @color8;
1026 1038 color: white;
1027 1039 }
1028 1040
1029 1041 &[op="added"] { /* added lines */
1030 1042 background: @alert1;
1031 1043 color: white;
1032 1044 }
1033 1045 &[op="deleted"] { /* deleted lines */
1034 1046 background: @alert2;
1035 1047 color: white;
1036 1048 }
1037 1049
1038 1050 &[op="created"] { /* created file */
1039 1051 background: @alert1;
1040 1052 color: white;
1041 1053 }
1042 1054 &[op="removed"] { /* deleted file */
1043 1055 background: @color5;
1044 1056 color: white;
1045 1057 }
1046 1058 }
1047 1059 }
1048 1060
1049 1061
1050 1062 .filediff-outdated {
1051 1063 padding: 8px 0;
1052 1064
1053 1065 .filediff-heading {
1054 1066 opacity: .5;
1055 1067 }
1056 1068 }
1057 1069
1058 1070 table.cb {
1059 1071 width: 100%;
1060 1072 border-collapse: collapse;
1061 1073
1062 1074 .cb-text {
1063 1075 padding: @cb-text-padding;
1064 1076 }
1065 1077 .cb-hunk {
1066 1078 padding: @cb-text-padding;
1067 1079 }
1068 1080 .cb-expand {
1069 1081 display: none;
1070 1082 }
1071 1083 .cb-collapse {
1072 1084 display: inline;
1073 1085 }
1074 1086 &.cb-collapsed {
1075 1087 .cb-line {
1076 1088 display: none;
1077 1089 }
1078 1090 .cb-expand {
1079 1091 display: inline;
1080 1092 }
1081 1093 .cb-collapse {
1082 1094 display: none;
1083 1095 }
1084 1096 .cb-hunk {
1085 1097 display: none;
1086 1098 }
1087 1099 }
1088 1100
1089 1101 /* intentionally general selector since .cb-line-selected must override it
1090 1102 and they both use !important since the td itself may have a random color
1091 1103 generated by annotation blocks. TLDR: if you change it, make sure
1092 1104 annotated block selection and line selection in file view still work */
1093 1105 .cb-line-fresh .cb-content {
1094 1106 background: white !important;
1095 1107 }
1096 1108 .cb-warning {
1097 1109 background: #fff4dd;
1098 1110 }
1099 1111
1100 1112 &.cb-diff-sideside {
1101 1113 td {
1102 1114 &.cb-content {
1103 1115 width: 50%;
1104 1116 }
1105 1117 }
1106 1118 }
1107 1119
1108 1120 tr {
1109 1121 &.cb-annotate {
1110 1122 border-top: 1px solid #eee;
1111 1123 }
1112 1124
1113 1125 &.cb-comment-info {
1114 1126 border-top: 1px solid #eee;
1115 1127 color: rgba(0, 0, 0, 0.3);
1116 1128 background: #edf2f9;
1117 1129
1118 1130 td {
1119 1131
1120 1132 }
1121 1133 }
1122 1134
1123 1135 &.cb-hunk {
1124 1136 font-family: @text-monospace;
1125 1137 color: rgba(0, 0, 0, 0.3);
1126 1138
1127 1139 td {
1128 1140 &:first-child {
1129 1141 background: #edf2f9;
1130 1142 }
1131 1143 &:last-child {
1132 1144 background: #f4f7fb;
1133 1145 }
1134 1146 }
1135 1147 }
1136 1148 }
1137 1149
1138 1150
1139 1151 td {
1140 1152 vertical-align: top;
1141 1153 padding: 0;
1142 1154
1143 1155 &.cb-content {
1144 1156 font-size: 12.35px;
1145 1157
1146 1158 &.cb-line-selected .cb-code {
1147 1159 background: @comment-highlight-color !important;
1148 1160 }
1149 1161
1150 1162 span.cb-code {
1151 1163 line-height: @cb-line-height;
1152 1164 padding-left: @cb-line-code-padding;
1153 1165 padding-right: @cb-line-code-padding;
1154 1166 display: block;
1155 1167 white-space: pre-wrap;
1156 1168 font-family: @text-monospace;
1157 1169 word-break: break-all;
1158 1170 .nonl {
1159 1171 color: @color5;
1160 1172 }
1161 1173 .cb-action {
1162 1174 &:before {
1163 1175 content: " ";
1164 1176 }
1165 1177 &.cb-deletion:before {
1166 1178 content: "- ";
1167 1179 }
1168 1180 &.cb-addition:before {
1169 1181 content: "+ ";
1170 1182 }
1171 1183 }
1172 1184 }
1173 1185
1174 1186 &> button.cb-comment-box-opener {
1175 1187
1176 1188 padding: 2px 2px 1px 3px;
1177 1189 margin-left: -6px;
1178 1190 margin-top: -1px;
1179 1191
1180 1192 border-radius: @border-radius;
1181 1193 position: absolute;
1182 1194 display: none;
1183 1195 }
1184 1196 .cb-comment {
1185 1197 margin-top: 10px;
1186 1198 white-space: normal;
1187 1199 }
1188 1200 }
1189 1201 &:hover {
1190 1202 button.cb-comment-box-opener {
1191 1203 display: block;
1192 1204 }
1193 1205 &+ td button.cb-comment-box-opener {
1194 1206 display: block
1195 1207 }
1196 1208 }
1197 1209
1198 1210 &.cb-data {
1199 1211 text-align: right;
1200 1212 width: 30px;
1201 1213 font-family: @text-monospace;
1202 1214
1203 1215 .icon-comment {
1204 1216 cursor: pointer;
1205 1217 }
1206 1218 &.cb-line-selected {
1207 1219 background: @comment-highlight-color !important;
1208 1220 }
1209 1221 &.cb-line-selected > div {
1210 1222 display: block;
1211 1223 background: @comment-highlight-color !important;
1212 1224 line-height: @cb-line-height;
1213 1225 color: rgba(0, 0, 0, 0.3);
1214 1226 }
1215 1227 }
1216 1228
1217 1229 &.cb-lineno {
1218 1230 padding: 0;
1219 1231 width: 50px;
1220 1232 color: rgba(0, 0, 0, 0.3);
1221 1233 text-align: right;
1222 1234 border-right: 1px solid #eee;
1223 1235 font-family: @text-monospace;
1224 1236 -webkit-user-select: none;
1225 1237 -moz-user-select: none;
1226 1238 user-select: none;
1227 1239
1228 1240 a::before {
1229 1241 content: attr(data-line-no);
1230 1242 }
1231 1243 &.cb-line-selected {
1232 1244 background: @comment-highlight-color !important;
1233 1245 }
1234 1246
1235 1247 a {
1236 1248 display: block;
1237 1249 padding-right: @cb-line-code-padding;
1238 1250 padding-left: @cb-line-code-padding;
1239 1251 line-height: @cb-line-height;
1240 1252 color: rgba(0, 0, 0, 0.3);
1241 1253 }
1242 1254 }
1243 1255
1244 1256 &.cb-empty {
1245 1257 background: @grey7;
1246 1258 }
1247 1259
1248 1260 ins {
1249 1261 color: black;
1250 1262 background: #a6f3a6;
1251 1263 text-decoration: none;
1252 1264 }
1253 1265 del {
1254 1266 color: black;
1255 1267 background: #f8cbcb;
1256 1268 text-decoration: none;
1257 1269 }
1258 1270 &.cb-addition {
1259 1271 background: #ecffec;
1260 1272
1261 1273 &.blob-lineno {
1262 1274 background: #ddffdd;
1263 1275 }
1264 1276 }
1265 1277 &.cb-deletion {
1266 1278 background: #ffecec;
1267 1279
1268 1280 &.blob-lineno {
1269 1281 background: #ffdddd;
1270 1282 }
1271 1283 }
1272 1284 &.cb-annotate-message-spacer {
1273 1285 width:8px;
1274 1286 padding: 1px 0px 0px 3px;
1275 1287 }
1276 1288 &.cb-annotate-info {
1277 1289 width: 320px;
1278 1290 min-width: 320px;
1279 1291 max-width: 320px;
1280 1292 padding: 5px 2px;
1281 1293 font-size: 13px;
1282 1294
1283 1295 .cb-annotate-message {
1284 1296 padding: 2px 0px 0px 0px;
1285 1297 white-space: pre-line;
1286 1298 overflow: hidden;
1287 1299 }
1288 1300 .rc-user {
1289 1301 float: none;
1290 1302 padding: 0 6px 0 17px;
1291 1303 min-width: unset;
1292 1304 min-height: unset;
1293 1305 }
1294 1306 }
1295 1307
1296 1308 &.cb-annotate-revision {
1297 1309 cursor: pointer;
1298 1310 text-align: right;
1299 1311 padding: 1px 3px 0px 3px;
1300 1312 }
1301 1313 }
1302 1314 }
@@ -1,540 +1,603 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 ## helpers
4 4 <%def name="tag_button(text, tag_type=None)">
5 5 <%
6 6 color_scheme = {
7 7 'default': 'border:1px solid #979797;color:#666666;background-color:#f9f9f9',
8 8 'approved': 'border:1px solid #0ac878;color:#0ac878;background-color:#f9f9f9',
9 9 'rejected': 'border:1px solid #e85e4d;color:#e85e4d;background-color:#f9f9f9',
10 10 'under_review': 'border:1px solid #ffc854;color:#ffc854;background-color:#f9f9f9',
11 11 }
12 12
13 13 css_style = ';'.join([
14 14 'display:inline',
15 15 'border-radius:2px',
16 16 'font-size:12px',
17 17 'padding:.2em',
18 18 ])
19 19
20 20 %>
21 21 <pre style="${css_style}; ${color_scheme.get(tag_type, color_scheme['default'])}">${text}</pre>
22 22 </%def>
23 23
24 24 <%def name="status_text(text, tag_type=None)">
25 25 <%
26 26 color_scheme = {
27 27 'default': 'color:#666666',
28 28 'approved': 'color:#0ac878',
29 29 'rejected': 'color:#e85e4d',
30 30 'under_review': 'color:#ffc854',
31 31 }
32 32 %>
33 33 <span style="font-weight:bold;font-size:12px;padding:.2em;${color_scheme.get(tag_type, color_scheme['default'])}">${text}</span>
34 34 </%def>
35 35
36 36 <%def name="gravatar_img(email, size=16)">
37 37 <%
38 38 css_style = ';'.join([
39 39 'padding: 0',
40 40 'margin: -4px 0',
41 41 'border-radius: 50%',
42 42 'box-sizing: content-box',
43 43 'display: inline',
44 44 'line-height: 1em',
45 45 'min-width: 16px',
46 46 'min-height: 16px',
47 47 ])
48 48 %>
49 49
50 50 <img alt="gravatar" style="${css_style}" src="${h.gravatar_url(email, size)}" height="${size}" width="${size}">
51 51 </%def>
52 52
53 53 <%def name="link_css()">\
54 54 <%
55 55 css_style = ';'.join([
56 56 'color:#427cc9',
57 57 'text-decoration:none',
58 58 'cursor:pointer'
59 59 ])
60 60 %>\
61 61 ${css_style}\
62 62 </%def>
63 63
64 64 ## Constants
65 65 <%
66 66 text_regular = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, sans-serif"
67 67 text_monospace = "'Menlo', 'Liberation Mono', 'Consolas', 'DejaVu Sans Mono', 'Ubuntu Mono', 'Courier New', 'andale mono', 'lucida console', monospace"
68 68
69 69 %>
70 70
71 71 ## headers we additionally can set for email
72 72 <%def name="headers()" filter="n,trim"></%def>
73 73
74 74 <%def name="plaintext_footer()" filter="trim">
75 75 ${_('This is a notification from RhodeCode.')} ${instance_url}
76 76 </%def>
77 77
78 78 <%def name="body_plaintext()" filter="n,trim">
79 79 ## this example is not called itself but overridden in each template
80 80 ## the plaintext_footer should be at the bottom of both html and text emails
81 81 ${self.plaintext_footer()}
82 82 </%def>
83 83
84 84 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
85 85 <html xmlns="http://www.w3.org/1999/xhtml">
86 86 <head>
87 87 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
88 88 <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
89 89 <title>${self.subject()}</title>
90 90 <style type="text/css">
91 91 /* Based on The MailChimp Reset INLINE: Yes. */
92 92 #outlook a {
93 93 padding: 0;
94 94 }
95 95
96 96 /* Force Outlook to provide a "view in browser" menu link. */
97 97 body {
98 98 width: 100% !important;
99 99 -webkit-text-size-adjust: 100%;
100 100 -ms-text-size-adjust: 100%;
101 101 margin: 0;
102 102 padding: 0;
103 103 font-family: ${text_regular|n};
104 104 }
105 105
106 106 /* Prevent Webkit and Windows Mobile platforms from changing default font sizes.*/
107 107 .ExternalClass {
108 108 width: 100%;
109 109 }
110 110
111 111 /* Force Hotmail to display emails at full width */
112 112 .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {
113 113 line-height: 100%;
114 114 }
115 115
116 116 /* Forces Hotmail to display normal line spacing. More on that: http://www.emailonacid.com/forum/viewthread/43/ */
117 117 #backgroundTable {
118 118 margin: 0;
119 119 padding: 0;
120 120 line-height: 100% !important;
121 121 }
122 122
123 123 /* End reset */
124 124
125 125 /* defaults for images*/
126 126 img {
127 127 outline: none;
128 128 text-decoration: none;
129 129 -ms-interpolation-mode: bicubic;
130 130 }
131 131
132 132 a img {
133 133 border: none;
134 134 }
135 135
136 136 .image_fix {
137 137 display: block;
138 138 }
139 139
140 140 body {
141 141 line-height: 1.2em;
142 142 }
143 143
144 144 p {
145 145 margin: 0 0 20px;
146 146 }
147 147
148 148 h1, h2, h3, h4, h5, h6 {
149 149 color: #323232 !important;
150 150 }
151 151
152 152 a {
153 153 color: #427cc9;
154 154 text-decoration: none;
155 155 outline: none;
156 156 cursor: pointer;
157 157 }
158 158
159 159 a:focus {
160 160 outline: none;
161 161 }
162 162
163 163 a:hover {
164 164 color: #305b91;
165 165 }
166 166
167 167 h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
168 168 color: #427cc9 !important;
169 169 text-decoration: none !important;
170 170 }
171 171
172 172 h1 a:active, h2 a:active, h3 a:active, h4 a:active, h5 a:active, h6 a:active {
173 173 color: #305b91 !important;
174 174 }
175 175
176 176 h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
177 177 color: #305b91 !important;
178 178 }
179 179
180 180 table {
181 181 font-size: 13px;
182 182 border-collapse: collapse;
183 183 mso-table-lspace: 0pt;
184 184 mso-table-rspace: 0pt;
185 185 }
186 186
187 187 table tr {
188 188 display: table-row;
189 189 vertical-align: inherit;
190 190 border-color: inherit;
191 191 border-spacing: 0 3px;
192 192 }
193 193
194 194 table td {
195 195 padding: .65em 1em .65em 0;
196 196 border-collapse: collapse;
197 197 vertical-align: top;
198 198 text-align: left;
199 199 }
200 200
201 201 input {
202 202 display: inline;
203 203 border-radius: 2px;
204 204 border: 1px solid #dbd9da;
205 205 padding: .5em;
206 206 }
207 207
208 208 input:focus {
209 209 outline: 1px solid #979797
210 210 }
211 211
212 212 code {
213 213 font-family: ${text_monospace|n};
214 214 }
215 215
216 216 @media only screen and (-webkit-min-device-pixel-ratio: 2) {
217 217 /* Put your iPhone 4g styles in here */
218 218 }
219 219
220 220 /* Android targeting */
221 221 @media only screen and (-webkit-device-pixel-ratio:.75){
222 222 /* Put CSS for low density (ldpi) Android layouts in here */
223 223 }
224 224 @media only screen and (-webkit-device-pixel-ratio:1){
225 225 /* Put CSS for medium density (mdpi) Android layouts in here */
226 226 }
227 227 @media only screen and (-webkit-device-pixel-ratio:1.5){
228 228 /* Put CSS for high density (hdpi) Android layouts in here */
229 229 }
230 230 /* end Android targeting */
231 231
232 232 /** MARKDOWN styling **/
233 233 div.markdown-block {
234 234 clear: both;
235 235 overflow: hidden;
236 236 margin: 0;
237 237 padding: 3px 5px 3px
238 238 }
239 239
240 240 div.markdown-block h1, div.markdown-block h2, div.markdown-block h3, div.markdown-block h4, div.markdown-block h5, div.markdown-block h6 {
241 241 border-bottom: none !important;
242 242 padding: 0 !important;
243 243 overflow: visible !important
244 244 }
245 245
246 246 div.markdown-block h1, div.markdown-block h2 {
247 247 border-bottom: 1px #e6e5e5 solid !important
248 248 }
249 249
250 250 div.markdown-block h1 {
251 251 font-size: 32px;
252 252 margin: 15px 0 15px 0 !important;
253 253 padding-bottom: 5px !important
254 254 }
255 255
256 256 div.markdown-block h2 {
257 257 font-size: 24px !important;
258 258 margin: 34px 0 10px 0 !important;
259 259 padding-top: 15px !important;
260 260 padding-bottom: 8px !important
261 261 }
262 262
263 263 div.markdown-block h3 {
264 264 font-size: 18px !important;
265 265 margin: 30px 0 8px 0 !important;
266 266 padding-bottom: 2px !important
267 267 }
268 268
269 269 div.markdown-block h4 {
270 270 font-size: 13px !important;
271 271 margin: 18px 0 3px 0 !important
272 272 }
273 273
274 274 div.markdown-block h5 {
275 275 font-size: 12px !important;
276 276 margin: 15px 0 3px 0 !important
277 277 }
278 278
279 279 div.markdown-block h6 {
280 280 font-size: 12px;
281 281 color: #777777;
282 282 margin: 15px 0 3px 0 !important
283 283 }
284 284
285 285 div.markdown-block hr {
286 286 border: 0;
287 287 color: #e6e5e5;
288 288 background-color: #e6e5e5;
289 289 height: 3px;
290 290 margin-bottom: 13px
291 291 }
292 292
293 293 div.markdown-block ol, div.markdown-block ul, div.markdown-block p, div.markdown-block blockquote, div.markdown-block dl, div.markdown-block li, div.markdown-block table {
294 294 margin: 3px 0 13px 0 !important;
295 295 color: #424242 !important;
296 296 font-size: 13px !important;
297 297 font-family: ${text_regular|n};
298 298 font-weight: normal !important;
299 299 overflow: visible !important;
300 300 line-height: 140% !important
301 301 }
302 302
303 303 div.markdown-block pre {
304 304 margin: 3px 0 13px 0 !important;
305 305 padding: .5em;
306 306 color: #424242 !important;
307 307 font-size: 13px !important;
308 308 overflow: visible !important;
309 309 line-height: 140% !important;
310 310 background-color: #F5F5F5
311 311 }
312 312
313 313 div.markdown-block img {
314 314 border-style: none;
315 315 background-color: #fff;
316 316 padding-right: 20px;
317 317 max-width: 100%
318 318 }
319 319
320 320 div.markdown-block strong {
321 321 font-weight: 600;
322 322 margin: 0
323 323 }
324 324
325 325 div.markdown-block ul.checkbox, div.markdown-block ol.checkbox {
326 326 padding-left: 20px !important;
327 327 margin-top: 0 !important;
328 328 margin-bottom: 18px !important
329 329 }
330 330
331 331 div.markdown-block ul, div.markdown-block ol {
332 332 padding-left: 30px !important;
333 333 margin-top: 0 !important;
334 334 margin-bottom: 18px !important
335 335 }
336 336
337 337 div.markdown-block ul.checkbox li, div.markdown-block ol.checkbox li {
338 338 list-style: none !important;
339 339 margin: 6px !important;
340 340 padding: 0 !important
341 341 }
342 342
343 343 div.markdown-block ul li, div.markdown-block ol li {
344 344 list-style: disc !important;
345 345 margin: 6px !important;
346 346 padding: 0 !important
347 347 }
348 348
349 349 div.markdown-block ol li {
350 350 list-style: decimal !important
351 351 }
352 352
353 353 div.markdown-block #message {
354 354 -webkit-border-radius: 2px;
355 355 -moz-border-radius: 2px;
356 356 border-radius: 2px;
357 357 border: 1px solid #dbd9da;
358 358 display: block;
359 359 width: 100%;
360 360 height: 60px;
361 361 margin: 6px 0
362 362 }
363 363
364 364 div.markdown-block button, div.markdown-block #ws {
365 365 font-size: 13px;
366 366 padding: 4px 6px;
367 367 -webkit-border-radius: 2px;
368 368 -moz-border-radius: 2px;
369 369 border-radius: 2px;
370 370 border: 1px solid #dbd9da;
371 371 background-color: #eeeeee
372 372 }
373 373
374 374 div.markdown-block code, div.markdown-block pre, div.markdown-block #ws, div.markdown-block #message {
375 375 font-family: ${text_monospace|n};
376 376 font-size: 11px;
377 377 -webkit-border-radius: 2px;
378 378 -moz-border-radius: 2px;
379 379 border-radius: 2px;
380 380 background-color: white;
381 381 color: #7E7F7F
382 382 }
383 383
384 384 div.markdown-block code {
385 385 border: 1px solid #eeeeee;
386 386 margin: 0 2px;
387 387 padding: 0 5px
388 388 }
389 389
390 390 div.markdown-block pre {
391 391 border: 1px solid #dbd9da;
392 392 overflow: auto;
393 393 padding: .5em;
394 394 background-color: #F5F5F5
395 395 }
396 396
397 397 div.markdown-block pre > code {
398 398 border: 0;
399 399 margin: 0;
400 400 padding: 0
401 401 }
402 402
403 403 div.rst-block {
404 404 clear: both;
405 405 overflow: hidden;
406 406 margin: 0;
407 407 padding: 3px 5px 3px
408 408 }
409 409
410 410 div.rst-block h2 {
411 411 font-weight: normal
412 412 }
413 413
414 414 div.rst-block h1, div.rst-block h2, div.rst-block h3, div.rst-block h4, div.rst-block h5, div.rst-block h6 {
415 415 border-bottom: 0 !important;
416 416 margin: 0 !important;
417 417 padding: 0 !important;
418 418 line-height: 1.5em !important
419 419 }
420 420
421 421 div.rst-block h1:first-child {
422 422 padding-top: .25em !important
423 423 }
424 424
425 425 div.rst-block h2, div.rst-block h3 {
426 426 margin: 1em 0 !important
427 427 }
428 428
429 429 div.rst-block h1, div.rst-block h2 {
430 430 border-bottom: 1px #e6e5e5 solid !important
431 431 }
432 432
433 433 div.rst-block h2 {
434 434 margin-top: 1.5em !important;
435 435 padding-top: .5em !important
436 436 }
437 437
438 438 div.rst-block p {
439 439 color: black !important;
440 440 margin: 1em 0 !important;
441 441 line-height: 1.5em !important
442 442 }
443 443
444 444 div.rst-block ul {
445 445 list-style: disc !important;
446 446 margin: 1em 0 1em 2em !important;
447 447 clear: both
448 448 }
449 449
450 450 div.rst-block ol {
451 451 list-style: decimal;
452 452 margin: 1em 0 1em 2em !important
453 453 }
454 454
455 455 div.rst-block pre, div.rst-block code {
456 456 font: 12px "Bitstream Vera Sans Mono", "Courier", monospace
457 457 }
458 458
459 459 div.rst-block code {
460 460 font-size: 12px !important;
461 461 background-color: ghostWhite !important;
462 462 color: #444 !important;
463 463 padding: 0 .2em !important;
464 464 border: 1px solid #dedede !important
465 465 }
466 466
467 467 div.rst-block pre code {
468 468 padding: 0 !important;
469 469 font-size: 12px !important;
470 470 background-color: #eee !important;
471 471 border: none !important
472 472 }
473 473
474 474 div.rst-block pre {
475 475 margin: 1em 0;
476 476 padding: 15px;
477 477 border: 1px solid #eeeeee;
478 478 -webkit-border-radius: 2px;
479 479 -moz-border-radius: 2px;
480 480 border-radius: 2px;
481 481 overflow: auto;
482 482 font-size: 12px;
483 483 color: #444;
484 484 background-color: #F5F5F5
485 485 }
486 486
487 /*elasticmatch is custom rhodecode tag*/
488 .codehilite .c-ElasticMatch {
489 background-color: #faffa6;
490 padding: 0.2em;
491 }
492
493 .codehilite .c-ElasticMatch { background-color: #faffa6; padding: 0.2em;}
494 .codehilite .hll { background-color: #ffffcc }
495 .codehilite .c { color: #408080; font-style: italic } /* Comment */
496 .codehilite .err { border: none } /* Error */
497 .codehilite .k { color: #008000; font-weight: bold } /* Keyword */
498 .codehilite .o { color: #666666 } /* Operator */
499 .codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
500 .codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */
501 .codehilite .cp { color: #BC7A00 } /* Comment.Preproc */
502 .codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
503 .codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */
504 .codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */
505 .codehilite .gd { color: #A00000 } /* Generic.Deleted */
506 .codehilite .ge { font-style: italic } /* Generic.Emph */
507 .codehilite .gr { color: #FF0000 } /* Generic.Error */
508 .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
509 .codehilite .gi { color: #00A000 } /* Generic.Inserted */
510 .codehilite .go { color: #888888 } /* Generic.Output */
511 .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
512 .codehilite .gs { font-weight: bold } /* Generic.Strong */
513 .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
514 .codehilite .gt { color: #0044DD } /* Generic.Traceback */
515 .codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
516 .codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
517 .codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
518 .codehilite .kp { color: #008000 } /* Keyword.Pseudo */
519 .codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
520 .codehilite .kt { color: #B00040 } /* Keyword.Type */
521 .codehilite .m { color: #666666 } /* Literal.Number */
522 .codehilite .s { color: #BA2121 } /* Literal.String */
523 .codehilite .na { color: #7D9029 } /* Name.Attribute */
524 .codehilite .nb { color: #008000 } /* Name.Builtin */
525 .codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
526 .codehilite .no { color: #880000 } /* Name.Constant */
527 .codehilite .nd { color: #AA22FF } /* Name.Decorator */
528 .codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */
529 .codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
530 .codehilite .nf { color: #0000FF } /* Name.Function */
531 .codehilite .nl { color: #A0A000 } /* Name.Label */
532 .codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
533 .codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
534 .codehilite .nv { color: #19177C } /* Name.Variable */
535 .codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
536 .codehilite .w { color: #bbbbbb } /* Text.Whitespace */
537 .codehilite .mb { color: #666666 } /* Literal.Number.Bin */
538 .codehilite .mf { color: #666666 } /* Literal.Number.Float */
539 .codehilite .mh { color: #666666 } /* Literal.Number.Hex */
540 .codehilite .mi { color: #666666 } /* Literal.Number.Integer */
541 .codehilite .mo { color: #666666 } /* Literal.Number.Oct */
542 .codehilite .sa { color: #BA2121 } /* Literal.String.Affix */
543 .codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
544 .codehilite .sc { color: #BA2121 } /* Literal.String.Char */
545 .codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */
546 .codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
547 .codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
548 .codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
549 .codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
550 .codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
551 .codehilite .sx { color: #008000 } /* Literal.String.Other */
552 .codehilite .sr { color: #BB6688 } /* Literal.String.Regex */
553 .codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
554 .codehilite .ss { color: #19177C } /* Literal.String.Symbol */
555 .codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
556 .codehilite .fm { color: #0000FF } /* Name.Function.Magic */
557 .codehilite .vc { color: #19177C } /* Name.Variable.Class */
558 .codehilite .vg { color: #19177C } /* Name.Variable.Global */
559 .codehilite .vi { color: #19177C } /* Name.Variable.Instance */
560 .codehilite .vm { color: #19177C } /* Name.Variable.Magic */
561 .codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */
487 562
488 563 </style>
489 564
490 <!-- Targeting Windows Mobile -->
491 <!--[if IEMobile 7]>
492 <style type="text/css">
493
494 </style>
495 <![endif]-->
496
497 <!--[if gte mso 9]>
498 <style>
499 /* Target Outlook 2007 and 2010 */
500 </style>
501 <![endif]-->
502 565 </head>
503 566 <body>
504 567
505 568 <div>
506 569 <!-- Wrapper/Container Table: Use a wrapper table to control the width and the background color consistently of your email. Use this approach instead of setting attributes on the body tag. -->
507 570 <table cellpadding="0" cellspacing="0" border="0" id="backgroundTable" align="left" style="margin:1%;width:97%;padding:0;font-family:${text_regular|n};font-weight:100;border:1px solid #dbd9da">
508 571 <tr>
509 572 <td valign="top" style="padding:0;">
510 573 <table cellpadding="0" cellspacing="0" border="0" align="left" width="100%">
511 574 <tr>
512 575 <td style="width:100%;padding:10px 15px;background-color:#202020" valign="top">
513 576 <a style="color:#eeeeee;text-decoration:none;" href="${instance_url}">
514 577 ${_('RhodeCode')}
515 578 % if rhodecode_instance_name:
516 579 - ${rhodecode_instance_name}
517 580 % endif
518 581 </a>
519 582 </td>
520 583 </tr>
521 584 <tr>
522 585 <td style="padding:15px;" valign="top">${self.body()}</td>
523 586 </tr>
524 587 </table>
525 588 </td>
526 589 </tr>
527 590 </table>
528 591 <!-- End of wrapper table -->
529 592 </div>
530 593
531 594 <div style="width:100%; clear: both; height: 1px">&nbsp;</div>
532 595
533 596 <div style="margin-left:1%;font-weight:100;font-size:11px;color:#666666;text-decoration:none;font-family:${text_monospace};">
534 597 ${_('This is a notification from RhodeCode.')}
535 598 <a style="font-weight:100;font-size:11px;color:#666666;text-decoration:none;font-family:${text_monospace};" href="${instance_url}">
536 599 ${instance_url}
537 600 </a>
538 601 </div>
539 602 </body>
540 603 </html>
General Comments 0
You need to be logged in to leave comments. Login now